一年前端面试总结——百度、腾讯、字节、bigo

1,083 阅读8分钟

从正儿八经准备面试到拿到满意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自己,推荐两个公众号(非广告,非本人公众号)

  1. 五分钟学算法
  2. ACM算法日常

时间安排

本章节不适用于7、8点下班的打工人。

平时工作很忙,需求都写不完了,老板还天天问我优化做了没有,哪来时间面试——我的做法也许不是最佳,就是放慢了工作中,不影响业务但是可能影响自己绩效的部分,技术上的建设。假如之前是每周有8小时去造轮子or做优化,那现在就只剩下1小时。为什么还剩下一小时,总不能老大问你进度的时候,说我啥都没干吧[doge]

事实上我也稍微挑了下时间,618之后双十一之前,搞过电商的应该明白这段中间没什么特别大的节日。。。

然后就是,利用起碎片化的时间:

  • 吃饭可以看算法题,看思路
  • 通勤,长距离打车/公共交通,短距离选小电驴/自行车,散步半小时回家这种可以节省起来
  • 周末保持良好作息(并没有),适当放松

另外有个朋友,分享过一种还不错的准备方法,就是模拟面试,或者说模拟面试提问。具体做法是A向B抛出问题,B口述回答就可以了,地点随意,出门路上都可以;题目数量无要求,目的是利用起碎片时间。习惯在一种比较轻松的环境回答问题,真正面试也许更好进入状态。比较适合有一起准备面试的小伙伴,校招生。

加分项

如果有时间,可以准备下自己非常有把握的几个点,面试过程中如果有机会聊到,可以给自己加不少分。这个建议我更多是给校招生,对面试官来说,除非特别拔尖的,面校招生是可以大致分几类,无非就是基础好不好的。同等水平上,如果学校吃亏总归是吃亏,那么只能从技术上,努力突出自己。

部分面试题

为什么说部分呢,因为到后面平均每天一次面试,心累了就懒得记了... 一面基本都是问基础+算法,二面以上会问项目(当然也问算法)。

一面

  1. eventloop,浏览器和node区别
  2. GC,新生代老生代
  3. Webpack 插件原理。和loader区别
  4. 跨域为什么存在,如何处理跨域
  5. xss防范(除了常规的,也提了下CSP和SRI)
  6. 考察new操作符
  7. 检测页面性能方法
  8. hash router browser router
  9. 渲染长度1000的列表优化
  10. 浏览器缓存
  11. 平时写过动画吗,怎么实现,有没有优化
  12. vue的问题(尬,两年前写过,就没有继续问下去)
  13. react 写key的作用,是变快还是慢了
  14. 手写array flatten
  15. rem适配原理
  16. let var const 区别 const数据可以push元素吗
  17. 物理像素、逻辑像素。1px实现
  18. BFC
  19. 前端监控怎么做?如何监听全局错误?如何捕获Promise错误

二/三面

  1. 聊到平时排查前端问题,会看请求的traceId,那它是怎么生成的,存在的意义呢
  2. http如何保持报文完整
  3. 哈希表底层实现
  4. 前端CI了解多少
  5. 聊下项目,如何算首屏时间,做过什么优化。
  6. 平时用react hook,遇过什么坑

还有其他一些和技术无关的问题,但是技术面/HR面也会问到

  1. 为什么换工作?这个是必问的。
  2. 问面试官的问题(我觉得可以好好问下,一般听回答可以感受自己是不是有戏,至少我的直觉还没错过)
  3. 客观上看你觉得工作一年就换工作是好是坏,你后面的打算呢(当然不会频繁跳槽了,狗头保命)

其他面试细节

  1. 百度的面试体验是最好的,面试过程直接共享屏幕,用自己习惯的编辑器敲代码。面试时长算比较久的(至少一小时),前两面,每次手撕代码2-3题,会考察编码规范。
  2. 最早面了cvte(base广州),已经面了两轮技术面+一轮HR面,结果我说如果拿到更理想,比如腾讯,就不会考虑这边。果然把我挂了=。=

广告时间

其实我不喜欢这么标题党就是为了最后这段话:飞书前端深圳招人ing,社招一年起,实习生可转正。

社招:job.toutiao.com/s/JQet5yR

实习生:job.toutiao.com/s/JQeTVbp (内推码:TZDT9S6)

实习生可直接内推,有任何疑问欢迎评论留言~欢迎来做同事,感兴趣的欢迎私下交流~(没有公众号,先贴个人邮箱:x.q.young@qq.com