Skip to content
On this page

如题,“我为公司招来的前端转正了”。准确来说,是转正好一段时间了,不知你 2023-01-01 之后新的一年有什么打算,或者定了什么目标,如果还没开始,还有一次机会,那就是春节,春节过后你可以说新的一年,新的作为。至于我,这是春节前的最后一篇。想谈谈从一个疯狂敲代码的 coder ,接到团队要招人的任务之后,一些观念的转变。聊一聊我对如何成为一名合格的前端面试官 甚至是如何成为前端面试官的一些非常浅薄的体会。春节之后,“金三银四” ,如果你要跳槽或者要做面试官,不管面试与被面试,以下内容会有点帮助

为什么是为公司招

那一次招聘工作,我的职责就是,技术面试,一面二面 的部分,

md
1、负责系统 WEB 前端设计、开发、维护与优化;
2、负责微信公众号、支付宝小程序的开发、维护与优化;
3、负责搭建高性能、高可用和安全的前端开发框架,持续提升前端开发的效率和质量;  
4、与后端工程师对接共同协作完成项目,打造用户体验好的产品。
5、熟悉 Html5、CSS3、JS、Ajax 以及移动端 H5 以及小程序开发相关技术等;
6、Vue 框架,有 uniapp 开发以及上线经验
7、思维与分析能力

当然了,这不是我写的,而是我们团队的大领导发我的,有可能是HR角色写的,简单分析一下这几条

  • 1、系统 web 前端设计,这是很老的词汇了,前端现在有很多 “下一代” “现代化” “3.0” 之类的概念,显然写这段话的人不懂前端的发展进程和目前的现状
  • 2、我有的业务是在写公众号小程序 等等,但是这条有点强调上层的实现,没有注重候选人的编程功底
  • 3、开发质量和效率的提升确实需要小组内所有前端思考,但是在业务之上的背景下,要搭建前端开发框架,是一件很难的事情
  • 4、“与后端工程师对接” 这点讲的应该是团队间的协作,但一个产品的落地是不仅仅这些角色,有可能写这段话的人是站在后端的角度
  • 5、6、我觉得这点才是,和候选人息息相关的事项
  • 7、则是站在代码开发之外,判断一个的思考能力

直到这次工作任务结束,慢慢我发现,招人这项活真的是给公司招,自己喜欢的并不是适合的。2022年7月份到现在过去很长时间,现在想想有几个候选人真的是自己比较喜欢的。 前几年我是比较注重 知识的 广度。所以新的东西总会简单的看看,认为不了解就不是大佬。(当然了,这种想法是很想当然的),正是因为自己前期学习的时候,方向太乱,所以遇到会点 vue 的,和会点 react 的,我都能聊,不至于冷场、或者尬场。但是这种会点这,会点那的,在那段时间我真的态度发生了很大的变化,从一个应试者的心态,变成考察者。自己作为面试官,也会思考,我们这个组需要什么样的人,而自己由喜欢什么的候选人。后来,我就专注 vue 这块内容。有一些会点这会点那的,反而不是很加分,但如果我作为一个技术学习者,还是比较欣赏这种人的。

还有一点和大家分享,如何一个岗位,或者说一个团队在知道欠缺什么人之后,那招到人是很快的,没有那么多弯弯绕绕,也可能不需要那么久,整个过程就是合适能干活就行,并么有你寻觅另一半那么久,需要各种纬度的考量。

直到整个工作结束,我还有一种 就这? 不再看看了,不再多选几个候选人,就这了?

前期的准备

上文提到的称为前端面试官,争取每场面试结束不会被候选人 ma ,所以还是需要正儿八经的准备一下。我拿到任务后,把领导需要的人,拆解了一下

1、专业方面:

  • 3 年 本科 中级以及以上 踏实 配合
  • html5 css3 js
  • 移动端 小程序
  • 逻辑分析、问题解决、业务敏感
  • 熟悉工作流

2、效率方面

  • 性能
  • 安全
  • 协作

3、前端生态

  • 微信公众号
  • 支付宝小程序
  • admin
  • uni-app
  • h5 兼容

我的考察角度

作为一面二面 的主要考察者,我不像一些 圈外人 给你聊有的没的,我会严格秉持 html css js 这三个有一个不过关没事,但是如果有 2 个或者以上,那肯定是被 pass 掉的。刚好 2022 这一年(招聘是在 2022-07 月份进行的)我抽时间看了

https://html.spec.whatwg.org/ 关于 html 的考察肯定是跑不掉了,也看了基本 css 的小书和册子,

接着就是明确候选人的能力:

0、前端相关的专业技能 1、我觉的是中级左右,可以左也可以右 2、我其实是希望招一个比我厉害些的,但事实是团队并不需要 3、除了 html css js 上层的框架 vue 等等,以及生态中的内容,了解的越深刻越好,不是越广越好,不能是简单的知道 4、要对业务有一定理解

一些考察点

在草草整理了上述信息后,我根据自己的学习途径和一些业务经验,梳理出了以下不同纬度的考察点,这也是当时这么做的,希望对你有帮助

html 8 分钟

https://html.spec.whatwg.org/ ,当然了以下的内容是一些关键的思路,并不是严格意义上的面试题

我首先新建了一个 index.html 文件,一个 ! 出来,这样很容易和候选人打成一片,因为这是大家都知道的事,(倘若这个不了解,那可能简历投错了)

html
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="" />
  </head>
  <body>
    <script></script>
  </body>
</html>

从上往下看,

  • 了解 html 的文档模型吗 /
  • 几种模式 浏览器标准模式 (standards mode) 、几乎标准模式(almost standards mode)和怪异模式 (quirks mode) 之间的区别是什么?

https://html.spec.whatwg.org/#the-doctype

  • linkscript
  • DOMContentLoaded,load,beforeunload,unload / 页面的生命周期
  • <script><script async><script defer> 的区别
  • html5 新增了哪些内容
  • 音视频 video audio 定位 地址定位 WebSocket 表单空间 存储 canvas
  • 语义化的标签 路径 control
  • Video 标签的属性
  • 浏览器存储的异同
  • vue生态之一Vuex,一些通用的数据怎么流动与存储的
  • Vuex token 延伸问题
  • 使用 data- 属性的好处是什么
  • attributeproperty 的区别是什么?
  • Img 的所有属性 srcset
  • Src 访问地址异常
  • Src href 的区别
  • 行内元素 块级元素

css 8 分钟

有关css,考察的内容分为基础 css 和 css3 相关的内容。我之前学习了一本小册子,写的很好 《玩转 CSS 的艺术之美》玩转 CSS 的艺术之美

  • css 重置问题 :reset 和 normalizing
  • 选择器有哪些 优先级怎么计算的
  • 选择器的 群组选择器 兄弟选择器 后代选择器 伪类选择
  • 伪类和伪元素有什么区别
  • css3 弹性盒子 动画 新增了圆角边框 选择器 阴影渐变 过渡 媒体查询
  • transition 做什么的
  • Transform 是做什么的
  • 居中布局的设计
  • Margin auto 怎么实现居中的
  • 盒模型 Border-box 几个值
  • 清除浮动
  • BFC
  • 高度坍塌、塌陷问题
  • Css 的单位
  • css 的颜色
  • css 的预处理器
  • Vue 的 scoped 怎么实现样式隔离的
  • Display 的值
  • CSS 动画和 JavaScript 动画的优缺点
  • 媒体查询
  • 定位相关
  • css3 布局方案

javascript 8 分钟

有关 js,怎么考察,如果你没有技术积累的话,确实不知道怎么和候选人唠,这个在一些言语间,能深刻判断候选人的技能等级。如果你身边有电脑,或者方便看一些线上的文档,推荐你别看一些博客总结,那种老长老长的。

在准备考察js 的时候,最好准备几个 tab 页面,最好是线上的方便打开。 举个例子,但你看着目录大纲的时候,大体知道该问些什么,当遇到自己也模棱两可的时候,可以直接看一下,以下摘抄一下 es6 部分关键问题

主类别子类别ABC
JavaScriptES6let vs const代码块
^^^for 循环的计数器
^^^变量提升现象
^^^暂时性死区 temporal dead zone,简称 TDZ
^^^作用域:全局 函数 块级
^^^声明变量的方法 var function let const import class
^^async谈谈ES2017中的async 函数《ECMAScript 6 教程》
^^^async 函数对 Generator 函数的改进之处体现在《ECMAScript 6 教程》
^^^async 函数的实现原理《ECMAScript 6 教程》
^^classconstructor() 方法
^^^extends 关键字实现继承
^^^为什么子类的构造函数,一定要调用 super()
^^^ES6 的继承机制与 ES5 的继承机制

整个js 包括基础的 js;扩展的js;高级进阶的 js;es6 等等,甚至是运行时node typescript

  • 你是怎么理解JS
  • 你所了解的JS是怎么样的,宿主环境 浏览器环境和 node 环境的不同
  • 变量的类型等等
  • 怎么理解 ES6
  • const let var class 类 模块字符串 箭头函数
  • 暂时性死区
  • 构造函数和普通函数的区别
  • New 具体做了什么
  • es6 的理解,新增的了哪些内容
  • 你怎么理解前端的模块化
  • module.exports =
  • 数据类型
  • 基本的类型 复杂的类型
  • === == null undefined判断是数组啊等等
  • 几种循环的方式 有什么不同 怎么终止循环 遍历对象 遍历数组
  • 事件代理
  • js 中的 this
  • 解释 Ajax 的工作原理
  • 事件循环 (event loop)
  • 继承
  • Call apply
  • 你对 promise 的理解
    • 状态
    • 过程
  • 浏览器
    • 浏览器存储的不同
    • 输入 URL 到整个网页加载完毕及显示在屏幕上的整个流程
    • 重绘回流
  • 主框架 VUE
    • 什么时候接触到的 vue 怎么学习的 完整的 vue 文档有没有读过
  • 主 UI
    • 有没有看过 elementui 的源码
    • Vue 的理解 双向数据绑定
  • 技术生态:
    • 移动 H5 的适配
    • 微信小程序 uniapp 的开发遇到的问题
  • 工具相关
    • 工作流 git
    • 构建 webpack 模块化

其他

  • 前端发展很快,怎么保持学习
    • 读过哪些前端相关的书籍,包括不限于 JS ,对你的技术有哪些帮助
    • 有没有博客,有结识社区里一些前辈吗,对你的前端认知有哪些提升
    • 对 vue 最新的生态,有哪些关注,有没有尝试应用在项目中,或者工作之余有没有自己写过案例 demo
  • 业务棘手问题
    • 有没有遇到过,场景是什么,是怎么处理的
    • 技术挑战怎么解决的
  • 协作问题
    • 如果你参与到一个项目中,发现他们使用 Tab 来缩进代码,但是你喜欢空格,你会怎么做

一些体会

面试官 要和 候选人 一样,在准备面试工作之前,需要做一些必要的准备,比如上文提到的

  • 1、公司、团队、小组、需要什么样的人
  • 2、对候选人的要求:技术要求、等等
  • 3、准备一些要考察的关键点,上文的html css js 基本能过滤掉一部分不认真对待这次机会的人。接着就是一些上层的考察:打包工具、框架、生态等等
js
// 算法 https://leetcode.cn/problems/two-sum/
// 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。
// 考察算法的话,问问这一道就行

一是能知道对方有没有对算法有认知,还有就是一些逻辑的想法,还有前端写代码用到的设计模式,这里就不详细的说了。

4、找到合适的候选人,取到简历,有可能是你自己聊来的简历、或者hr 同步给你的,或者你的同事给你的

5、然后进行简历的筛选,一般我会分为几类:

  • 简历写的花里胡哨,啥都会的这种
  • 简历相对真诚的

微信公众号 前端诗人