前端面筋---字节一二三面(1.12 hr面)
一面(1.7 3.00 51min)
基础/学习类
- 自我介绍
- JS中异步的概念是什么?
- 为什么JS是单线程还需要事件循环?
- 栈内存和堆内存的差异?
- 为什么数组要存在堆内存而不是栈内存?
- JS中有哪些基本数据类型?
- 函数内部的this含义是什么?
- call、apply、bind的区别?
- TypeScript联合类型和交叉类型的概念?
- 平常怎么学前端的?
浏览器/网络类
- 什么是同源策略?
- 如何实现跨域请求?
- 为什么代理可以绕过同源限制?
- Cookie和Session的定义和差异?
- Cookie是怎么种下的?
- LocalStorage和SessionStorage的区别?
- HTTP强缓存和协商缓存的区别?
- 301和302状态码的区别?
CSS类
- 设备像素和逻辑像素的区别?
- CSS两种盒模型的差异
代码输出/手写类
- 事件循环代码输出顺序题
- React useState闭包陷阱题(点3次count是多少)
- 如何改造代码让延迟1秒能拿到最新count?
- 手写冒泡排序
- 手写函数防抖 框架/工程化类
- CommonJS和ESM的区别?
- 前端路由两种模式及特点?
- Git平常用哪些操作?
项目类
- 项目中最有挑战性的部分是什么?
算法类
- 两数之和
1个小时发二面
二面 (1.8 4.00 1h10min)
项目相关
- 组织树二级节点卡顿问题的业务场景是什么?为什么会有这么复杂的节点?
- 解决方案是自己实现还是用开源库?
- i18n提效工具的key是怎么生成的?为什么取哈希前8位?
- 增量代码还需要跑这个工具吗?
- 为什么要做SSE监控SDK?不能基于Sentry做吗?
- 埋点上报策略是什么?
- 有做限流策略吗?
- 没来得及发送的数据怎么处理?
- 有实现管理端分析能力吗?
性能优化
- 前端做性能优化有哪些手段?
JS基础
- 原型链是怎么指向的?有哪些重要应用场景?
- JS的继承是怎么实现的?
- 事件循环是怎样的流程?
- (代码题)事件循环输出顺序
- ES6相对ES5有哪些重要新特性?
- Promise有哪几种状态?
- Promise有哪些常用方法及使用场景?
- (手写)实现Promise.all
CSS相关
- (手写)用单个div实现滑动开关组件
算法
- (手写)找两个链表的交叉节点
4个小时发三面
三面(1.9 3.00 47min)
基础/学习类
- 自我介绍
- 3月份才接触前端,是什么机缘巧合?
- 接触前端之后是怎么学习的?
项目类
- 讲一下实习期间做的事情
- 除了这个还有其他比较有代表性的项目吗?
- 讲一下你做的类ChatGPT项目是怎么做的?
React原理类
- 讲一下你对Fiber概念的理解
- Fiber内部是怎么实现时间切片的?
- React Diff算法复杂度是什么样的?
- 复杂度是确定的还是会动态变化?
- key是用来做什么的?
- 如果没有设置key,算法复杂度是多少?
AI工具类
- 平常会用什么AI相关的工具,怎么用?
- 如果要进一步提升AI在code方面的效果,你觉得能做什么?
- AI适合做什么,不适合做什么?
手写代码类
- 算法题1: 对象id去重
- 算法题2:判断一棵树是否是另一棵树的子树
1个小时发hr面
总结: 越往后八股越少, 项目和开放场景越多, 三面需要抓住面试官给的自由发挥介绍的空间, 这个感觉和快手二面特别像,开放地去展示自己。
#发面经攒人品#