三年前端,面试思考(头条蚂蚁美团offer)
小鱼儿本人985本科,软件工程专业,前端。
工作三年半,第一家创业公司,半年。
第二家前端技术不错的公司,两年半。
第三家,个人创业半年。
可以看出,我是个很喜欢折腾的人,大学期间也做过很多项目,非常愿意参与到产品中去。技术上勉强合格,不过独自负责过很复杂的前端项目,所以一般基础面试题还有项目经历都没有太大问题。然而面对一些框架的实现原理、源码、工具等研究较少,加上技术栈比较陈旧,对 React 和 Vue 了解较少,导致水平一般都在阿里 P6 级,无法突破到技术专家的评级(P7)。
核心诉求
在换工作的时候,我也认真思考了下一份工作的核心诉求——踏实成长。
具体的讲:
- 技术沉淀
- 视野+平台
所以,一开始就拒绝了所有初创公司,只看大平台,自己心中的第一优先级是蚂蚁金服、头条。
面试过程
一共面试了四家
- 美团新零售
- 贝壳装修
- 蚂蚁网商银行
- 头条商业化
面试结果
- 美团 2-3+
- 蚂蚁 6+
- 头条 2-1
- 贝壳因气场不合没有发 offer。
这里就不说具体的 offer 情况了,还蛮有竞争力的。
面试总结
技术面试
基础问题永远绕不开,前端技术面的考点无外乎:
事件原理,闭包,调用栈,Promise,ES6, 工程化,webpack, 性能优化,跨域,安全问题, React、Redux 思想,Virtual DOM,Diff 算法, 移动端布局,浏览器渲染原理,Event Loop 等
还有手写代码,主要考察一些基本 API 和 ES6 的使用。最常见是在 Array、String prototype 上写一个函数。
比如 'abcd'.f() => 'd-c-b-a'
还有一些常用的函数,比如 bind (好多家都考……),throttle, debounce 等
总之,这些都是前端绕不开的概念,也建议可以真正的夯实基础,多看书,多总结。在面试的时候,面试官通常也是看人下菜,『高级』的概念不清楚,面试官也会主动降低问题的难度。从我面试来看,基本上大厂对于候选人技术的定位还是蛮准的,在面试前我也知道我自己的技术水平就是阿里的P6,结果也是,美团 2-3,头条 2-1 评价基本一致。
至于薪水还需要考虑自己其他的软技能,这个会在业务面的时候重点考察。
有些公司还是会考一些算法,比如美团、头条。但是不多也不难。
如果平常刷过 leetcode 的话应该问题不大,对于前端同学来说 leetcode 上的 medium 题目应该就可以了。
具体面试题
这里分享一个很有意思的问题,来自头条:
100 * 100 的 Canvas 占内存多大?
感觉非常有新意,各位同学可以思考。
分享一个算法题:
给定一个数组排序,使得奇数位的值不大于相邻偶数位的值。
业务面试
一般第二面或者第三面的时候都会结合业务聊技术
我个人非常喜欢这一面,因为自己独自负责过非常复杂的前端项目,基本上从技术选型、前端工程化、架构、设计模式、复杂模块、性能、安全问题、团队管理等都可以扯到。所以这一面往往聊的比较嗨,一个项目就可以面1-1.5小时左右。
以蚂蚁举例,由于我自己面过两次蚂蚁,在聊二面的时候都是这么一个问题,从我个人的业务出发,基本上把项目开发中所有我自己认为可以展示自己思考的点都问了一遍,蚂蚁的面试官也会提出很多临时需求,主要查看面试者面对多变需求如何灵活调整技术方案。
在二面过程中,一定要熟悉自己的项目,尽可能多的参与到项目中去,也尽可能深的了解项目,当然,了解是一方面、表达是一方面、心态又是另一方面。
这三者层层递进,毕竟对于项目的了解是基础,这个需要我们深入业务,多思考,多总结。没事给新来的同学梳理业务,画画业务框架图,主动承担一些有技术难度的工作(比如性能优化、安全排查、工具上提升开发效率等),多分享自己的工作,多和产品经理撕逼,锻炼自己的表达总结能力。如果前两步做的比较好,就可以自信的展示自己的项目了,面对变化的需求,相信也可以快速的想出更好的解决方案。
基本上前两(三)面就可以对一个同学的技术水平有一个比较全面的了解,也方便公司进行技术评级。
终面
第三面一般都是老生常谈:过往工作的选择,换工作的原因,自己的职业规划,自己平常是如何提高自己的等。
这个虽然都差不多,但还是希望各位同学可以多多思考这些问题,毕毕竟工作的目的都是为了自己可以更好的成长,更多的创造价值,顺便获得一份不错的薪水。工作本身就是一种生活的态度,还是要认真面对自己的选择。
终面的时候,一般都会留有一个向面试官询问的阶段。 我自己总结了几个问题,可以分享给大家。
- 目前咱们的业务,有一个什么样时间规划,这期间有哪些milestone?
- 我的过往工作经历,有哪些是对咱们团队有帮助的?
- 您对我在团队中的定位是怎么样的?
- 对于团队成员的成长,您有哪些方案?
第一个问题主要是看一下目前的业务是处于一个什么阶段,也看一下业务负责人是否靠谱,毕竟面试时双向选择嘛。
第二个问题,主要是想让面试官夸夸自己……
第三个问题,主要是看一下面试官对自己的评价,定位又比评价来的更委婉而又深入一点,看看自己未来在团队中大概是什么定位,一位面试官对我说:我希望你在深入业务的同时,承担一些横向的职责。这就说明面试官对于我的协调能力很欣赏,我也可以暂且推断出我在面试官心中分量也蛮重的。
第四个问题,关系到日常工作中如何平衡业务开发和个人成长,看看这个老板是否真正关心下属的成长,也蛮重要的。
最后,最好留下每一位面试官的微信,毕竟面试时间有限,面试结束后,发一段感谢的话,感谢这次面试,肯定面试的内容很有水平,希望以后可以多多交流。一是表现自己的素养,二是可以看出面试官对于自己的态度。实在不去这家公司,也方便以后挖人嘛……
面试技巧
- 确定核心诉求、筛选目标公司
- 一份确保可以拿到 offer 的简历
- 打磨自我介绍
- 打磨项目介绍
- 面试录音(征得许可后)、面后复盘
- 私下与业务负责人互动
- offer 谈判
关于这些内容先不展开,下次接着聊~
一些思考
总结完了自己的面试过程,我也想说一下自己的一些其他思考。
每个程序员都是同学中的佼佼者,学习能力都应该是出类拔萃的。 工作中需要的知识技能又相对固定,面对每次工作和面试中碰到的问题,还是要踏踏实实的去理解和总结。
广度深度两手抓,一是主动承担业务,主动解决问题。二是技术栈也不要给自己设限,React, Vue, 客户端开发,Node,Canvas ... 撸起袖子就是干,当然拓展广度的同时,对于目前紧迫的业务涉及的技术也需要深入了解,买书,买视频,多多投资自己。
多多思考和总结平常的工作和技术。
乐于分享,一是督促学习,二是锻炼自己的表达总结能力,三是这些分享的材料都是自己学习能力的证明,四是找到同类,扩大影响力。
不要排斥猎头,在换工作前,我拜托女朋友挑选了一个口碑很不错的猎头,全程辅导。
更重要的是,有了第三方的介入,可以客观的帮助自己梳理自己的优势劣势,模拟面试,安排面试节奏,稳定情绪,还有谈价格的时候可以避免尴尬。总之,一个靠谱的猎头是个很不错的选择。
评论区的小玉是辅导我的猎头,非常 nice,推荐哦。
至于最后的选择,由于我的三份 offer 都很有竞争力,我自己也非常纠结,这个时候就应该不断的问自己:
- 下一份工作,你想获得什么?
- 几个选择,分别工作三年,你认为哪个更值得?
- 你想在哪个领域深耕?
如果对于业务不是很了解,之前要到的联系方式就很重要,主动约终面的业务负责人再进行一些深入的沟通,真正做到没有疑虑了,再做出选择吧。
尾声
小鱼儿也即将加入新的团队,开始新的工作生活。希望自己可以不忘初心踏实成长。
也祝你找到心仪的工作~
小鱼儿建了前端面试交流群,加群的同学可以同学的微信,备注『面试进群』即可