面试杂谈
前言
其实关于面试一直是一个老生常谈的话题,尤其是前端岗位的面试。个人自己的面试和被面试经验来说,大部分情况下的面试者都喜欢问一些知识收集型的问题,比如:
浏览器差异与检测
CSS hack
如何解决跨域
当然不是说这类问题不应该问,如果候选人的项目背景有写解决过类似的问题时;
适当追问有多少种不同的解决方案,为什么选择其中某种——能很好的考察候选人在积累知识过程中的深度、广度还有思维模式~
但是对于一些初级岗位的候选人或者毕业不久的校招生,问这类问题无非是增加尴尬。
那么要怎么做
如果非要问初级职位候选人一些知识收集型的题目,推荐问一些比较基础的,比如:
HTML5新增了哪些tag,和input类型
CSS选择器有多少种,优先级排序
JS闭包,浏览器的事件模型
这些问题的最大价值在于考察候选人对这个职位的重视程度。
更好的方式
比起知识收集型问题,推荐问开放式的问题,比如:
大家都熟知的,一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?
谈一下你所知道的(页面)性能优化方法?
关于手写代码
当然相对推崇的方式是考察候选人手写代码的能力,比如:
-
前段时间很火的,翻转二叉树,https://leetcode.com/problems/invert-binary-tree/
不过说实话,手写代码个人认为是挺变态的,如果不是当时这道题火了我也不会去做。
如果临场再让我手写,未必能一次性跑过,所以实现一些相当简单的排序算法个人认为会是一个不错的方式~
其它情况
有些情况下,由于初级岗位往往需要先经过一轮电话面试做初筛,没法考察候选人的手写代码能力。
而且对于一些准备充分的题霸,知识收集型问题和开放式问题都不太适用,我会选择问数学题。
举个很简单的例子:x ^ 3 = 3,估算x的值,精确到小数点第1位(^是次方);
其实这是一道非常非常简单的题目,但在实际的面试过程中,不到20%的人能在不提示的状态下快速估算出答案,这个通过率对于初筛还是比较合适的;
先卖个关子,你算出来了吗?
为什么要问这种题目
能在网上搜到的答案或方案的问题都不能算是好问题,实际工作中我们常常会遇到一些没有现成解决方案的问题,或者说国外有解决方案但是自己水平不够,不能通过快速阅读英文,比如去:google、quora、stackoverflow来找答案解决的问题
我们都学过根号2 ≈ 1.414,根号3 ≈ 1.732,所以对于这种变种题,往往可以快速判断候选人的应变能力~
数学是一切学科的根本,尤其是计算机
延伸
上面这道题其实太简单了,觉得没有难度的同学可以算一下类似的一道题:2 ^ x = 10,估算x的值,精确到小数点第1位~
-
提示思路1:
3 < x < 4
2^3.5 ≈ 8*1.414 > 10
提示思路2:
题目转换为估算 2^x=1.25
能否估算 2^(1/4) 和 2^(1/3)
提示思路3:
5/4=1.25
(5/4)^3=125/64=1.953125近似于2
答案:
2^(1/4) < 1.25 < 2^(1/3)
3.25 < x < 3.3333
补充
最近学到另外一种面试技巧,就是不设具体的问题,从对所需候选人能力的一些范畴上定义出,需要一个啥样人的大概框架~
常见的范畴:
代码掌控力
工程化能力
解决问题能力
技术广度
技术敏锐度
技术影响力
把这个框架的目标同步给候选人~然后让他讲述自己的工作经历~并把经历往框架上套,然后说服面试官雇佣自己~
友情链接
常见面试题;
FE-interview
Front-end-Developer-Questions
Front-end-Developer-Interview-Questions
node-interview
顺便安利一下leetcode,不忙的时候解解各类经典题目
支持多种语言包括js,当场跑case,难易可选,能看通过率、耗时还有解法讨论~
——————————————————
长按二维码,关注大转转FE