面试杂谈

前言

其实关于面试一直是一个老生常谈的话题,尤其是前端岗位的面试。个人自己的面试和被面试经验来说,大部分情况下的面试者都喜欢问一些知识收集型的问题,比如:

  • 浏览器差异与检测

  • CSS hack

  • 如何解决跨域

当然不是说这类问题不应该问,如果候选人的项目背景有写解决过类似的问题时;

适当追问有多少种不同的解决方案,为什么选择其中某种——能很好的考察候选人在积累知识过程中的深度、广度还有思维模式~

但是对于一些初级岗位的候选人或者毕业不久的校招生,问这类问题无非是增加尴尬。

那么要怎么做

如果非要问初级职位候选人一些知识收集型的题目,推荐问一些比较基础的,比如:

  • HTML5新增了哪些tag,和input类型

  • CSS选择器有多少种,优先级排序

  • JS闭包,浏览器的事件模型

这些问题的最大价值在于考察候选人对这个职位的重视程度。

更好的方式

比起知识收集型问题,推荐问开放式的问题,比如:

  • 大家都熟知的,一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?

  • 谈一下你所知道的(页面)性能优化方法?

关于手写代码

当然相对推崇的方式是考察候选人手写代码的能力,比如:

  • 前段时间很火的,翻转二叉树,https://leetcode.com/problems/invert-binary-tree/ 


  • 面试杂谈

不过说实话,手写代码个人认为是挺变态的,如果不是当时这道题火了我也不会去做。

如果临场再让我手写,未必能一次性跑过,所以实现一些相当简单的排序算法个人认为会是一个不错的方式~

其它情况

有些情况下,由于初级岗位往往需要先经过一轮电话面试做初筛,没法考察候选人的手写代码能力。

而且对于一些准备充分的题霸,知识收集型问题和开放式问题都不太适用,我会选择问数学题。

举个很简单的例子:x ^ 3 = 3,估算x的值,精确到小数点第1位(^是次方);

其实这是一道非常非常简单的题目,但在实际的面试过程中,不到20%的人能在不提示的状态下快速估算出答案,这个通过率对于初筛还是比较合适的;

先卖个关子,你算出来了吗?

为什么要问这种题目

  1. 能在网上搜到的答案或方案的问题都不能算是好问题,实际工作中我们常常会遇到一些没有现成解决方案的问题,或者说国外有解决方案但是自己水平不够,不能通过快速阅读英文,比如去:google、quora、stackoverflow来找答案解决的问题

  2. 我们都学过根号2 ≈ 1.414,根号3 ≈ 1.732,所以对于这种变种题,往往可以快速判断候选人的应变能力~

  3. 数学是一切学科的根本,尤其是计算机

延伸

上面这道题其实太简单了,觉得没有难度的同学可以算一下类似的一道题:2 ^ x = 10,估算x的值,精确到小数点第1位~

  • 提示思路1:

  1. 3 < x < 4

  2. 2^3.5 ≈ 8*1.414 > 10

提示思路2:

  1. 题目转换为估算 2^x=1.25

  2. 能否估算 2^(1/4) 和 2^(1/3)

提示思路3:

  1. 5/4=1.25

  2. (5/4)^3=125/64=1.953125近似于2

答案:

  1. 2^(1/4) < 1.25 < 2^(1/3)

  2. 3.25 < x < 3.3333

补充

最近学到另外一种面试技巧,就是不设具体的问题,从对所需候选人能力的一些范畴上定义出,需要一个啥样人的大概框架~

常见的范畴:

  • 代码掌控力

  • 工程化能力

  • 解决问题能力

  • 技术广度

  • 技术敏锐度

  • 技术影响力

把这个框架的目标同步给候选人~然后让他讲述自己的工作经历~并把经历往框架上套,然后说服面试官雇佣自己~

友情链接

常见面试题;

  • FE-interview

  • Front-end-Developer-Questions

  • Front-end-Developer-Interview-Questions

  • node-interview

顺便安利一下leetcode,不忙的时候解解各类经典题目

支持多种语言包括js,当场跑case,难易可选,能看通过率、耗时还有解法讨论~

——————————————————

长按二维码,关注大转转FE

                                    面试杂谈