[心得] 2021前端工程师面试心得

楼主: Doggyun (汪汪嗷嗷)   2021-04-01 05:15:36
帮转,不是我的心得。
要看网志请搜寻李彦杰 2021 前端工程师面试心得 应该就找得到;我贴网址一直失败。
一、前言
先简介一下背景,小弟毕业于112EE,大二的时候开始接触前端,一开始是看线上平台的课程学习,之后大三大四分别进入了三家不同的公司做前端实习生,毕业后做了正职前端工程师大约八个月。这次找工作从二月过完年后开始找工作,总共经历大约一个月的时间。
因为之前受到ptt版友还有一些medium的文章帮助很多,所以趁这个机会来回馈一下,也当作是纪录自己人生的小里程碑。
二、准备
1.leetcode medium 刷了120题左右,不太想刷easy跟hard因为觉得很浪费时间(之后要往senior做准备就会开始刷hard了),不知道从何刷起的话之前在ptt文章有看到一个非常有帮助的连结:
https://leetcode.com/list/xoqag3yj/,这75题几乎囊括了所有类型的题目,一边刷的同时一边复习自己有哪些观念或结构还不熟悉,就再去针对那类型的题目练习。
2.英文我上了一个线上平台的课程(怕被说业配我就不打名字了),每天上三十分钟,持续了大概两个礼拜就去面试了。
我觉得英文这个东西还是趁早开始学比较好,至于什么平台真的不要太在意,先开始最重要,先开始最重要,先开始最重要,反正投资自己一定稳赚不赔,与其拿去养胖自己不如多做一点有意义的事:D
3.对你的履历上面提到的专案一定要非常非常熟悉,包括遇到的难点,是怎么解决的,当时遇到什么抉择,因为什么原因做了这样的决定。除了专案以外最好再准备一个最近看到学到的技术相关的东西,可以是任何东西让你跟别人有差距的,一方面可以告诉面试官你平常都有在学新东西,另一方面可以将话题带往你比较熟悉的方向。
4.剩下的就是一些CSS,JS,React准备,CSS的部分因为我现在上班都是全部自己来,不用auto complete,所以算是蛮熟的了就没有多去准备,剩下的JS跟React只能说看到什么学什么,底下有几个我很推荐的连结有兴趣可以看一下(如果有作者不希望我放连结请通知我谢谢):
Web rendering
https://developers.google.com/web/updates/2019/02/rendering-on-the-web
Web performance
https://developers.google.com/web/updates/2018/08/web-performance-made-easy
Netflix 网站优化
https://medium.com/dev-channel/a-netflix-web-performance-case-study-c0bcde26a9d9
Event loop
https://pjchender.blogspot.com/2017/08/javascript-learn-event-loop-stack-queue.html
如果不知道自己哪里不足可以看这个
https://zhuanlan.zhihu.com/p/143611353
三、面试心得
升鼎科技
一面:
总共分成四个阶段
第一个阶段写了一题easy的leetcode,写完之后追加follow up问有没有更好的时间复杂度或空间复杂度,算是很简单的题目,有把javascript的Map跟Set是怎么操作的好好学起来应该不是大问题。
第二和第三个阶段主要聊了一下之前的经验,还有现在公司的产品主要负责的部分,还有之后想要发展的方向,整体聊起来的感觉非常的好,非常工程师的聊天,让我觉得他们是真心想要跟我合作的,而不只是单纯在考我问题。
最后一个阶段跟HR聊了一下期待薪资,福利等等。
结果:offer get,氛围非常好,但是因为接受了其他 offer 所以婉拒了。
Appier
一面:online interview
由三位不同team的前端来面试,主要写了一点code,还问了一些基本的css,有答应面试官不透露题目,所以就不细讲了,之前有看过类似的像这题:
https://github.com/lgwebdream/FE-Interview/issues/21
有兴趣的可以研究一下,就是看你js的程如何。
二面:onsite interview
由三位同个team的成员来面试,一样问了一些背景相关的知识,之后问了一个React怎么做data binding,然后当场我就愣住了,我好像都是自己做binding,就乱回答了一通说给一个input怎么做bind的,这好像也不是面试官想要听的答案,之后又问了会不会写后端跟App,感觉是需要一个通才,面完的当下就觉得大概是没过了,还需要好好加强自己的基本功,然后多碰一点后端的东西。
结果:感谢信。
优拓科技
这间的老板ric是我大学时期有修过课的教授,他的data structure在敝系是出了名的硬,来之前就觉得应该不会很简单,所以抱着学习的心态来这家公司面试。
一面:onsite interview
先简单的介绍了一下自己之后,开始问技术相关的问题,印象比较深刻的是问了一个如果今天在做一个操作很大的循环,导致画面会卡顿,该怎么办?
我没有在前端操作过巨量的运算,所以算是问到了一个我的知识盲点,后来面试官看我不会就跟我讲了可以的解法,大概就是把循环拆开来,或是把运算拆开,用setInterval去做,很像React Fiber的操作,就是每更新一个node就去检查一下时间超过了没,没超过就继续做,超过了就停下来先去做比较重要的事。其实很多问题大概都可以回答个五到六成,但是面试官在听你解释问题的时候其实也能听得出来你有几两重,所以还是多充实自己,遇到问题就去通盘了解,被问到的时候才可以给出比较全面的回答。
结果:感谢信,tech lead 还在信中跟我说到“顶尖的前端工程师不仅仅只是会前端,他们是通才,只是选择在前端领域更加专精”,真的让我很感动,他们是很认真的在招揽人才,只可惜我还没到那个境界。
HaHow
零面:phone interview
时间大概半小时,简单问了一下之前的背景,现在的工作负责什么项目,有没有遇到什么困难,怎么解决。
作业:
写一个无限滚动的接口,最近很多间公司都会希望手刻无限滚动,可以参考一下ObserverIntersectionAPI,这个Web API同时也能拿来做lazyloading,有兴趣的可以研究一下。
一面:
原本预定要有两个阶段,分别是RD team还有PM会来面试,结果RD面完就说PM有个临时会议中断了。
RD team考了一题费氏数列,问了一些JS的问题,还问了React的Virtual Dom是怎么做的,我把React16的Fiber架构大概讲了一遍,结果被问到如果React在commit阶段就超过了时间那还是会卡顿要怎么办,我当下就卡住了,我的内心想法是那应该没办法吧,但我又觉得commit阶段真的会超过时间吗?
然后就一边纠结一边回答我不知道XD之后还问了一题React在做map的时候会需要加上一个key,加这个key的目的是什么?完了又是一个我之前遇到但是没有彻底搞懂的东西,结果又乱答一通。
结果:无声卡,整个面试的流程非常冗长,建议如果有想要去试试看的可以提早投。
Line Taiwan
OA:
总共十题两个小时,前三题是coding题目,第四题问事件捕捉,事件冒泡,后面几题都是问答题。整体来说难度应该算中间偏上,但是因为用他们家的系统所以难度直接拉高一个等级,输入输出都要自己来,连test case都要自己想,我原本以为这种OA都是要全对才会过,写完当下觉得自己肯定过不了了,结果来了一面的通知让我吓一大跳XD
一面:
简单做了自我介绍,讲了一下现在在用的技术,现在负责做什么,然后针对OA的题目做了一些讨论,特别说一下我觉得这样才有在重视求职者,很多公司发了OA或作业,面试时完全都没提到,虽然说对公司来说可能就只是筛人的门槛,但是对求职者来说也是付出了时间,又没拿报酬,给个回馈我觉得应该不算是太过分。之后有着重问了Web performance相关的东西,因为之前刚好有做到所以还算回答的顺畅。
二面:
这关由Hiring Manager来面试,主要是聊之前的专案经验,跟技术比较无关,比较偏向想法类型,这类型的面试对我来说蛮有趣的,可以跟面试官交流彼此想法,各种类型的问题都有可能在这关被问到,像是我现在的专案没有写测试,就被问了如果我要跟PM解释测试的价值,那我会怎么说?
那如果你因为时间不够,只能加部分测试,你觉得你要怎么加,你要加哪种测试?
像是这种问题,可以看出你的沟通能力还有思路够不够清晰,我觉得非常的专业,这是我理想中面试官的样子。
三面:
原本二面的面试官跟我说二面就是最后一面了,所以我收到三面通知的时候还蛮疑惑的。
不过也因为这时候我决定去Bytedance了,所以就没有参加三面了,Line给我的面试体验真的是非常好(除了OA那个系统很难用之外)。
结果:收到其他offer婉拒三面。
Bytedance(Singapore)
总共三轮技术面+一轮HR,每轮都45分钟左右
一面:
有特别要求所以是中文面试,比较特别的是这关的面试官似乎连我的履历都没看,上来自我介绍完之后就是题目轰炸,问得非常仔细,像是javascript和React差别,function component 跟 class component 差别,闭包等等,而且每个问题都有follow up,只知道表面肯定会倒,最后考了一题medium左右的leetcode,给你一颗binary tree,tree node的结构包含parent, left, right,给你两个节点p, q,请问p与q的距离是多少?
我先给了一个 dfs的解答,时间复杂度O(n),之后面试官追问只要是一个map都可以用dfs来做,既然我给你了一个binary tree,有没有更好的办法,之后就给了一个往上找parent然后记起来的解法,时间复杂度O(log(n))。
二面:
有特别要求所以是中文面试,这关主要针对你的履历问相关的问题,这里停留了蛮久的效能优化问题,还问了现在做的项目中比较困难的部分,针对这个部分面试官再出follow up,主要也是技术相关的问题居多,最后问了一题应该也是medium的题,给你一个array,里面的每个元素都是一个object,
object包含id和next,请你按照上一个元素的next是下一个元素的id做排序,可以假设题目一定正确且只有一个正确解答。题目描述有点复杂但不是一个太难的题目,我一开始给了一个O(n )的解答,之后用了两个Map把元素都记起来,时间复杂度O(n),这个做法不是很漂亮但只要时间复杂度对了应该就给过。题外话前两关的coding题如果没过大概率就没下文了,要想办法在10分钟内想出完美解答还是有点难度的,可以试着先给比较烂的解答,给的同时顺便想一下等一下要怎么改,可以帮你增加一点信心的同时多延长一点时间。
三面:
这关规定一定要用英文,所以英文至少要能够沟通,由Hiring Manager来面试,先做了自我介绍之后针对经验问了一些问题,之后总共问了三个大问题,第一个你打完网址按下enter之后发生了什么事,这个问题网络上的资源非常的多,重点在于你能回答得多细,像我中间对DNS解析没有过多研究,就被问DNS具体是怎么解析的,我只能回答到从后面解析到前面,具体是用什么算法,怎么比对,我当时都没有研究过,算是乱回答了一通。第二题问CORS是什么,我回答了一些简单请求,预检的规则以后,接着问CORS有什么优点跟缺点,我就举了古早的Proxy Server
跟jsonp等这些方法跟CORS做比较,之后又接着问CORS有没有什么安全性上的问题,然后我就倒了:(,让我了解自己对于这个问题没有研究透彻,在研究问题的时候就应该要有这种穷追猛打的精神。最后一个问题javascript的hash map具体是怎么实作的,还好我之前大学在上课的时候有自己刻过,就回答了一些hash function, collision,还提到如果碰撞超过8个会从link list转成红黑树,接着就被问如果被转成树要怎么确定hash
map查找的时间复杂度是O(1),我脑中想着红黑数最快也要O(log(n))呀那到底是怎么找的,然后我就又乱扯了一通。我都觉得我可能要在这关倒了,结果面试官直接跟我说觉得我的表现蛮好的,但是如果以后要来新加坡工作要好好练英文XD算是松了一口气。
HR面:
这关也是一定要用英文面试,原本其实我很担心,以为会问很多behavior question,结果比较像是在闲聊,聊一些为什么要来这间公司,期望薪资是多少等等这些,没有问什么很刁难的题目,HR给人的感觉也很亲切。大概两天之后就通知我有确定的offer了。
结果:offer get,整体面试下来的强度算是很够的,每次大约一个小时的过程中一直在输出大量的资讯,面试官也会给足feedback然后再接着问follow question,所以平常的阅读量真的蛮重要的,非常有可能一不小心就会问到你不会的东西,尽管你没准备到但是依然能回答个三四成。
四、总结
我觉得面试有个很有趣的地方就是可以检视自己还有哪些不足,平常上班可能都在操作熟悉的环境,熟悉的代码,很有可能有某部分东西自己一直在用但是没有搞懂过,可以透过这个机会让自己再精进一点。然后我很喜欢一句话:“不难,要你干嘛?”所以在准备的时候还有平常再写code的时候尽量让自己的思考再深入一点,以此勉励自己,继续朝着顶尖前端工程师的路上前进。
作者: taipoo (要成功要积极)   2021-04-01 07:11:00
补推给你
作者: aaa1234136 (淡水活鱼)   2021-04-01 07:16:00
分享推推
作者: azureroki (Roki)   2021-04-01 08:06:00
问一下前端到底算法重要还是框架知识重要
作者: hegemon (hegemon)   2021-04-01 08:30:00
前端算法不重要呀...重点是你对基础css, html+框架熟不熟
作者: tbpfs (http://0rz.tw/Uk989)   2021-04-01 08:50:00
112EE 还收那么多感谢信,这些公司也太有趣了吧直接去面tier 1的大公司,或许都比较好进
作者: Aroeman (aroe)   2021-04-01 08:56:00
只能说近年面试下来前端刷题框架 js css html 都会频繁考
作者: iceman5566 (iceman5566)   2021-04-01 09:14:00
那几间无声卡跟感谢信 里面到底是有多强呀 呵呵
作者: hduek153 (专业打酱油)   2021-04-01 09:25:00
去科技业可能不用干嘛就进去了然后薪水可能还屌打
作者: gonjay (gon)   2021-04-01 10:09:00
请问在科技业是不是比较少前端职缺?
作者: summerleaves (内湖全联先生)   2021-04-01 10:33:00
分享推
作者: kangan987 (Jon.Snow)   2021-04-01 10:47:00
也考太多算法……
作者: chatnoir (对不起)   2021-04-01 10:56:00
不会啊, 我记得台积跟联发科都有前端缺啊
作者: andy1673595 (0.0)   2021-04-01 11:32:00
Nice....
作者: Sofya (千野羽)   2021-04-01 11:38:00
请问Bytedance一面题目是假设Binary tree还是BST?普通Binary tree怎么给出O(log(n))解法?
作者: nek0t1m (猫拳)   2021-04-01 12:15:00
binary lifting可以到O(logN), 但要preprocess
作者: c910320 (板桥摇援号)   2021-04-01 12:17:00
台大电机为什么要来挤前端
作者: xxhomey   2021-04-01 12:29:00
推谢谢分享
作者: ldkrsi (衰神)   2021-04-01 12:41:00
感觉leetcode练习太多了 browser+framework熟的效益比较高有些感谢信应该是小庙容不下大佛 觉得收你后半年就跑了
作者: shaomi (kerker)   2021-04-01 12:46:00
能请教是在职还是离职找工作吗?觉得在职要请一堆假去找有点痛苦
作者: edison51501 (萝莉总队长)   2021-04-01 12:54:00
作者: robber1234 (超痛恨嘴炮)   2021-04-01 13:14:00
EE做前端 科科
作者: blackmaninEE (黑人电机机)   2021-04-01 13:18:00
推详细
作者: shooter555 (shooter)   2021-04-01 13:37:00
112EE做前端 不是应该要去faang
作者: f763guy (轻轻松松)   2021-04-01 14:56:00
小庙容不下大佛+1,去科技业可能不用干嘛就进去了https://reurl.cc/GdllnA
作者: andrewking   2021-04-01 15:07:00
作者: joey11121 (KRjoyz)   2021-04-01 15:09:00
李哥快去LCS加入FANG战队吧
作者: zxc25678 (hello)   2021-04-01 15:37:00
某几楼笑死 要不要112EE不用面试直接录取算了
作者: scott0002 (sc)   2021-04-01 17:00:00
有时候求职也是挺吃缘分的
作者: Bigbirds   2021-04-01 17:54:00
作者: jackkao1 (HAK)   2021-04-01 18:13:00
作者: Hsins (翔)   2021-04-01 18:45:00
发 offer 又不是只需要衡量学经历和能力,有时候考量可能是小庙容不下大佛或是企业与面试者期望的部分(不只是薪水,还有团队文化和技术架构甚至职涯规划)相左呀…
作者: arhtur945 (AnthonyBennet)   2021-04-01 19:38:00
讲学历又要战来战去不会很累吗
作者: momo0215 (魔魔)   2021-04-02 05:55:00
推分享
作者: jack529 (Jack)   2021-04-02 11:27:00
推,是说这波bytedance 也太多了吧,感觉你们都可以开同学会了XD
作者: DrTech (竹科管理处网军研发人员)   2021-04-02 12:10:00
观念非常正确
作者: superpandal   2021-04-02 21:02:00
带往熟悉的方向仅限于面试官也有兴趣或懂 不然只会收到冷冷的回应 这还是太过正面的面试情况果然还是觉得粉饰太平有点别扭
作者: lohsts (lots)   2021-04-03 17:56:00
作者: Gringoire (葛林果)   2021-04-04 11:12:00
作者: morriliu (barla)   2021-04-10 10:14:00

Links booklink

Contact Us: admin [ a t ] ucptt.com