一般来说会问如下几方面的问题:

  • 做过最满意的项目是什么?
  • 项目背景

    • 为什么要做这件事情?
    • 最终达到什么效果?
  • 你处于什么样的角色,起到了什么方面的作用?
  • 在项目中遇到什么技术问题?具体是如何解决的?
  • 如果再做这个项目,你会在哪些方面进行改善?

技术一面主要判断对基础知识的掌握

  • 描述一个你遇到过的技术问题,你是如何解决的?

    • 这个问题很常见,有没有遇到过很不常见的问题?比如在网上根本搜不到解决方法的?
  • 是否有设计过通用的组件?

    • 请设计一个 Dialog(弹出层) / Suggestion(自动完成) / Slider(图片轮播) 等组件
    • 你会提供什么接口?
    • 调用过程是怎样的?可能会遇到什么细节问题?

技术二面主要判断技术深度及广度

  • 你最擅长的技术是什么?

    • 你觉得你在这个技术上的水平到什么程度了?你觉得最高级别应该是怎样的?
  • 浏览器及性能

    • 一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?越详细越好

      • (这个问既考察技术深度又考察技术广度,其实要答好是相当难的,注意越详细越好)
    • 谈一下你所知道的页面性能优化方法?

      • 这些优化方法背后的原理是什么?
      • 除了这些常规的,你还了解什么最新的方法么?
    • 如何分析页面性能?

其它

  • 除了前端以外还了解什么其它技术么?
  • 对计算机基础的了解情况,比如常见数据结构、编译原理等

兴趣相关

  • 最近在学什么?接下来半年你打算学习什么?
  • 做什么方面的事情最让你有成就感?需求设计?规划?具体开发?
  • 后续想做什么?3 年后你希望自己是什么水平?

主动性相关

  • 在之前做过的项目中,有没有什么功能或改进点是由你提出来的?
  • 是否有参与和改进其它开源项目

还有些与话题无关我就不转了。

考查要点:

  • 对 Web 标准的理解
  • 浏览器差异
  • CSS 基本功:布局、盒模型、选择器优先级及使用等
  • Javascript 基础、JS 面向对象实现原理、闭包机制、作用域

通常可以做一些小练习来判断 TA 的水平,JS 虽然很灵活,但是具体的实现方式能体现出一个人的全局观,随着代码规模的增长,复杂度增加,如何合理划分模块实现功能和接口的能力比较重要。这里有一份前不久我出的试题,难度不算大,另存为 HTML。

自己总结的面试题,感兴趣的看下。

HTML + CSS

  1. 盒子模型,块级元素和行内元素特性与区别。
  2. 行内块的使用,兼容性解决。
  3. 清除浮动的方式以及各自的优劣。
  4. 文档流的概念、定位的理解以及 z-index 计算规则 & 浏览器差异性。
  5. CSS 选择器以及优先级计算。
  6. 常用的 CSS hack。
  7. 遇到的兼容性问题与解决方法。
  8. 垂直水平居中的实现方式。
  9. 常用布局的实现(两列布局、三列适应布局,两列等高适应布局等)。

Javascript

  1. 犀牛书封面的犀牛属于神马品种?(蛋逼活跃气氛用...)
  2. 常用的浏览器内核。
  3. 常用的 DOM 操作,新建、添加、删除、移动、查找等。
  4. String 与 Array 常用方法。
  5. 设备与平台监测。
  6. DOM 的默认事件、事件模型、事件委托、阻止默认事件、冒泡事件的方式等。
  7. jQuery 的 bind、live、on、delegate 的区别(考察点与上一条重叠,切入点不同)。
  8. JS 变量提升、匿名函数、原型继承、作用域、闭包机制等。
  9. 对 HTTP 协议的理解。
  10. Ajax 的常用操作,JS 跨域的实现原理。

HTML:

  • 语义标签
  • 语义化

CSS:

  • 动态居中
  • 动画
  • Bootstrap 样式类
  • Preprocessor
  • 兼容性 Hack 与特征检测
  • CSS3 属性与性能

JS:

  • Name hoisting
  • Prototype
  • Closure
  • Main loop
  • Promise
  • Delegation
  • Cross domain

Mobile:

  • 渐进增强
  • 移动端交互
  • 兼容性问题
  • Debug 工具 方法

性能:

  • JS
  • Cache control
  • 性能测试

开发者 - 行业视野

  • Libs and Frameworks
  • NodeJS
  • 开发工具与效率
  • Workflow - Grunt and all
  • Github
  • Sites Projects Blogs

工程师 - 产品与团队

  • Architecture
  • UT E2E
  • 响应式设计
  • 系统化设计
  • 需求评审
  • 代码管理 - Git SVN 运维
  • 项目管理 - 项目评估 任务分解 追踪方法
  • 团队管理 - 标准 流程 文档建设
  • 技术影响力
  • 职业发展规划

面试者提问

  • 对面试的评价
  • 理解偏差最大的地方
  • 擅长却没有发挥出来的地方
  • 期望薪资
  • 期望职责
  1. 主体是看简历发挥,对方写什么就问什么为主:框架、库、浏览器工作原理、NLP、算法、HTTP...
  2. 辅助问题几乎是我个人必备的问题:为什么做前端,学习前端过程。