题库
- 简单的自我介绍与项目经验
- 一道 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 的实现