十二月 21, 2025
10 分钟阅读

初级全栈开发工程师面试题:该准备什么

interview
career-advice
job-search
entry-level
初级全栈开发工程师面试题:该准备什么
Milad Bonakdar

Milad Bonakdar

作者

围绕 HTML、CSS、JavaScript、React、Node.js、API、SQL、Git 和调试,准备初级全栈开发工程师面试。


先掌握全栈基础

初级全栈开发工程师面试通常会考察你是否能说明一个简单 Web 应用从浏览器到数据库的工作方式:HTML 和 CSS 负责页面结构,JavaScript 增加交互,React 管理界面状态,Node.js 处理服务端逻辑,API 连接各层,SQL 存储数据,Git 让代码变更可追踪、可评审。

使用这份指南时,先练习简短清晰的回答,再把每个回答和你做过的小项目联系起来。初级岗位一般不要求很深的架构能力,但会看重基础理解、调试习惯,以及能否诚实说明取舍。

如何准备

  • 准备讲清楚一个项目从 UI 事件到 API 请求,再到数据库查询的流程。
  • 不只讲完成的功能,也要能讲你修复过的错误。
  • 回答保持实用:先定义概念,再给一个小例子,并指出一个常见错误。

HTML & CSS

1. 解释 CSS 中的盒模型。

答案: CSS 盒模型是网页布局的基础。每个元素都被表示为一个矩形盒子。

  • 内容 (Content): 实际的文本或图像。
  • 内边距 (Padding): 内容周围的透明区域(在边框内部)。
  • 边框 (Border): 围绕内边距和内容的一条边框。
  • 外边距 (Margin): 边框外部的透明区域(用于创建元素之间的空间)。

常见度: 非常常见 难度: 简单


2. display: blockinlineinline-block 之间有什么区别?

答案:

  • Block (块级元素): 从新的一行开始,并占据可用宽度的全部(例如,<div><p>)。
  • Inline (行内元素): 不从新的一行开始,只占据必要的宽度。widthheight 属性无效(例如,<span><a>)。
  • Inline-block (行内块级元素): 类似于行内元素,但可以设置 widthheight。适用于网格或导航菜单。

常见度: 常见 难度: 简单


3. 什么是语义化 HTML,为什么它很重要?

答案: 语义化 HTML 指的是使用能够传达内容 含义 的标签,而不仅仅是外观。

  • 示例: 使用 <header><nav><article><footer> 而不仅仅是 <div>
  • 重要性:
    • 可访问性 (Accessibility): 屏幕阅读器使用这些标签来帮助视力障碍用户导航。
    • SEO (搜索引擎优化): 搜索引擎更好地理解内容的结构和重要性。
    • 可读性 (Readability): 代码更容易被开发人员理解。

常见度: 常见 难度: 简单


4. 解释 Flexbox 和 CSS Grid。

答案:

  • Flexbox: 一维布局模型(行或列)。最适合对齐容器内的项目或分配空间(例如,导航栏)。
  • CSS Grid: 二维布局模型(行和列)。最适合定义页面的整体布局(例如,页眉、侧边栏、主要内容、页脚)。

常见度: 常见 难度: 中等


JavaScript

5. varletconst 之间有什么区别?

答案:

  • var 函数作用域(或全局作用域)。可以重新声明和更新。会被提升到其作用域的顶部。
  • let 块作用域(仅存在于 {} 内部)。可以更新,但不能在同一作用域中重新声明。
  • const 块作用域。不能更新或重新声明。必须在声明时初始化。默认情况下使用它,除非需要重新赋值。

常见度: 非常常见 难度: 简单


6. 解释 asyncawait

答案: asyncawait(在 ES2017 中引入)使异步代码看起来和行为更像同步代码。

  • async 放在函数之前,它确保该函数返回一个 Promise。
  • awaitasync 函数内部使用,它会暂停执行,直到 Promise 被解析。
  • 优点: 比链接 .then().catch() 更简洁、更易读。

常见度: 常见 难度: 中等


7. 什么是 DOM?

答案: DOM(文档对象模型)是用于 Web 文档的编程接口。它表示页面,以便程序(JavaScript)可以更改文档结构、样式和内容。DOM 将文档表示为节点和对象。

常见度: 常见 难度: 简单


8. ===== 之间有什么区别?

答案:

  • ==(宽松相等): 在进行类型转换(将它们转换为通用类型)后比较值。例如,5 == "5"true
  • ===(严格相等): 比较值和类型。没有类型转换。例如,5 === "5"false
  • 最佳实践: 始终使用 === 以避免意外的错误。

常见度: 常见 难度: 简单


React

9. 什么是 Virtual DOM?

答案: Virtual DOM 是保存在内存中的真实 DOM 的轻量级副本。

  • 过程: 当状态更改时,React 首先更新 Virtual DOM。然后,它将新的 Virtual DOM 与之前的 Virtual DOM 进行比较(差异比较),并计算出更新真实 DOM 的最有效方法(协调)。
  • 优点: 最大程度地减少了对速度较慢的真实 DOM 的直接操作,从而提高了性能。

常见度: 常见 难度: 中等


10. 什么是 Props 和 State?

答案:

  • Props (属性): 从父组件传递到子组件的只读数据。它们使组件可重用且动态。
  • State (状态): 在组件 内部 管理的数据。它可以随时间变化(例如,用户输入、API 响应)。当状态更改时,组件会重新渲染。

常见度: 非常常见 难度: 简单


11. 什么是 React Hooks?说出几个常见的 Hook。

答案: Hooks 是让函数组件使用 React 功能的函数,例如 state、context、refs 和 effects。

  • useState 保存组件本地状态,例如表单输入值或当前选中的标签页。
  • useEffect 让组件与 React 外部的事物同步,例如获取数据或订阅事件。它不应该被用来处理所有计算。
  • useContext 读取共享 context,避免手动把 props 一层层传下去。
  • 面试提示: 提到 Hooks 规则:hooks 应在 React 组件或 custom hook 的顶层调用,不要放在循环或条件语句中。

常见度: 常见 难度: 中等


Node.js & 后端

12. 什么是 Node.js,为什么它是单线程的?

答案: Node.js 是基于 V8 引擎的 JavaScript 运行时。JavaScript 在一个主线程上执行,但 Node.js 仍能处理许多 I/O 密集型任务,因为 event loop 会协调异步工作。

  • 主线程: 执行 JavaScript 回调。
  • 非阻塞 I/O: 文件、网络和数据库操作可以交给操作系统或 libuv,等结果准备好后再继续处理。
  • 重要限制: CPU 密集型 JavaScript 仍然会阻塞 event loop。对于耗时任务,可以使用 worker thread、任务队列,或把它移出请求处理路径。
  • 好例子: 需要等待大量数据库或网络调用的 API 服务器。

常见度: 常见 难度: 中等


13. 什么是 NPM 和 package.json

答案:

  • NPM (Node Package Manager): Node.js 的默认包管理器。它允许你安装和管理库(依赖项)。
  • package.json Node.js 项目的清单文件。它列出了元数据(名称、版本)和依赖项(运行应用程序所需的库)。

常见度: 常见 难度: 简单


14. 解释 GETPOST 之间的区别。

答案:

  • GET: 获取资源。它应该是 safe 的,也就是不主动改变服务器状态;同时也是 idempotent 的,即重复相同请求应产生相同效果。
  • POST: 向服务器发送需要处理的数据,常用于创建资源或触发操作。POST 不保证 idempotent,如果 API 没有保护机制,重复 POST 可能造成重复创建或重复执行。
  • 实际例子: 加载商品列表用 GET;提交订单或创建评论用 POST。

常见度: 常见 难度: 简单


数据库 (SQL)

15. 什么是主键和外键?

答案:

  • 主键 (Primary Key): 唯一标识表中每一行的列(或列的集合)。它不能为 NULL
  • 外键 (Foreign Key): 链接到另一个表的主键的列。它建立两个表之间的关系。

常见度: 常见 难度: 简单


16. 解释 INNER JOINLEFT JOIN 之间的区别。

答案:

  • INNER JOIN (内连接): 返回在 两个 表中都具有匹配值的记录。
  • LEFT JOIN (左连接) (或 LEFT OUTER JOIN): 返回左表中的所有记录,以及右表中匹配的记录。如果没有匹配项,则右侧的结果为 NULL

常见度: 非常常见 难度: 中等


17. 什么是规范化?

答案: 规范化是在数据库中组织数据以减少冗余并提高数据完整性的过程。

  • 目标: 将较大的表划分为较小的表,并使用关系将它们链接起来。
  • 形式: 1NF、2NF、3NF(第三范式通常足以满足大多数应用程序的需求)。

常见度: 不常见(对于初级开发) 难度: 中等


通用

18. 什么是 Git,我们为什么使用它?

答案: Git 是一个分布式版本控制系统。

  • 用途: 它跟踪软件开发过程中源代码的更改。
  • 优点: 允许多个开发人员一起工作(协作),保留更改的历史记录(版本控制),并允许在出现问题时恢复到以前的状态。

常见度: 常见 难度: 简单


19. 什么是 API?

答案: API 代表应用程序编程接口。它是一组允许不同软件应用程序相互通信的规则。在 Web 开发中,它通常指的是 REST API,其中前端(客户端)从后端(服务器)请求数据。

常见度: 常见 难度: 简单


20. 你如何调试 Web 应用程序?

答案: 先复现问题,并缩小范围:问题出在浏览器、网络请求、后端处理逻辑,还是数据库。

  • 前端: 使用浏览器 DevTools:Console 看错误,Network 看 API 状态和 payload,Elements 看 HTML/CSS,必要时使用 React DevTools。
  • 后端: 检查结构化日志、request ID、stack trace、环境变量和数据库查询。如果控制流程不清楚,使用调试器。
  • 好的面试回答: 说明一个你真实修复过的 bug、你先检查了什么,以及如何确认修复有效。

常见度: 常见 难度: 简单

Newsletter subscription

真正有效的每周职业建议

将最新见解直接发送到您的收件箱

在招聘人员面前脱颖而出,获得梦想工作

加入成千上万通过AI驱动的简历改变职业生涯的人,这些简历可以通过ATS并给招聘经理留下深刻印象。

立即开始创建

分享这篇文章

将简历撰写时间减少90%

普通求职者需要花费3小时以上来格式化简历。我们的AI在15分钟内完成,让您以12倍的速度进入申请阶段。