大家好,我是 Nolan,前美团高级前端工程师,长期担任面试官,曾主持过美团的多个重要产品的开发工作。现在旅居澳大利亚,担任一家支付公司的前端业务负责人。
多年的面试官经历,使我得出一个结论:面试表现和工作能力,并没有大多数人以为的那么相关。一个技术能力优秀的程序员,很可能因为忘记 Event Loop 的内容而被认为基础知识不扎实;一个原来在团队中没有存在感每天划水的人,却有可能因为碰巧面试前一天晚上刷到了浏览器缓存机制的面试题,而被认为是基础扎实的大牛。实际上,如果面试总是能准确地反映出一个人真正的技术能力,大公司里就不会有这么多划水的人了。
工作能力强,并不代表面试表现就一定好;工作有工作的技巧,面试有面试的技巧,它们有一些联系,但是它们是两个不同的学科。如果你下个月要参加长跑比赛,从现在开始你会每周练习三次长跑;但是如果你下个月要参加面试,却不从现在开始花一个月的时间刷一遍面试题,岂不是很奇怪吗?
市面上有不少介绍前端面试的资料,但是都包含各式各样的问题:有的年代久远题目过时已久;有的主题不全,某些资料竟然以作者不熟悉 CSS 为由将 CSS 的题目一笔带过,而关于 TypeScript,React Native,层叠上下文,移动端开发的题目更是少之又少;有的浅尝辄止,只是提供一个答案不做深入研究,让读者一知半解;有的东拼西凑,完全形不成系统。
所以我决定自己来写一个面试专栏,这个专栏花费了我很多精力,但是我相信是值得的。只要你从头到尾练习一遍,一定可以解答你的很多疑惑,为你的面试助力。
我选择题目的标准是:
- 实用性。 即,题目背后的知识点一定是面试中大概率会被问到的知识点
- 代表性。 即,每道题目可以都准确地代表一类知识点,这样有利于读者举一反三,遇到这一类的题目都能有思路
- 全面性。 即,覆盖到所有常见的前端面试知识点,这样读者只需要通读本专栏,而不需要四处搜寻其他的材料作为补充
- 科学性。 即,越是常考的题目,越放在前面。这样可以保证读者熟知最常考到的题目。比如大多数面试书会遵循 JavaScript 技术书籍的编写原则:把 JavaScript 的变量与变量类型 这个题目放在第一节。实际上这是不科学的,因为 JavaScript技术书籍要兼顾到 JavaScript 新手,所以第一节一定要讲最基本的知识;而大部分面试书籍的读者都有一定的前端知识,就不如把 函数调用、执行上下文、异步函数等知识放在第一章。
本专栏共分为 7 章,分别为:
- 开篇
本章介绍了整个专栏的基本内容以及设计原则 - JavaScript
本章包含了 JavaScript 相关知识的常见考点,包含 函数定义、调用、闭包、原型与继承、异步函数等等内容,是整个专栏中的重中之重,同学们务必要掌握每一道题目。 - CSS
本章包含了 CSS 单位、布局、层叠上下文、自适应等内容,这一章的内容是很多面试书籍会忽略的内容,因为 CSS 是很多前端程序员的薄弱项,包括这些书籍的作者。这就造成了很多对 JavaScript 能侃侃而谈却被一道简单的 CSS 题目难倒的尴尬场景。而本章致力于覆盖 CSS 面试中常见的面试题目,希望能为 CSS 基础薄弱的同学助力。 - 客户端
本章的内容是浏览器相关,包括 HTML、浏览器、性能优化、HTTP 等知识点,这部分内容考察面试者在代码能力之外的知识能力。 - 框架与库
本章的内容包含了 React、Vue、TypeScript、React Native 等常考知识点。React 小节包含了 React Hook 的内容,而 Vue 则包含了 Vue3 的相关知识。网上关于 TypeScript 的面试题很少,React Native 的题目则更是难得,笔者总结了一些经典题目。 - 计算机基础知识
很多公司喜欢考察一些前端以外的知识,以证明你有主动学习的热情。本章总结了一些常见的计算机相关的面试知识。 - 简历与面试
本章笔者根据自己多年的担当面试者与面试官的经验,聊一聊关于简历和面试的心得。帮助读者树立对于面试的正确态度。
希望每位同学都能在这本书中有所收获。