11

两年前端双非二本,科班出身面经分享(已拿阿里,头条,pdd,快手offer)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/363694889
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

两年前端双非二本,科班出身面经分享(已拿阿里,头条,pdd,快手offer)

关注微信公众号:web前端学习圈,领取85G前端全套系统教程

刚签掉阿里天猫,闲来无事写点面经

自身情况:双非二本,科班出身,中厂两年,小厂两个月,技术栈:包括但不限于 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 的,面试流程一周内也搞完了。

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

原作者姓名: 墨者攻再守
原出处:掘金
原文链接:两年前端9~10月面经(阿里,头条,pdd,快手)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK