跳到主要内容

关于面试题

先阅读 什么是面试 理解面试的核心概念。

面试题的作用是什么?

面试题的本质是在有限时间内实现面试双方最大信息量对齐的工具。主要作用包括:

  • 标准化评估:让不同候选人在相同标准下竞争,减少主观因素影响。
  • 时间高效:相比于实际工作考察,面试题可以在短时间内测试多个能力点。
  • 数据驱动:公司可以通过面试题的表现数据分析招聘质量,优化后续面试流程。

如何判断面试题的好坏?

一个好的面试题应该具备以下特征:

维度核心问题解释举例
有效性(Validity)能否准确评估目标能力?候选人花的每一分钟都要被“测到点子上”,不能考与岗位无关的冷知识实现防抖函数
背出HTTP状态码
信度(Reliability)不同面试官是否能给出一致评价?面试官需要明确评分Rubric,而不是凭感觉打分✅答案包含要点清单,如React性能优化必须提到useMemo/useCallback场景
区分度(Discrimination)是否能区分不同水平的候选人?题目应有层次,既能让新人回答基础点,也能让高手展示更深见解✅“优化React组件性能”→初级说shouldComponentUpdate,高级能讲Fiber架构
时间合理性(Efficiency)能否在合适时间内完成?面试者需要在5–30分钟内有效展示能力,而不是写一个大项目✅小型算法题/场景调试题
贴近实际(Relevance)是否符合岗位实际需求?候选人应该觉得这就是工作里会遇到的,而不是纯学术题设计一个前端监控SDK的核心功能
❌用Haskell写个排序

面试题的种类

基于 布卢姆教育目标分类学和**知识类别(事实性知识、概念性知识、程序性知识、元知识)**的面试问题评估表。

  1. 事实性知识 术语、语法、定义(如 this、事件机制)
  2. 概念性知识 模型、原理、比较(如 闭包 vs 类封装)
  3. 程序性知识 代码实现、调试、优化(如 实现事件委托、防抖节流)
  4. 元知识 策略、思维、设计(如 性能优化策略、框架对比、系统设计)

初级岗位:记忆 / 理解 / 应用 高级岗位:分析 / 评价 / 创造

知识类别 \ 认知层次记忆(Remember)理解(Understand)应用(Apply)分析(Analyze)评价(Evaluate)创造(Create)
事实性知识(Factual Knowledge)
(具体术语、定义、语法规则等)
✅ 能准确记住术语、定义,例如:“JavaScript 中 this 指向什么?”✅ 能用自己的话解释概念,例如:“解释 this 在箭头函数中的行为。”❌ 不适用于应用层面❌ 事实性知识通常不涉及分析❌ 事实性知识本身不适用于评价❌ 事实性知识不涉及创造
概念性知识(Conceptual Knowledge)
(原理、模型、关系、理论等)
✅ 能回忆核心概念,例如:“描述闭包的定义。”✅ 能解释概念的原理,例如:“为什么闭包可以保持外部变量的引用?”✅ 能用该概念解决问题,例如:“在 JavaScript 中如何用闭包实现私有变量?”✅ 能区分不同概念,例如:“闭包和类的封装有什么异同?”✅ 能判断何时使用,例如:“闭包在前端开发中有哪些适用场景?”❌ 通常不创造新概念
程序性知识(Procedural Knowledge)
(步骤、技能、算法、代码编写等)
✅ 记住代码语法,例如:“写出 JavaScript 事件监听的语法。”✅ 能解释代码如何执行,例如:“解释 addEventListeneronclick 的区别。”✅ 能正确使用某个方法,例如:“实现一个事件委托机制。”✅ 能分析代码的执行流,例如:“为什么这段代码会导致内存泄漏?”✅ 能优化代码,例如:“如何优化这段异步请求代码的性能?”✅ 能编写新方案,例如:“设计一个更高效的事件监听系统。”
元知识(Metacognitive Knowledge)
(认知策略、代码优化思维、调试能力等)
✅ 记住常见的调试方法,例如:“列举 JavaScript 常见的调试工具。”✅ 能理解调试策略,例如:“如何判断某段代码是否有性能问题?”✅ 能应用调试技巧,例如:“使用 Chrome DevTools 定位某个内存泄漏问题。”✅ 能分析代码优化策略,例如:“分析异步编程的不同实现方式及其适用场景。”✅ 能评估不同技术方案,例如:“比较 Vue 和 React 的虚拟 DOM 机制。”✅ 能创新优化策略,例如:“如何设计一个更好的前端缓存方案?”

如何使用这张表

  1. 面试官角度

    • 设计问题时,明确希望考察的知识类别和认知层次。
    • 根据职位要求,决定重点考察哪个层次的能力。例如:
      • 初级开发者:重点考察事实性知识、概念性知识记忆、理解、应用层级。
      • 高级开发者:需要考察程序性知识、元知识分析、评价、创造层级。
  2. 候选人角度

    • 准备面试时,可以通过这张表判断自己是否掌握了各层次的知识。
    • 回答问题时,尽量展示更高层次的能力,例如不仅仅回答“闭包是什么”,还要补充“闭包如何在实际项目中优化性能”。

这张表可以作为面试评估的参考框架,你可以根据自己的实际需求进行调整。如果你有具体的职位或者面试方向,我可以进一步优化这张表。