Skip to main content

题库

  • 简单的自我介绍与项目经验
  • 一道 setTimeout/Promise 输出顺序问题的题
  • 什么是事件循环
  • async 与 generator 的关系以及实现原理
  • react 和 vue 有什么区别
  • vue 的双向绑定怎么实现的,在 3.0 后呢
  • react 的生命周期是什么
  • react 中的 key 用来做什么
  • 有没有看过 fiber 的代码,原理是什么
  • 什么是 virtual DOM
  • webpack 的原理是什么,loader 和 plugin 的作用是什么
  • 如何使用 webpack 优化体积
  • 网站性能优化有哪些方面
  • 有没有了解过 shell
  • 如何替换一个文件中的内容
  • 对一个文件如何只查看特定行的内容
  • 你们的 node 的服务端应用如何部署
  • docker 部署有什么好处
  • 部署时如何利用服务器的多核
  • 你们有没有对服务端的异常进行监控
  • 你如何看待前端和后端
  • 如何查看一个 node 的服务端应用的内存和 CPU
  • 当服务端的内存发生了 OOM 问题如何排查
  • 如何监控某个进程的内存和 CPU
  • 当一个云主机的内存占用过大,如何找到内存占用最大的进程
  • 数据库索引中为什么要用 Btree
  • 如何优化 SQL
  • 如何监控数据库的慢查询
  • 当一个地址从输入到展示在浏览器中有哪些步骤
  • TCP 的三次握手是什么
  • TCP 为什么要三次握手
  • TCP 与 UDP 的区别是什么,既然 TCP 是可靠的,那它有啥缺点
  • 如何在 linux 中拿到 TCP 的状态
  • TCP 的拥塞控制是怎么做的
  • 什么是 ARP 欺骗
  • 什么是防抖和节流
  • 写一段关于防抖的代码
  • graphql 有什么好处和劣势
  • 你遇到过哪些 OOM 的事例,都是什么问题,以及如何解决的
  • 什么是 serverless,如何看待它的发展
  • 服务端渲染的原理是什么
  • 服务端渲染会遇到哪些问题,与客户端渲染如何取舍
  • 除了服务端渲染,还有哪些做 SEO 的方案
  • react hooks 有什么好处
  • 如何做 tracing
  • 如果给 log 都加上 requestId,应该怎么做
  • async hooks 是用来干嘛的
  • 如何设计一个高并发系统
  • 对数据库做过什么优化
  • 有没有看过 libuv 代码
  • 什么是 IO 多路复用
  • redis 的使用场景有哪些
  • 你们的 qps 是多少
  • 你们业务跑了多少台机器
  • 如果优化你们的 qps
  • 如何做弹性扩容
  • 如何设计一个短网址服务
  • rpc 与 rest 相比有什么优势与劣势
  • 什么是 TCP 粘包
  • 如何设计一个消息队列,要注意什么地方
  • 简单的自我介绍与项目经验
  • 一道算法题
  • 一道 setTimeout/Promise 输出顺序问题的题
  • 什么是事件循环
  • react 中的 key 用来做什么
  • 什么是 virtual DOM
  • 就是虚拟的 DOM,提高渲染的性能,数据与 UI 分离,并且有利于服务器渲染
  • webpack 的原理是什么,loader 和 plugin 的作用是什么
  • ssr 的原理是什么,解决了什么问题
  • renderToString,hydrate;首屏时间与 SEO
  • ssr 会有那些坑
  • cpu/memory 可能爆了,出现异常不好定位调试,带权限接口与非权限接口有可能需要剥离(为了缓存),TTFB 慢了(如果不加缓存,以前可能是骨架屏,现在直接白屏),由于需要起 http 服务工程上也复杂了很多
  • 你如何看待前端和后端
  • 吧啦吧啦吧啦...
  • 有没有了解过 shell
  • 如何替换一个文件中的内容
  • sed;那还有没有其它命令;cut
  • 有没有用过 awk
  • 只能说有了,不过没具体问用法
  • 对一个文件如何只查看特定行的内容
  • 用 head 应该可以吧...(不太确认)
  • 你们的 node 的服务端应用如何部署
  • 然后讲了讲我们 node 部署的历史,从以前的 pm2 到 docker,到 openshift 再到 k8s
  • docker 部署有什么好处
  • docker 的底层原理是什么
  • namespace 和 cgroups,一个隔离环境,一个控制资源配额。多亏我看 docker 的时候多看了一遍简介...
  • 那隔离环境主要隔离什么环境
  • 根据我对 docker 的映像说了网络,memory,进程,volume。回去之后看了看才知道是在问 linux namespcaces 有哪些..
  • 有没有了解过 ufs
  • 没有...回去之后发现这就是 docker 的分层存储,虽然一直知道它是分层存储,但不知道叫 ufs
  • 部署 node 时如何充分利用服务器的多核
  • 比如用 node 的 cluster,用 k8s 也能部分利用多核性能
  • 如果你要读取一个特别大的文件应该如何做
  • 那时候还不知道 stream...于是就说了不停地 seek offset
  • 你们有没有对服务端的异常进行监控
  • 比如用 sentry 监控异常,elk 打日志,prometheus 监控性能并用 alertmanager 报警,再写一个 webhook 到钉钉
  • 那你们在线上出现问题时如何在应用层面监控 cpu 和 memory 的信息
  • 虽然线上出现过问题,,但这个确实不清楚。cpu 和 heapdump
  • 如何查看一个 node 的服务端应用的内存和 CPU
  • ps / pidstat
  • 当服务端的内存发生了 OOM 问题如何排查
  • 比如看 promethues,查看监控的突然高峰,看日志那段时候发生了什么,看有没有提交代码
  • 数据库中什么是 left join 和 right join 有什么区别
  • 数据库索引中为什么要用 Btree
  • 减少与磁盘的 IO 次数
  • 什么是聚簇索引
  • redis 如何做持久化
  • 我还在想持久化好像不太重要,有一次我们线上的 redis 刷了一遍,也仅仅是用户掉线了而已...持久化有两种方案,具体忘了叫啥了。一种是隔一段时间备份数据,另一种是备份命令,按照命令备份数据。回来一查是 RDB 和 AOF
  • 如何实现一个分布式锁
  • set key value EX 60 NX
  • 有没有用过 LUA
  • 并没有,但不能说没有啊。于是说我看过一个关于 rate limit 的库的源码,里边的 redis 就是用的 lua 脚本
  • 当一个地址从输入到展示在浏览器中有哪些步骤
  • 吧啦吧啦吧啦
  • 递归解析的过程是什么样的,什么叫递归 DNS 和权威 DNS
  • (问这么偏...)
  • TCP 为什么是可靠的
  • 因为它有 ACK
  • 那 tpc 和 udp 相比的话,udp 有什么好处,虽然不可靠,但是为什么还有很多基于 udp 的协议
  • 因为 upd 报文小,udp 头部 8 个字节,tcp 头部 20 个字节,而且有些协议也不需要太可靠。面试官看我把报文 header 大小答出来了,然后看了下简历发现我是学网络工程的。其实我网络工程学的也忘的差不多了 (刚开始都能记住 TCP 的六个标志位)
  • 为什么要换工作
  • 以前通过了面试怎么没有来
  • 因为没 hc 了......
  • 你有什么要问的吗
  • js 中 module 的了解
  • 写一个单例模式
  • 跨域方法
  • get 与 post 的区别
  • http 与 tcp 的区别
  • 业务的了解
  • 浏览器的缓存问题
  • vim 的优势是什么
  • react 和 vue 有什么不同
  • IFC
  • BFC
  • 内联元素与块级元素的区别
  • react 单向数据流与传统 MVC,MVP 的区别
  • String.prototype.trim
  • 把短横线字符转化为驼峰式字符
  • 三列布局
  • getComputedStyle
  • N 个数和为 M
  • 你最满意的项目,你觉得有哪些地方做的比较好
  • 自适应的正方形
  • 如何实现一个轮播图
  • 基本数据类型
  • 事件流冒泡和捕获,捕获用在什么地方
  • 跨域和跨域的解决方法
  • 你最满意的项目,你觉得有哪些地方做的比较好
  • setInterval 与 setTimeout 的区别
  • react 和 vue 的区别
  • 跨域和跨域的解决方法
  • http 的状态码有哪些
  • html5 有哪些新的东西
  • localStorage 和 sessionStorage 的区别
  • setInterval 与 setTimeout 的区别
  • webpack 有哪些东西,有哪些 loader 和 plugin
  • 你最满意的项目,你觉得有哪些地方做的比较好
  • 数组去重,就地
  • react 的声明周期,各在里边做些什么操作
  • react 请求发出去时组件已经卸载,fetch 如何取消
  • async 会返回什么,如果发送多个 async,多个 async 预制失败
  • 如何做一些网站的性能优化
  • 如何优化 webpack 体积
  • 简单介绍下 grid layout,与 table 有什么不同
  • 简单介绍下 redux ,它会不会循环
  • 简单介绍一下 CI,写一个脚本还是写一个程序
  • 状态码和方法,101
  • 502 和 504 的区别
  • 事件传播的阶段,以及 addEventListener 的执行顺序,绑定一个函数会执行几次
  • virtual DOM 是什么以及是如何实现的
  • dom diff 是什么
  • get 和 post 请求
  • 如何进行 CI 以及测试的,是否使用 ESLint
  • Accept 头部的作用什么,如果服务器不支持怎么办
  • tcp 如何做拥塞控制
  • 事件代理是什么,如何实现
  • 如何判断一个对象的类型,
  • 如何把一个类数组转化为数组
  • inline,inline-block,block 元素有什么区别,其中 inline-block 元素有哪些,img 是 inline-block 吗
  • position 的取值
  • 四分布局 flex 与 float 有什么区别
  • 移动端一像素边框问题
  • 移动端如何禁止屏幕缩放
  • 移动端如何适配屏幕
  • 移动端如何调试
  • 数组去重问题
  • 如何判断一个 DOM 节点包含另一个 DOM 节点,html5 如何做,兼容性怎么处理
  • 如何筛选出一个祖父节点下的所有指定 class 的元素,html5 如何做,兼容性怎么处理,如何判断一个节点是指定的 class,正则表达式如何提取(漏了 querySelectorAll)
  • 如何提取 path 路径中的文件名,正则表达式如何提取
  • 如何实现模板字符串
  • suggestion 下拉列表如何做,应该使用什么事件,input,keyup, keypress 与 change 有什么不同
  • 301 与 302 的区别
  • 如何实现图片的懒加载
  • 如何使用 canvas 处理图片
  • 从浏览器输入 url 到页面展现的过程
  • csp 是什么,xss 与 csrf 是什么,原理以及预防
  • 如何实现一个 animate.js
  • 如何实现一个模板引擎,并且能处理嵌套数据
  • 如何实现两个函数的继承
  • 好像做不到继承属性,util.inherits 也不继承属性
  • 如何替换一个文件中的内容
  • shell 中如何做循环
  • for in 与 Object.keys 的区别
  • 找出数组中最小的 n 个数
  • bloom filter 是什么
  • Function.prototype.bind 的实现