前言
博主作为8年经验的前端老鸟, 自2024年8月中旬离职后, 因身体原因休息到国庆后开始准备简历投递找工作, 截止到12月底, 大概投递并沟通了300+次, 实际获得投递机会在50+次, 约到面试机会的大概有7-8家, 主要面试的公司包括希音、信飞、叠纸、丛鑫佰能、霸王茶姬、gate..., 面试经历基本上大公司较难, 小公司较易, 所以想借助掘金做一些简单的分享, 下面是近段时间面试所遇到的一些面试题, 时间较长了, 所以就不对具体的公司作区分, 希望能给找工作的同道们提供一点参考.
一面主要问题:
1. js八股文
- Promise的理解, 以及其静态方法、原型方法的特点分析
- webscoket相关问题, 及其和http协议的区别
- localStorage和sessionStorage的理解, 跨页面通讯时, 这两个API会是什么样的, 监听storage事件会遇到什么样的问题
- 浏览器事件循环机制(讲解一下宏任务和微任务)
- 0.1+0.2精度丢失问题, 解决办法
- http1.0、http1.1、http2.0、http3.0的区别以及各自的特性
- TCP和UDP的区别
- https基本原理, 为什么能做到数据传输安全
- 状态码列举等
- 安全相关的问题: xss, csrf等
- 浏览器缓存相关问题: 强缓存和协商缓存
- prefetch和preload
- script异步加载async、fetch
- jsBridge实现原理
2. react原理部分:
- react中fiber原理
- react中的调度原理以及为什么不使用requestIdleCallback而使用MessageChannel来实现
- react中key的作用, 并通过CRUD的列表来解释key在这个过程都有什么作用, 又会遇到什么样的问题
- react中suspense的实现原理, 并说明16-18版本中suspense都有哪些变化
- react函数式组件生命周期
- react的批处理的理解以及18版本为什么要实现自动批处理
- react中的性能优化
- react和vue的区别, 具体说说差异在哪里, 好与坏的辩论
- React 16,17 ,18,19更新了哪些新特性
- react中的hooks和作用
- useEffect、useLayoutEffect的差异以及使用场景
- react更新原理, 重点解释一下异步更新原理、Concurrent mode原理、引入的原因、带来的好处, 又会引入什么样的问题
3. 微前端部分:
- 微前端项目如何实现一次加载多个子应用的及其保活机制实现方案(qiankun)
- 子应用加载实现原理
- css沙箱隔离实现方案及其原理, 其中你提到了在ConfigProvider中修改prefixCls的一种方案, 这个具体怎么实现的, 是否需要对组件库源码进行重新编译
- js沙箱隔离实现原理(3种沙箱隔离原理分析)
- single-spa的实现原理及其和qiankun的区别
- 你在解释乾坤实现原理的时候提到了import-html-entry, 这个库的实现原理是什么
- 抛开浏览器兼容问题不谈, 如何让你来设计一个微前端框架, 你认为如何设计才是最完美的方案
4. 场景题部分:
- 无限滚动组件实现原理, 如何优化其性能减少重流重绘
- 虚拟列表实现原理, 具体分析虚拟列表的高度临界值计算、虚拟滚动区间划分、缓存和性能优化等
- 还有一些其他的场景问题, 面试官现场出题, 你说出关键步骤
5. 工程化及其他问题:
- webpack中所做的一些优化问题
- MF模块联邦的实现原理, 为什么能实现远程加载其他项目的组件
- webpack和vite的区别, 为什么vite会比webapck更快
- 对AST的理解, 如何使用AST来实现css文件修改前缀的问题, 如何实现es6新特性转es5等
- TS逆变和协变
- TS中工具方法列表和特点分析
- TS中infer的理解
- TS中类型的全局声明与局部声明
- TS中interface和type的区别
- tsconfig中的一些配置问题解释
二面主要问题:
- 谈谈项目中遇到的重难点问题, 项目亮点等
- IM消息排序、去重、消息防丢失, 防止串线、心跳机制、断线重连、ACK机制如何实现...
- 对SSR的理解, 有没有实际项目经验
- 编辑器的实现原理和一些核心事件考察
- 对monorepo项目的理解, 具体分析一下原理和利弊
- electron项目中遇到的重难点问题, 安全机制、数据加密、多账号问题、打包优化、electron项目日志上报和异常处理如何做的、electron项目发布流程、灰度方案和线上故障紧急回滚、IPC通讯、项目中如何调用node实现一些复杂的功能、如何排查内存占用过载及其优化
- 对微前端项目的理解, 实现原理等
近段时间找工作的一些感想
1. 投递阶段
2024年底找工作的感受不是太理想, 现阶段是招聘的公司较少, 岗位也少, 所以能投递的岗位不是太多, boss上基本上都是已读不回, 沟通几百家企业最终能得到回应的可能也就几十家, 这几十家中能给到面试机会的也就几家而已, 而且反馈周期很长, 从沟通-投递简历-约面-终面时间跨度很长
2. 面试阶段
现阶段的面试比较明显的就是八股文较少, 原理会偏多, 结合项目考察你所做的事情和解决问题的能力的场景会比较多, 考察问题的范围比较全面, 不仅仅停留在项目框架上, 对于SSR, BFF等技术一面、二面考察的次数都较多, 所以还是需要有所准备(即使你没有做过这些项目也要有一些应对能力)
3. 面后建议
现阶段即使通过了技术面试, 大家也不要认定就能获取到offer, 因为你的竞争对手同样也很多, 一个岗位会有几百-几千人投递(boss开通会员可以看到这些数据), 而且年底很多时候一个岗位会挂很久, 所以大家需要多投递多面试才有可能会有offer的机会
建议和总结:
如果想要找工作的同学, 建议不要选择在年底出来求职, 也不要裸辞(大环境没有你想的那么好, 骑驴找马才是正道), 面试之前一定要做好复盘和刷题工作, 你想要去目标公司(不想大幅度降薪), 就要做好接受全栈经验的考察, 对于自己所做的项目要有清晰的认知并能接受的住面试官的深入拷问, 对于项目中遇到的一些场景案例也要有所准备, 现在的面试中很喜欢考察具体场景案例分析, 如果想要面试一二线互联网公司, 算法也是必不可少的.