从正儿八经准备面试到拿到满意offer,不算上等正式offer的时间,大概一个多月。最后拿到bigo、百度、字节的offer,腾讯到hr面(后面选择去别的厂就主动放弃了)。本文是一篇夹杂了面试题&新手跳槽感悟的面经,只想看面试题可以直接看「部分面试题」。
太长不看
整段经历下来,我认为值得参考的有三点:
- 定一个目标/ddl,倒排时间push自己准备
- 可以任何文字记录形式(图谱、文档)整理自己的知识面,面试过程也要更新这份图谱
- 如果在职,时间安排上可能需要取舍,保证工作上的需求不delay
为什么跳槽
其实这是一个问自己也是即将被面试官问的问题,而且要想好怎么回答。有原因才有动力,有动力才会努力。
接下来就要想清楚,什么时候离开的问题了。我建议是有明确的目标更好些,大概是工作忙,如果不够坚定的话很容易拖着拖着时间就那么过去了。比如我实际有跳槽想法是6月中旬,因为忙一直没行动,真正意义上开始准备要到7月底去了。后面真正开始面试后,我觉得其实整个节奏是可以掌控的。
我给自己的目标是9月底离职,算上一个月交接时间,倒推就是8月底拿到offer。
有了目标后就可以行动了,第一次跳槽hh,写点小经验⬇️
分析自己的面板
其实就是自己的简历了,只不过这个自我分析的过程,是没有装饰过的,更多要看到自己的不足。长处是什么,如何在面试过程中体现出来。
- 学校专业:还可以
- 工作经验:9个月实习+1年阿里
- 偏纯前端,react。几乎没有服务端经验
- 算法:leetcode medium,而且平时没有经常刷,理论上需要找下手感
- 业务:to C,电商
攻击面板看起来还是不错的,至少简历关还是有信心可以过。但自己也有心虚的地方,偏前端,算法有一段时间没刷,加上平时的工作主要是电商的导购营销,其实和我投递的大多数岗位,业务差别很大。
准备
毕竟两年没有面试了,一开始没敢直接投BAT,就先去看了下vivo、tplink、大疆等公司,但是发现基本都要3-5年以上工作经验。平时因为忙,7月底有一些空,一激动直接0准备面了shopee——这是我整个面试中最差的一场,整个人非常紧张,说话的时候有些表述,讲的不够专业,就是懂那个意思但是表达不好,这样也给面试官留下了不太好的印象。果不其然一面就挂了。面完后把题目扫了一遍,说实话shopee的难度不高,比较基础,可以说是我这次跳槽期间面过的最简单的一面。
一年前端经验的面试其实还是比较基础的,当然大佬除外。。。面完shopee后我感觉还是准备下,至少找下状态。
下面是我自己的面试准备啦~也许不适合每个人
知识面
大概花了1-2天理了一个脑图,梳理了可能问到的知识点,当然随着面试的过程,可以不断补充。梳理完之后对自己的整体基础有初步感观。时间关系并没有全盘过一遍,何况还要分点时间刷算法。
下面是我自己的图谱,写的少的不代表不问or不是重点;实际面的过程发现有很多东西没问到,比如webassembly、cdn。
算法
没有技巧,熟能生巧= =
算法是我比较头疼的东西,因为没时间刷题目,至少刷个200题常见题目是不太现实的。。。这方面没有太多经验,我只找了自己比较生疏的题目重新练习了下,大概40道,主要是字符串、动规、图的bfs。有些题目就吃饭时候看看思路,就没有coding。
刷题选leetcode就够了,社招不像校招要写出完整的输入输出,能把方法写出来就可以了。刷题我习惯用c++,后面面试的时候用javascript直接写了好几个int,面试官问你这个int是什么鬼...如果coding有惯性的话,还是保持自己的coding习惯吧。
至于选什么题目,其实leetcode上就有很多经典题目,比如动态规划,就有打家劫舍经典3连。在掘金、知乎都能找到这些经典题集。
另一种途径是看别人的刷题集合,不过不一定match自己,推荐两个公众号(非广告,非本人公众号)
- 五分钟学算法
- ACM算法日常
时间安排
本章节不适用于7、8点下班的打工人。
平时工作很忙,需求都写不完了,老板还天天问我优化做了没有,哪来时间面试——我的做法也许不是最佳,就是放慢了工作中,不影响业务但是可能影响自己绩效的部分,技术上的建设。假如之前是每周有8小时去造轮子or做优化,那现在就只剩下1小时。为什么还剩下一小时,总不能老大问你进度的时候,说我啥都没干吧[doge]
事实上我也稍微挑了下时间,618之后双十一之前,搞过电商的应该明白这段中间没什么特别大的节日。。。
然后就是,利用起碎片化的时间:
- 吃饭可以看算法题,看思路
- 通勤,长距离打车/公共交通,短距离选小电驴/自行车,散步半小时回家这种可以节省起来
- 周末保持良好作息(并没有),适当放松
另外有个朋友,分享过一种还不错的准备方法,就是模拟面试,或者说模拟面试提问。具体做法是A向B抛出问题,B口述回答就可以了,地点随意,出门路上都可以;题目数量无要求,目的是利用起碎片时间。习惯在一种比较轻松的环境回答问题,真正面试也许更好进入状态。比较适合有一起准备面试的小伙伴,校招生。
加分项
如果有时间,可以准备下自己非常有把握的几个点,面试过程中如果有机会聊到,可以给自己加不少分。这个建议我更多是给校招生,对面试官来说,除非特别拔尖的,面校招生是可以大致分几类,无非就是基础好不好的。同等水平上,如果学校吃亏总归是吃亏,那么只能从技术上,努力突出自己。
部分面试题
为什么说部分呢,因为到后面平均每天一次面试,心累了就懒得记了... 一面基本都是问基础+算法,二面以上会问项目(当然也问算法)。
一面
- eventloop,浏览器和node区别
- GC,新生代老生代
- Webpack 插件原理。和loader区别
- 跨域为什么存在,如何处理跨域
- xss防范(除了常规的,也提了下CSP和SRI)
- 考察new操作符
- 检测页面性能方法
- hash router browser router
- 渲染长度1000的列表优化
- 浏览器缓存
- 平时写过动画吗,怎么实现,有没有优化
- vue的问题(尬,两年前写过,就没有继续问下去)
- react 写key的作用,是变快还是慢了
- 手写array flatten
- rem适配原理
- let var const 区别 const数据可以push元素吗
- 物理像素、逻辑像素。1px实现
- BFC
- 前端监控怎么做?如何监听全局错误?如何捕获Promise错误
二/三面
- 聊到平时排查前端问题,会看请求的traceId,那它是怎么生成的,存在的意义呢
- http如何保持报文完整
- 哈希表底层实现
- 前端CI了解多少
- 聊下项目,如何算首屏时间,做过什么优化。
- 平时用react hook,遇过什么坑
还有其他一些和技术无关的问题,但是技术面/HR面也会问到
- 为什么换工作?这个是必问的。
- 问面试官的问题(我觉得可以好好问下,一般听回答可以感受自己是不是有戏,至少我的直觉还没错过)
- 客观上看你觉得工作一年就换工作是好是坏,你后面的打算呢(当然不会频繁跳槽了,狗头保命)
其他面试细节
- 百度的面试体验是最好的,面试过程直接共享屏幕,用自己习惯的编辑器敲代码。面试时长算比较久的(至少一小时),前两面,每次手撕代码2-3题,会考察编码规范。
- 最早面了cvte(base广州),已经面了两轮技术面+一轮HR面,结果我说如果拿到更理想,比如腾讯,就不会考虑这边。果然把我挂了=。=
广告时间
其实我不喜欢这么标题党就是为了最后这段话:飞书前端深圳招人ing,社招一年起,实习生可转正。
实习生:job.toutiao.com/s/JQeTVbp (内推码:TZDT9S6)
实习生可直接内推,有任何疑问欢迎评论留言~欢迎来做同事,感兴趣的欢迎私下交流~(没有公众号,先贴个人邮箱:x.q.young@qq.com)