太长不看版
- 对于实习招聘(甚至校招)来说,项目经历可能是获得面试的敲门砖,但是基础绝对是赢得面试的通天索。
- 即使是实习招聘,白板写代码也很可能逐渐成为主流面试的标配,平时要有意识地锻炼这方面能力,要不然面试时没有IDE真的是做不下去。
- 对自己的真实实力一定要有正确的评估。一个简单的评估方式是,你的真实能力水平大约只有你所认为的50%甚至更低。
- 面试是一件很累的事情,要找准自己的位置,避免海投。
完整面试回顾
面试流程记录
需要提前说明的是,该流程记录皆出自本人本次面试的经历,和其他人的可能有所出入。
面试之前,一般会有邮件通知,邮件上会有一些重要信息,需要认真查看。本人此次是视频面试,就提前找了个安静的地方,并且确认面试设备没有问题。个人认为,面试前提前半小时“到场”是一种尊重。
开始面试后,首先是自我介绍。面试官不一定提前看过简历,或者只是一览而过,所以面试前有必要准备一段3-5分钟的自我介绍。这里面试官让我重点讲下在项目中曾经遇到过的问题(抛除业务逻辑),又是如何解决的。从“抛除业务逻辑”这个要求可以看出,其实面试者所做项目本身并不重要,重要的是你如何从项目,哪怕是玩具demo中发掘亮点,体现你个人解决问题的能力。
自我介绍之后,就过渡到面试题环节。面试题环节有两类,一类是挑一段代码让你回答,这类考的是基础知识中的重难点;另一类是之前提到过的白板写代码,网上戏称手撕代码,题目不会很难,但是很考验基本功,重度IDEer可能会举手无措(比如本人qwq)。在面试题环节中,即使遇到不会的问题,也可以说说自己能掌握的信息,面试官会适时给出一定的提示。
面试之后,我抓住机会,问了面试官一个憋在心里很久的问题,是什么就不说了。
面试考察点归纳
这里只是简要记录个人在前端面试遇到的考察点:
position和display、事件机制、dom、捕获冒泡、this及作用域、原型链、es6(了解)、vue的双向绑定原理(最好有用过,一定程度上考察了源代码理解)、基础的数据结构……等。
其中,dom的考察了一道,this及作用域考察了两道,数据结构考察了一道,其它的都以概念提问的方式进行考察。
可以总结出以下教训:
- js基础是重中之重,而前端对算法的要求基本上不是特别高,基础的数据结构牢固掌握了就没问题。另外前端的话,刷算法题最好用js。
- 对于你没怎么接触过的领域,面试官并不会去深究;但是,对于网上疯传的Vue等框架,最好有个了解和体验,甚至是深入源码。
- 一个很明显的现象是,一个概念你知道了,但不一定能说得清楚;一个概念你看似仔细了解过,但真正面临考察时不一定能说出个所以然。解决这个问题的最好办法是——写博客。
- 并没有考察到websocket、nodejs等知识,这个阶段的面试要求并没有网传得那么高。
反思与计划
对于本次面试出现的种种问题,本人有如下反思:
- 明确自己的技术方向,然后深入研究。原以为在技术领域多处开花是一件很酷很厉害的事,现在发现这很容易导致我成为一名api使用者。一定要熟记基础,深入原理,了解源码。
- 一定要有技术博客,本次面试过程中能答上的知识点全是平时博客有记录的知识。
- 接上一点,技术博客不应该是简单的知识点堆叠,要尽可能地由点及面。秉持这种心态——我其实是在写新手教程,然后你就会自觉地把博客写得尽量详细及全面。
- 针对自己做过的项目,要有意识地进行分析总结,面试过程中就可以把总结的这些问题抛出来,总有一两个会被面试官作为考核点。
计划如下:
- 摒弃朝三暮四的心态,当前阶段应当以前端开发为自身的主要技术栈和深入方向。
- 就前端而言,没有什么比做一个自己的平台更能锻炼技术的了。计划于参与的项目完成之后,大概是今年暑假,从零开始做一个自己的博客。
- 比起新项目计划,技术博客显得更加急切。从现在开始,每周都要强制性做一次技术总结;或者坚持阅读技术书籍,做读书笔记。
附记
在面试过程中,面试官给了我很多建议,让我通过经典书籍深入基础,结合其他前辈给我的意见,罗列以下三本书:
- JavaScript 高级程序设计(全面而宽泛,适合反复回顾)
- JavaScript DOM 编程艺术 (了解DOM必备)
- 你不知道的 JavaScript (聚焦JS的重难点,包括原型链、闭包等)