高效“背诵”面试题的三定法则

程序员求职时,在准备阶段都要“背诵”大量的技术面试题,以应对各路精明面试官的百般折磨。

这里我把“背诵”一词加上了引号,意指此处的“背诵”可不是一般的背诵。如果你以为我要教你过目不忘记的背诵技巧,那可能会让你失望了。

请允许我先自卖自夸一波。作为程序员老兵,混迹江湖多年,被面试官们无情地伤害过,也作为面试官无情地“伤害”过很多人(一阵奸笑声飘过)。

现在,我将总结出一套无敌的面试题“背诵”方法论,分享给在座的各位。帮助大家早日脱离茫茫题海、抵达成功的彼岸。

小板凳坐好了,小本本快铺开,我要开讲了。先上图,建议收藏。

如此高大上的高效“背诵”面试题的三定法则,没错,就是我的原创,请允许我“高调”地逐一解读给大家听。

一、确定题目类型

把海量的技术面试题,进行分类。你会惊奇地发现,这些面试题无非就是这三大类,分别是有

  • 固定答案的封闭式问题
  • 考你理解深度的开放式问题
  • 考你编程能力的逻辑算法题

举例说明:

  • 题目1:Vue 的生命周期有哪些?
  • 题目2:请谈一谈你对 MVVM / MVC / MVP 的理解。
  • 题目3:请用 js 计算 1 ~ 10000 中出现的 0 的次数。

不难发现:

  • 题目1是有固定答案的封闭式面试题;
  • 题目2开放式题目,侧重考你的理解深度;
  • 题目3就是典型的逻辑算法题了。

因此,在你“背诵”面试题的第一步,你首先要搞清楚的就是题目类型。不同类型的题目,预示着你需要搭建不同结构的知识体系,你需要提取不同深度的知识重点。

二、制定答题框架

当确定了面试题题目类型以后,就可以开始制定“背诵”框架了,下面举例说明。

以 题目1 为例:

题目1是一道有固定答案的封闭式题目,你可以使用并列式结构来提取面试题中的知识要点。

举例:在初始化阶段有 beforeCreate、created,在挂载阶段有 beforeMount、mounted,在更新阶段有 beforeUpdate、updated,等。

你还可以使用递进式结构来提取面试题中的知识要点。

举例:Vue生命周期总共有 11 个,常用的有 8 个,分为初始化、挂载、更新和销毁这 4个阶段。工作中我常用的有 created、mounted、beforeDestroy 这三个,created里我常用来触发调api 接口,mounted 中我常用来执行 DOM 更新后的相关逻辑操作,比如开启定时器等,beforeDestroy 中,我常用来清除定时器、清除Vuex中缓存等。良好地理解生命周期,可以帮助我们高效地解决工作中的若干bug,比如……

当你有了这种 框架结构式的答题思维 以后,我们在准备面试题、背诵面试题时,就可以刻意地从大段大段的答案中提取出重点知识,而不是像背课文一般死记硬背。这种结构化的背题方式,不仅效率高,而且记忆更持久。

事实上,用人单位和面试官需要的是一个有逻辑的程序员,而不只是一个“能背诵”的“记忆力大师”。

以 题目2 为例:

题目2是一道开放式题目,你采用 并列式结构 来准备面试题,那么你只用分条说明白 MVVM、MVC 和 MVP 即可。

如果你采用 递进式结构 来准备,你可以先从前端框架发展史的角度讲一讲 3 种架构模式的各自特点,再讲一讲彼此的优势和劣势,最后谈一谈你对 MVVM 的深入理解。

以 题目3 为例:

题目3是一道逻辑算法题,你可以采用 顺承式结构 来准备。要完成这道算法题,你该怎样写代码,你的思路是怎样的。第1步干什么,第2步干什么,第3步干什么……这有点“面向过程编程”的味道了。即使你无法在白纸上手写出正确代码,你仍然可以借助伪代码来展示你的解题思路和详细步骤。

你还可以采用 并列式结构 来准备这道题,即你有 N 种解题思路,逐一把它们说清楚。如果采用 递进式结构 来准备,你除了要逐一说出解题思路,还要对这 N 种解题方案进行优劣分析,最后指出你的终极选择、并解释为什么。

从上面三个例子可以发现,只要你清楚了题目类型,你就可以灵活地选择 3 种不同的答题框架来准备面试题。

  • 并列式结构:强调对重点知识的提取与罗列,
  • 递进式结构:要求你能够由浅入深、层层升级,
  • 顺承式结构:要求你有较强的过程化思维、知道先做什么再做什么。

你学会了吗?

三、淡定应对追问

在技术面试过程中,有经验的面试官都会不断地追问。

比如,当你回答了“Vue常用生命周期”后,面试官可能会追问——“请问在 beforeMount 和 mounted 之间,Vue在后台做了哪些工作?”。

举个例子:

我可以采用 顺承式结构 来回答这个问题。我说:“beforeMount 和 mounted 之间,Vue在后台做了 3 件事。
第1步,当声明式 data 发生变化时,Vue先是生成一个新的虚拟DOM副本。
第2步,Vue将对内存中的这两个虚拟DOM执行 diff 运算,找出 data变化前后的最小差异。
第3步,Vue使用真实的DOM操作,把上一步中找到的最小差异更新到页面中去,视图完成更新。”

聪明的你又发现了,在回答这个被追问的问题时,我是不是提到了很多可能被继续追问的新知识点啊,比如“虚拟DOM”、“Diff运算”等。没错,面试官很有可能继续追问——“什么是虚拟DOM?”、“Diff 运算是怎么实现的?”等。

这就是“追问”的艺术,有经验的面试官一定会把你问到“绝境”,把你问倒为止。追问的问题也会越来越深、越来越难,如此才能确定出你的真实 Level ——你值多少钱,你是否符合我公司的用人需求。

如果你有时间和精力,你仍然可以使用“制定答题框架”中学习到的 3 种答题框架,来应对一切可能被追问的问题。本小节的重点,是教你另外 3 个技巧原则,助你从容应对被追问。

不挖坑原则

指的是,当你在回答面试问题时,尽量不要提那些自己不懂的、或者一知半解的知识点。比如,如果你对 Diff 运算不太理解,为了避免被追问,你在回答“beforeMount 和 mounted 之间 Vue做了什么”这一问题时,应该避免提到“Diff 运算”一词,或者别过度提到它。

这就是“不挖坑原则”,请确保你说出来的关键词和知识点,都是你已经做过功课的。

不吹牛原则

这个原则很容易理解,就是你在回答问题,不要说大话。比如说,“我精通JavaScript”,“我是一个高级全栈开发工程师”等,这都属于“吹牛”。对大多数人来讲,可以说“熟练使用”,但说“精通”就有点夸张了。

一旦你说了大话,这很容易遭到面试官的追问。万一你答不上来,会给面试官留下“不诚实”的印象,那么你的面试成功率必将大大降低。

擅引导原则

这个原则和“不挖坑原则”有异曲同工之妙。“不挖坑原则”是避免提到自己陌生的领域,而“擅引导原则”是鼓励你多提自己熟悉的领域、多提自己做过功课的领域,通过语言强调等技巧,把面试过程向有利于自己的方向引导。

有经验的求职者,要有这样的自信,要敢于引导面试过程,让自己占据沟通的主动立场。

在这个3 个原则的指导下,相信你一定可以更好地准备面试。在面试准备阶段,用正确的方法、有目的地“背”题,有逻辑地答题,讲自己擅长的话题,效果肯定会更好。

写在最后

我经常和同学交流,面试不等于工作,面试不过是一场“表演”。擅长面试的人,未必就一定能成为开发高手;而不会面试的人,必将郁郁不得志、空有一身本领。

面试,是我们进入理想公司的第一道门槛。毫不夸张地讲,面试过程中七分靠“演技”、三分靠实力。作为求职者,你必须清楚,你需要做大量的前期准备,才有可能淘汰其它的面试竞争者。打铁还需自身硬,你准备好了吗?

已标记关键词 清除标记