How To Interview Someone

几条思路

  • 题目要考察面试者亮点,可以从一个知识点延伸到另一个知识点,考察知识面、知识深度和知识网络
  • 考察对新知识、新技术的理解时,要把握住其所解决的问题,并能掌握同类技术间的优劣势,有自己的识别判断能力
  • 对面试者有犹豫,可以过可以不过的话,那就不过,要招聘令我心动的好同事
  • 能够系统地描述知识的能力,能否在上层进行归类的能力。比如http 3xx 表示重定向,再看具体的 302 和 304

不同轮次的面试

  • 初试 – 工作能力
    • 专业基础和原理
    • 软件工程/项目管理
    • 领域的经典问题和解决
    • 团队协作
    • 执行力
    • 创新能力
  • 复试 – 成长潜力
    • 对职业的兴趣和热情
    • 学习能力
    • 抗压能力
    • 自我认识
  • 终试 – 个人素养
    • 专注但又不自我设限,相比于急躁和自我设限
    • 自我驱动
    • 解决问题,以结果为导向
    • 团队融入
    • 管理能力

知识链路/网络

  • 前后端交互 ==> Ajax ==> JSONP ==> 跨域 ==> 前端安全
  • 从 HTTP/Cookie/Ajax ==> JSONP ==> JSON ==> js object ==>js 继承实现和作用域

开始

  1. 自我介绍,简洁连贯,突出亮点。让面试者放松下来
  2. 基础知识,包含知识广度 + 知识深度 + 知识网络的联系度
  3. 常用技术,HTTP、Ajax/Jsonp、Cookie,跨域
  4. 项目经历和经验
  5. 项目流程(从需求产生到项目上线的完整流程如何)和前端开发的工作流
  6. 询问其擅长点和薄弱点,面向简历和面试题考察
  7. 个人开发环境(操作系统,编辑器,浏览器,常用工具,linux 熟悉等)
  8. 你还有什么问题要问?控制问题数量
  9. 面试者的职业生涯是否有一定的想法,以及配合的行动呢
  10. 面试者说说个人的竞争优势和劣势,如何考虑和对待这些劣势
  11. 说说印象最深的项目经历,或者最有价值的工作产出

面试者的关注点

  1. 前端团队的规模与分工方式
  2. 团队是什么样的氛围,公司是怎么样的文化

考察能力

  • 个人学习能力和对工作的热爱
  • 理解能力
  • 表达能力
  • 思维逻辑能力和抽象能力
  • 判断能力

Javascript

  1. 原型和继承,以及 Javascript中的 OOP 如何实现
  2. 作用域、闭包、this
  3. Javascript 模块化开发
  4. Javascript 动画原理
  5. Javascript 模版引擎
  6. Javascript 类库
  7. MV* 框架的认知和理解
  8. Javascript 异步编程

RegExp

  1. 量词体系 {} ? * +
  2. char classes \d [a-z]
  3. 贪婪 和 懒惰 ?
  4. 位置 ^ $ \b
  5. 模式 i g m
  6. 分组 () (?:)
  7. 环视(决策增强) (?=) (?!)

DOM(BOM)

  1. DOM 常见NODE节点类型
  2. DOM API(DOM查询、DOM操作、事件、CSS操作、DOM事件)
  3. Ajax 技术?浏览器提供的以异步方式进行HTTP请求响应的API
  4. 常见的跨域解决方案(JSONP、后端跨域,HTML5跨域、iframe跨域、domain跨域)
  5. Form 表单操作
  6. URL 相关操作
  7. Cookie 操作

CSS

  1. CSS 盒模型基础(box-sizing)
  2. 常用布局:普通(文档)流、浮动、定位、多列、弹性盒模型、IFC BFC FFC
  3. 块级 和 行内元素,display 的可选值
  4. CSS 规则的权重计算
  5. CSS3 增强(指令、选择器、属性…)
  6. 回流和重绘,以及CSS性能优化
  7. 组件化开发 和 Web Components

Html

  1. 对HTML中的标签进行总结归类,有何思路
  2. HTML5 增强了哪些:多媒体、Form表单、语义化标签、HTML API

相关领域

  1. 新的规范,ES5、ES6、ES7、CSS3、HTML5 API
  2. 浏览器原理
  3. HTTP原理和缓存机制
  4. 性能优化
  5. 前端安全,XSS\CSRF\HTTPS
  6. 自动构建,grunt\gulp\fis\webpack
  7. 文档编写
  8. 单元测试
  9. 后端 OR Nodejs,命令行、Express、Koa
  10. 代码的可维护性
  11. 系统设计