全栈(Full Stack)工程师面试指南

23706
16
不管是从周围的朋友还是看地里的面经数量来看,大部分人都是从事后端相关的工作。毕竟大部分人从学校开始接触的就是后端语言,学校也不会特意开课去教一些前端的理论。
但因为个人喜好原因,我自己就非常喜欢把web app的整条线都自己把握,所以不管是业余时间还是在公司里,我都是前后端加数据库都干。

然而事实上,当全栈工程师决定跳槽的时候,两个很尴尬的问题就会出现:
1. 很对公司没有全栈工程师这个title
2. 完全不知道全栈工程师的面试套路

对于第一个问题,我的建议是直接和该公司的hr联系,和他说明你自己的情况。一般情况下,hr会告诉你他们公司前后端是否是独立的。如果是独立的,那你就需要在前后端挑选一个类别来进行申请。更多的情况是,虽然title是swe, 但其实组里会有人去干full stack的活儿。这种情况下,你就直接申请swe的职位,然后让hr帮你match组就OK了。

第二个问题就有意思了。这里我来谈谈自己的经验吧。
全栈工程师面试根据公司不同,面试的内容也会不一样。 比如g家就单纯还是算法,L家就是前端,果子家我面的组考了算法,设计和数据库。

简单点来说,既然你选择了Full Stack, 那么你就需要每个方面都做好准备。

下面就分享下我自己准备的内容,让全栈大军们心里有个数!

算法:
我个人是先按类别每类刷了10道题,总共100道题的样子。这个阶段就是总结各个类型题目的模板,把基础套路背熟。 然后我就按照高低频从上往下刷了100道,这个阶段就是扫荡高频题,让自己在最短的时间内扫荡完最可能出现的算法题目。当有了电面和on site之后,你就需要开始扫荡面经了。 最后算下来,我总共刷了200 - 250道题的样子。

前端:
这个帖子写得非常好,我自己复习到的基本都涵盖了:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=500606&highlight=%C7%B0%B6%CB%2B%D7%DC%BD%E1

前端一般不会问你具体框架的知识,而会主要叫你用vanila js来实现一些具体的功能,比如轮播图,无限滚动等等。
除了JS要学的特别好意外,熟练快速的根据图片写出js/css/html也是非常重要的能力。 所以准备面试的话就主要复习JS语言本身特性(闭包,async,this作用域)和具体component实现。

系统设计:
后端系统设计的资料很多,相信大家肯定能准备好。
这里我主要想谈谈前端系统设计。 前端系统设计主要是要考虑性能优化,需要多思考如何利用一些前端特性来减少qps,提高用户体验。比如要复习什么时候需要用debounce, 什么时候用throttle, 什么时候用webworkers, 什么时候用web socket等等。。
这方面大家需要多读读各类前端blog, 了解主流的best practice。

数据库:
数据库的内容一般在后端系统设计里都会学到。主要就是要明白shards的原理,什么时候需要用锁,什么时候只需要replica.. 当然了,基础sql语句也要准备。

大概就想到这些。 希望大家有收获!
  • 379
16条回复