Published on

面试技巧

面试范围

一般情况下,面试官会从三个方面进行提问:

  • 基础知识
  • 项目
  • 场景
  • 加分项

基础知识

作为一名前端开发人员,主要的方向还是在客户端与用户交互上,所以这里牵扯到的 HTML、CSS 和 JavaScript 都会去考察,当然也不会考特别偏的。主要的考察点,都是简历上写的知识点,当然也会问一些简历之外的技术点,不过也都是会经常用到的。

假如问到自己不会的问题,也不要紧张,如果是理论性的问题,不会就说不会,毕竟你这个时候也不能乱编;而场景问题,那就根据自己的理解,把解题思路说出来。

而在基础上面,又可以细分以下几点:

  • HTML 基础
  • CSS 基础
  • JavaScript 基础
  • 框架基础

HTML 基础

这部分主要会考察一下 HTML5 的新标签,语义化。往深里问就会涉及一些 HTML 的渲染,回流和重绘等等。

CSS 基础

CSS 方面,经常会考察一些常用的属性,比如布局和 CSS3 的一些新属性。往深里问就涉及到一些细节问题和优化问题。

JavaScript 基础

这块的问题就会涉及比较多,面试会经常问到的有闭包、this 指向、class 类、继承、原型链、Promise,还有 ES6 新增的一些常用的语法等等。比较偏的会碰到问你迭代器这种的。

框架基础

对于常用的框架如Vue和React,可能会询问生命周期、常用API以及相关生态体系。

项目

首先简历上的项目要有亮点,如果千篇一律都是用了一些什么 vue + elementUI 的花,那可能自己看两遍之后都会感觉到索然无味,更何况面试官!

所以一定要凸显出自己项目里的一些亮点和难点,要抓住面试官的眼球,因为面试官也是很忙的,如果你不能再凸显自己的亮点,那可能在面试之初,就会降低一些印象分。

在面试中会被经常问到:谈谈你最近的项目。那这个问题其实面试官想听的是,你最近一个比较有亮点的项目,你要介绍一下这个项目上的亮点和难点,比如做了一些优化、封装了一个复杂的组件等等。

除去这一点之外,还有就是在项目里用到的技术点,比如你用的 Vue 框架,那对框架的理解,对底层的理解,用了第三方的一些框架,自己去实现的话,有什么想法,怎么去实现其中的某个组件或者更甚至问你让你去做一个组件库应该怎么做?再往深里问,又可能会涉及到一些设计模式和架构模式之类的问题,这块的话就到了编程思想的一个层面,这块可能得依靠平时的一个积累,给出一些自己的见解,没有固定答案。

场景

场景题,一般在问询项目时就会抛出来,比如让你去实现一个权限管理怎么实现?实现一个通用组件怎么实现?等等,这个时候回答也没有具体的答案,靠平时的积累和学习,自行总结一个比较合理的方案。(也有很完美的方案,但是不是自己的,讲出来容易坑到自己,尤其是遇到喜欢刨根问题的面试官)。

加分项

除了以上三个方面,以下几点也可以给候选人加分:

  • 写过技术博客,展示自己的技术能力和分享精神。
  • 参与过开源项目,表明自己在开发中的贡献和合作能力。
  • 贡献过开源组件库,展示自己对前端技术的深入理解和扩展能力。
  • 担任过前端leader的角色,证明自己具备团队合作和管理能力。
  • 成为技术类UP主,表明自己在技术领域的影响力和分享能力。

技巧

面试前要准备什么?

在面试中,面试官的问题都是有深意的,并非只是问你一个简单的问题,而是想通过这个问题了解你对知识点的掌握程度如何,有无自己的思考和总结,有没有结合项目的理解。

切忌通过点状的、零散的知识点去完成学习与记忆,一定要通过横向比较、纵向延伸的方式建立知识体系,通过体系化学习逐步填充知识盲区。

要知道:正确的方式比学习本身更重要,也使学习更高效

我们应该从日常的开发问题中,从面试的问题中去学习,通过反思与复盘不断学习成长

面试回答能力定位

  • 知道/了解:只是简单的复述流程,缺乏重点侧写;
  • 吃透理念/具备基本架构能力:解释清楚了设计理念,并能将核心流程穿插在具象化的抽象概念中进行描述;
  • 架构师:在上一点基础上,加上自己的理论心得、工程实践,辅以具体的落地成果。

假如我们的能力还没到架构师的级别,但在思考总结阐述观点上要往这个方向走,并在实践中不断锻炼和改进自己的思考和表达方式,做到“讲话有重点层次要分明”。

回答问题时要注意什么?

好多人回答问题,都是“线性思考”,即一种直线的、单向的思维方式。表现为:想到哪儿讲到哪儿,缺乏全盘考虑。

对于一些概念性的题,讲究一个四字口诀“讲说理列”,即“讲概念,说用途,理思路,优缺点,列一遍” 。

  • 讲概念:用简洁的话说清楚该技术是什么。最好能用一句话描述。
  • 说用途:描述该技术的用途。能够具体结合适合场景,拓展性的描述。
  • 理思路:梳理该技术的核心思路或运作流程。这个地方可深可浅,如果对其有足够深入的了解,建议详细地展开说明。
  • 优缺点,列一遍:对该技术栈的优缺点进行列举。列举优缺点肯定有与其他技术方案横向对比的过程,那么在这个过程中,切忌刻意地踩一捧一,容易引发面试官的反感。

这个答题框架很适合是什么或者原理性的问题。

除此之外,我们需要对问题有所思考:

  • 问题的目的是什么?
  • 范围是什么?
  • 怎么回答能突出重点?

以此来建立时机与操作的对应关系。要知道答题不仅是告知答案,更是要有表达上的完整性,使用表达的技巧去丰富面试表现。

怎么回答为什么?

一般类似于“为什么采用该技术方案”问题主要考察两个方面:

  • 技术广度,深挖知识面涉猎广度,对流行框架的模板方案是否知悉了解;
  • 技术方案调研能力。

那回答这类问题,我们可以使用三步走技巧,即一句话解释,核心概念,方案对比的解题思路。

比如“为什么 React 使用 JSX?”这类问题:

  1. 一句话解释 JSX。首先能一句话说清楚 JSX 到底是什么。
  2. 核心概念。JSX 用于解决什么问题?如何使用?
  3. 方案对比。与其他的方案对比,说明 React 选用 JSX 的必要性。

怎么回答“区别”?

描述区别,就是求同存异的过程

  • 在确认共性的基础上,才能找到它独特的个性;
  • 再通过具体的场景逐个阐述它的个性。

怎么回答“是A还是B”?

这种问题具有相当强的迷惑性,因为在不同的场景中会有不同的选择:

  • 可能是 A;
  • 也可能是 B;
  • 甚至 A 和 B 同时存在的可能性也是有的。

所以就需要把问题放在具体的场景中探讨,才能有更加全面准确的回答。在面对类似的问题时,要先把场景理清楚,再去思考如何回答,一定不要让自己犯“想当然”的错误。这是回答类似问题第一个需要注意的点。

怎么回答“如何xxx”

对于这类问题,也是一种场景题,需要根据你实际项目中遇到过的一些场景来进行列举。这种问题的解题思路一般是:“一个基本,多个场景”,即先确定主题,再根据场景列举。