今年春节后准备换个坑,面试了一些公司,包括阿里、京东、字节、小米、知乎、58、去哪儿(虽然都挂了,sad),但最后也是拿到了几个offer,最终选择跳进了美团优选的坑里。面试总体用了两周时间,现在给自己做个总结。
常见问题
基础类
- js实现继承的几种方法
- flex是哪几种属性的缩写
- flex如何分配空间
- 重绘和回流的区别
- 跨域的定义及几种解决方案
- 如何实现水平及垂直居中
- 如何实现懒加载
- 几种模块化方法的异同
- 登录方案(session-cookie、token、oAuth2.0第三方认证等)
框架类
- react生命周期
- 高阶组件定义,有几种,有什么作用
- render props定义及作用
- react常用hooks
- useState、useReducer、useRef有什么区别,在什么情况下需要使用useRef
- 自定义hook有什么用
- 你都实现过什么自定义hook
- hooks为什么只能在组件或其他hooks的最外层使用
- setState是同步还是异步,为什么
- class组件的setState和useState的第二个参数有什么区别
- fiber是什么
- react更新流程(初始化、更新两种情况)
开放性问题(就是一个问题你自己可以扩展开讲20分钟以上的那种)
- react和vue的区别
- 性能优化的方法论(如何定位性能问题,如何解决,优化后的成果)
- 从输入url到页面渲染都发生了什么(dns寻址过程、TCP连接三次握手四次挥手、get和post的区别,浏览器渲染页面的具体过程都是常见的追问方向)
- 你的项目有什么亮点
- 你在开发过程中有过什么好的行为,起因是什么,过程如果,结果如何,完成之后与之前相比有什么优势
- 有过项目管理经验吗,管理过程都做了什么
其他
- 使用正则给一个数字每隔三位增加一个逗号(千分位分隔符)
- 如何实现一个大文件分片上传及秒传、断点续传等功能
- 一个微前端的父应用和子应用都采用什么部署方案
- 前端安全问题,会遭受哪几种攻击,如何预防
- 前端高并发如何优化
- 正则
- nginx实现过什么功能(反向代理、负载均衡、访问限制、静态资源优化等)
- node(koa的中间件原理、常用中间件、如何实现路由、如何起服务等)
- typeScript
代码题
基础类
- 手写函数的bind、apply、call方法
- 手写Object.create函数
- 手写防抖、节流函数
- 函数柯里化(实现add(1)(2)(3)(4))
- 各种排序(冒泡、快排、选择、插入排序等)
- 用一个方法实现数组乱序(shuffle)
- 实现一个深拷贝并解决循环引用的问题
- 实现redux中的中间件compose函数
算法类
算法也是最近面试代码题几乎必考的一块,但前端面试算法题普遍是LeetCode简单水平,一般是1-2题,我面过的公司里只有字节出了一道中等难度的题。也没什么具体题目,LeetCode自行刷题即可。
复习思路
- ES6语法,这一块各家多多少少会问一点,写代码题面试官也会在意代码中新语法的使用
- 框架原理,有能力的就读源码,时间不充足的话找找其他大佬的文章
- node、小程序、react native、flutter等视个人知识面决定,有的话就好好准备一下,加分项
- 项目经历一定要好好准备,能清楚项目的基本业务,有何亮点,面试几乎必问
- 准备一份自我介绍。基本信息明确,讲明技术栈可以引导提问方向,突出亮点及擅长的点
- 每一份工作的离职原因,必问,尽量包装一下,比如准备去的公司有什么业务或技术上的亮点,不能说是薪资高或其他个人原因
简历投递渠道
- boss直聘:收到的回复较多
- 拉勾:总感觉不受招聘方重视,我个人只有拉勾的面试是在这个平台上预约到的
- 猎聘:会有大量猎头主动打电话推荐面试,骚扰电话较多,如果大厂都能找到内推的话没有用这个平台的必要,没有的话可以考虑
- 脉脉: 和猎聘类似,不过有很多大厂会在这收简历,通过筛选的话也都有面试机会,骚扰电话会少一些
总结
面试本身就是个不断学习的过程,不论是一些常见但没准备的面试题,或是应用方面未曾注意的细节,都使我在后续的面试中更加从容。每次面试后多做总结,及时回顾,不会的抓紧补上。冲刺大厂的同学注意有些公司有黑名单,面试机会有限,尽量把面试约在后面呢,准备充足再战。每天不宜安排过多面试,实测一天四场面试到后来已经几乎是机械回答问题,大脑停止思考的状态了。
最后祝每位想找工作的同学都能找到心仪的坑位,撒花!!!