两年前端 9 ~ 10月面经(已拿阿里,头条,pdd,快手 offer)

前端宇宙

共 3966字,需浏览 8分钟

 ·

2020-11-19 00:02

作者:okboy5555
原文链接:https://juejin.im/post/6894101837696204808

刚签掉阿里天猫,闲来无事写点面经,回馈一下掘金

自身情况:双非二本,科班出身,中厂两年,小厂两个月,技术栈:包括但不限于 vue,php,jq,node,平时偷摸看文章,刷算法题 :)

这两个月面试的大厂罗列一下吧(时间顺序):

  • 阿里 A 部门 二面挂
  • 字节 A 部门 二面挂
  • 滴滴 一面挂
  • 抖音 二面挂
  • 字节 B 部门 offer 阶段
  • 快手 offer 阶段
  • 陌陌 offer 阶段
  • 蚂蚁 一面挂
  • 阿里 b 部门 offer 阶段
  • pdd offer 阶段
  • 电信 offer 阶段

其他一些小厂不罗列了,可以看到,上来面试的几家大厂几乎覆灭,其实是自身缺乏大厂面试经验导致,说说你需要准备的东西,我这里不会给具体问题的答案,很多答案是要自己去思考和总结

基础

前端八股文是必看的

  • 原型链
  • 继承的实现
  • 数据类型
  • var、const、let 对比
  • new 的过程
  • this 指向问题
  • bind 实现方式
  • 闭包
  • 事件循环
  • 类型判断
  • 手写 Promise

翻来覆去的题也就这些,有一些问题是可以和其他人拉开差距的,然后你需要有自己的一套理解。

例如我理解js的原型链是这样的:原型链就是链表,this 其实就是链表当前指向的那个原型,bind call apply就是改变链表 next 指向。

例如垃圾回收机制有新生代和老生代,可以谈谈Scavenge GC 算法

例如问渲染页面的过程,除了 tcp 网络层的基础,我会答一些解析算法,容错机制,如何建立图层树

eventloop答出新版的 chrome 优化了await 的执行速度,await 变得更早执行了,node和浏览器的区别,新老node版本执行顺序的不一致

这里我只是举个例子,需要你自己深入挖掘或者看一些文章自己积累

小厂

小厂宗旨就是你能来干活就行了,所以会问很多 api 的使用,假如你是 vue 技术栈的,建议把 vue,vuex,vue-router 文档过一遍,结合平时做的项目还有遇到的坑,基本就可以了。

这里罗列几个 vue 问题:

  • vue 生命周期,每个生命周期项目中什么时候会用
  • vue keep-alive 常用属性
  • 组件通信方式
  • hash 和 history 区别
  • v-for 唯一 key
  • vue 运行机制,依赖收集
  • v-show 和 v-if
  • watch 和 computed
  • vuex 中模块拆怎么做的

涉及到的编码题:

  • 数组去重
  • css 水平垂直居中

中厂

中厂会对于你的深度会有一定的挖掘,不单单是会使用一些 api,还有独立思考问题,涉及到一些工程化的题,对于广度也有要求

罗列几个 vue 问题:

  • 一个页面有父子组件,进入之后的渲染顺序触发的生命周期是什么样的
  • keep-alive,如果只想要router-view里面的某个组件被缓存,怎么做
  • 组件通信中的eventbus原理是什么
  • vue diff简单讲讲
  • 3.0proxy 讲讲,和 2.0 区别(广度)
  • data为什么是函数
  • 常用vue api原理(包括不限于nextTick,watchcomputed)

涉及到的编码题:

  • callapplybind
  • 节流,防抖
  • class实现

大厂

大厂风格不一,这里分开举例

头条,pdd,快手

把这三家放在一起是因为这三家都会问一点算法

头条面试一般 3 轮,一面基础,二面工程化和项目,三面广度,一二面基本就是从头条题库里面抽的,你挨个答就行,会有一道看代码说输出的题,一般是考this或者是eventloop,有时候还会有考promise,前面答的都不错最后会给一个算法题,也可能是实现一个 xxx 函数,算法题也比较简单,也就是leetcodeeasy难度,最多不会超过middle,特别喜欢问二叉树,算法题 ok 了面试就过了

比较看运气,答不出的多了就给你挂了,如果你基础足够好覆盖方方面面那肯定能过,算法题我都是直接写出来的,本人算法比较强,算法不强的同学建议先刷剑指 offer,然后在搞个 200 道 easy+50 道 middle,反复咀嚼就够用

这里给点例子:

  • promise.all 异常处理
  • 版本号比较排序
  • 数组中第 k 个最大元素
  • 二叉树中的所有路径
  • 二叉树中和为某一值的路径
  • node 中 promisify 实现
  • fetch 兼容超时重传
  • 观察者模式(高频)
  • String indexOf 实现
  • 扁平化
  • 科里化

其余对于工程上面的考量,因为我是用webpack打包的,所以会问一下loaderplugin的区别,怎么实现loaderplugin,自己有没有写过,webpack整个流程是什么样的,这边建议自己去手写个简单的webpack玩玩,就全知道了,本质上就是广度递归而已

快手一共两轮面试,第一轮基础+场景题+工程+编码,很全,第二轮技术深度+场景题,问的问题都挺好,很多没有涉及到的方面都是努力思考,面试官也很nice,唯一一家看了我github的公司,聊得很投机,给快手点赞,因为快手就面了一次就直接写题了

例子:

  • vue如何实现组件封装
  • 一个动态拖拽的场景,抓取一个div之后如何显示最靠近的div的基线,就是一条虚线,我这里用队列的方式解决
  • 图片,视频断点续传的一些问题
  • 因为我github有手写webpack,针对我写的webpack问了几个问题,关于hook和生命周期的

pdd 一共两轮面试,跟上面的问的大同小异,让我惊讶的是二面直接出了道比较棘手的算法题,不过问题不大撸了出来,我 10 分钟左右撸了出来,感兴趣的小伙伴可以试试

例子:

  • 给定一个二叉树, 找到该树中两个指定节点间的最短距离

阿里

阿里是我感觉面试难度 max 的公司,社招 P6 起,基本都是电话面,总流程 3~4 轮,我比较强项的算法和基础得不到体现,基本都是深入业务挖掘的问题

一面:做的业务,用到了什么技术,有什么比较困难的,哪些事情是让技术推进业务的,最后会补 1~2 个基础问题,有的面试官还会问问 http 协议这块。头两次面试阿里没有经验,妥妥的挂了,也是告诫后面的同学不要像我这样,想清楚自己为什么要这么做,自己做的东西服务于谁,整个业务流是什么样的,再去面试阿里

二面:由于我项目中用到了ssr,面试官从工程化切入,细致入微的问了一下webpack原理(工程化)

三面:基本就是说说对于行业的理解

典型题

node

如果简历上写了koaexpress,为什么要使用koa(express),直接用node不能写吗?中间件本质是什么?类似一些进程相关:孤儿进程和僵尸进程,多线程。因为我用的php,所以node问题问的比较少,基本面试两个月过来前端面试官都没用过php :(

项目

项目中遇到最困难的事是什么(必问),这道题自己提前组织好语言,找一个例子,困难点,最后用的什么方案解决。临时增加需求怎么处理?产品方案明显错误,技术怎么推进?类似这些

hr

这轮基本上保持对这个职位强烈需求就可以了,诸如工作氛围,技术,公司方面都举出很多优点就行。如果你觉得聊下来不行也明确表述你的顾虑,不要浪费互相时间

一些面试经验

和许多面试官交流下来,假如你基础特别好,最多也是一块挑一个问题问,20 分钟就结束了,很少遇到问的十分细,基本按照题库来问打分的,像米哈游,头条,ucloud就是这样从题库出题,面试时间控制 30~45 分钟,问的长说明面试官对于你某些方面会有疑问和摇摆,问的短就是挂了。

我也尝试过跟一些候选人交流,发现普遍的一个问题就是好多东西明明知道,却表述不清楚,例如webpack整个打包流程是怎么样的,聊聊闭包,箭头函数,es6这些基础题,其实这些必问的问题必须提前准备,你需要在面试前提前把语言组织好,而不是问到再去想

面试过程注意点:基础题必须答好,有自己的理解,最好答出亮点和项目中实际使用的地方。项目题场景题和面试官求同存异,不一样的地方也不要过分纠结,不同厂有不同的解决方案。编码题最好说出自己的思路,编码这块我做的比较差,要么就是一次写出来,要么直接说不会。最后面试过程中答题一定要自信,我们写代码的肯定是胆大心细,而不是畏手畏脚。

其他

如果你对后面的工作技术追求较高,在一些问题后面可以反问面试官你们公司针对这个问题是怎么做的。如果你更在意氛围方面,可以问问多久搞一次技术分享。也是旁敲侧击的一种方式。如果你想了解未来同事水平如何,不妨最后问问公司项目如何区分是用vue还是用react。如果你更关注要去做什么,建议详细问问公司的业务和经济链路,盈利模式,看看是否有前景。求职也是一个双向选择。

对于我个人来说,虽然快手,头条,pdd的薪资给的很多,基本就是double的状态,但是我更看重公司未来的发展方向,最后还是选择了阿里,广大开发也要想清楚未来 3~5 年要做什么,个人是陪伴着业务成长的(是不是有阿里味了)

一些资料:

https://github.com/abc-club/js-paradise/blob/master/INTERVIEW.md

https://github.com/mqyqingfeng/Blog

https://webpack.wuhaolin.cn/ (比我翻文档快多了)

总结

对于我来说

难度上:阿里>快手>pdd>头条

体验上:阿里>快手>pdd=头条

阿里的 hrg 并没有传闻中说的那么可怕,还是非常 nice 的,面试流程一周内也搞完了。

最后祝愿迷茫的前端开发者一路顺风

浏览 33
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报