字节跳动
一面(50 分钟)
- 自我介绍
- 算法:实现 36 进制转换
- https 原理,与 http 区别
- 操作系统中的进程和线程怎么通信
- node 中的 cluster 是怎么开启多线程的,并且一个端口可以被多个进程监听吗
- 实现原生 ajax
- vue-router 源码
- vue 原理(手写代码,实现数据劫持)
- 算法:树的遍历有几种方式,实现下层次遍历
- 算法:判断对称二叉树
二面(40 分钟)
一面后五分钟
- 介绍项目中的难点
var、let、const - 哪些 http 头部
- 怎么与服务端保持连接
- 跨域
- webpack 怎么优化
- 哪些请求方法
- ts 与 js 区别
- ts 用过哪些类型
- type 和 interface 区别
- react 优化
- 算法:合并乱序区间
三面(1 小时)
算法思路,实现
你了解 node 多进程吗
node 进程中怎么通信
node 可以开启多线程吗
算法:孩子分饼干
给定一个正整数数列 a
x
HR面
- 对未来的规划是什么
a.加强对前端技术的基础学习(js+算法),b.发挥专业优势,尝试数据可视化方向
- 印象深刻的项目,难点
- 对字节的了解
字节跳动
实现一个抓包请求
实现一个防抖功能
实现一个图片懒加载
获取一个异步求和函数
字节跳动(Lark)一面
平时怎么提升自己的前端水平
github 上面主要写什么
浏览器渲染机制的理解
性能优化方面的理解
字节跳动(Lark)二面
你觉得最有挑战的系统
整个系统中如何解决各个模块之间关联的问题
测试上线流程是怎样
如何保证在改动过程中不影响别的模块
阐述一下在系统中哪个模块比较复杂
了解整个模块是怎么进行设计的吗
如果一个电商的页面,有很多的商品列表,用户在加载这个页面的时候很慢,你会从哪个方面解决问题
假如用户明确反馈在渲染列表的时候明显卡顿,如何解决
你会如何分析具体的问题出现的位置
阐述一下重绘与重排
什么时候需要重排
有一个页面,可以在后台输入商品内容展示给用户查看,你会怎样进行设计
公共组件你会怎么进行设计
字节(一面)
常用的 http 状态码(101 200 204 301 302 304 307 400 404 500)
301 和 302 的区别(永久/临时)
前端路由如何实现
前端路由刷新404如何处理(404时重定向到index.html)
从前端到后端全链路如何设计一个登录的流程(session 方案、jwt)
什么是跨域,怎样处理
简单请求、复杂请求
浏览器的缓存策略
domain 属性解决跨域,几种domain设置对跨域是否生效
ts泛型做什么的,infer关键字的作用
实现 typescript 的 Paramters、ReturnType
实现 Promise.all
实现一个并发请求控制函数,限制并发数
字节(二面)
jwt 原理
xss和csrf防范
pureComponent 和 Component 区别(前者 shouldComponentUpdate 默认比较 props)
react hook hoc 解决了什么问题
有哪些常用的 hook
项目实现一个中间层的意义(前端全链路日志打通)
setState 同步还是异步
setState 传递对象和函数有什么区别
合成事件是怎样的,有什么好处
事件冒泡和事件捕获的区别,react中的冒泡和捕获(react 都是合成事件,无论是冒泡还是捕获,都对应原生中的冒泡)
手写 bind
实现快排
字节(三面)
graphql 相比 restful 的区别,优缺点
为啥选择了redux-saga作为解决方案(解决异步优雅/提供很多工具函数)。redux的异步中间件方案有哪些,对比。saga对比dva?
graphql的鉴权在哪里做
协程是什么(语言层面实现的并发),Go/nodeJs怎样去实现协程(Go使用go关键字、node可以使用Generator实现、我理解react16的异步渲染也是协程的实现)
react fiber的机制是怎样的
锁机制的作用,node和Go如何处理死锁
Go/node实现并发怎么做
node和Go的优缺点怎样理解
实现一个 useState