全栈开发工程师面试问题

作者 Aaron Cao · 更新于

全栈开发工程师面试问题
全栈面试考察的是各层之间的衔接:如何设计与调整 API 契约、登录如何从浏览器一路验证到数据库,以及一个功能如何从数据库结构走到界面。通常会有编码环节、构建功能环节,以及一场横跨客户端与服务端的设计讨论。

全栈面试考察的是各层之间的衔接:如何设计与调整 API 契约、登录如何从浏览器一路验证到数据库,以及一个功能如何从数据库结构走到界面。通常会有编码环节、构建功能环节,以及一场横跨客户端与服务端的设计讨论。

全栈开发工程师面试到底在考察什么?

你可能会担心,全栈面试相当于要在大多数人准备一场面试的时间里,同时准备前端和后端两场完整的面试。这种担心可以理解,但这一节会说明为什么这项工作其实没有看上去那么庞大。面试官很少会重新跑一遍专职前端或后端的题库,他们更关心各层交汇的地方,因为那正是全栈工程师真正体现价值之处。

大多数面试流程会混合四类环节:

  • 编码:一道数据结构题,或是解析、分组、分页记录之类的实际任务,通常用 JavaScript、TypeScript、Python 或 Java 完成。
  • 构建功能:一个小型的端到端任务,例如一个能保存到 API 并显示校验错误的表单,在共享编辑器或带回家的代码仓库中完成。
  • 跨层设计:设计一个类似评论或通知的功能,涵盖数据库结构、API、客户端状态,以及网络失败时会发生什么。
  • 行为面试:讲述你如何把一个功能从工单一路推进到上线,以及你曾跨层追查过的一个 bug。

特定层面的深入问题依然会出现,专门的题库,包括独立的前端和后端工程师面试题页面,收录在面试题库中。本页聚焦于两层之间的部分。

最常出现哪些 API 契约与数据相关问题?

API 是你工作两端之间的契约,因此面试官会从两个角度提问:

  • 你会如何设计一个功能的各个接口,成功和失败时各自返回什么?
  • 如何在不破坏已上线客户端的前提下修改 API?(版本管理、增量式变更、废弃窗口期。)
  • 偏移量分页还是游标分页:活动流该用哪一种,为什么?
  • 如果客户端超时,如何让 POST 请求可以安全地重试?(幂等性密钥。)
  • 对某个客户端来说,选择 REST、GraphQL 还是 RPC,在缓存、过度获取数据和错误处理上会有什么不同?
  • 校验逻辑应该放在客户端、服务端,还是两者都要,哪一方说了算?
  • 当一个列表接口返回嵌套数据时,如何避免 N+1 查询?

好的回答会说明取舍,而不只是给出选择。“用游标分页,因为用户滚动时新插入的行会让偏移量错位并导致条目重复”这样的回答,胜过只是罗列两种方案却不下判断。

身份验证与追踪功能类问题该如何回答?

有两类问题能把全栈候选人和专才区分开来。第一类是端到端的身份验证:说明从用户提交登录表单,到一次已认证的 API 调用成功之间发生了什么。面试官关注的是凭证存放在哪里(Cookie 还是客户端存储)、服务端如何校验、为什么 HttpOnly Cookie 能防止脚本访问、基于 Cookie 的会话需要什么样的 CSRF 防护、CORS 如何影响不同源的前端,以及登出和令牌过期如何处理。

第二类是追踪问题:“用户点击了保存,却什么都没发生,说说你会怎么调试。”好的回答会一层一层推进,从浏览器控制台和网络面板,到请求与响应,再到服务端日志,最后到数据库写入,而不是凭空猜测。

一位在中型 SaaS 公司面试的全栈开发工程师就是典型案例。被问到评论功能会如何实现时,她从数据表开始(评论表包含帖子 ID、作者 ID 和时间戳,并按帖子建立索引),接着用游标分页定义了列表接口,又说明了客户端如何做乐观渲染、POST 失败时如何回滚,最后讲了她会如何防止双击导致重复发帖。她把每一层都讲得很简洁,面试官的追问也正好落在她提到的那些衔接处。

应该如何练习?实时助手能在哪里派上用场?

把追踪过程大声练习出来。挑一个你每天都在用的应用里的功能,从数据库结构一路讲到界面,然后再来一遍,这次加入一个故障:API 变慢了、写入只部分成功了、用户在请求过程中被登出了。可以录下自己的讲解,也可以在 AI 模拟面试中练习,它会根据你说出的答案追问下去。

在真实的面试环节中,SubcueAI 面向 macOS 和 Windows 的桌面客户端可以在面试规则允许辅助的情况下,转录面试官的话并为设计题和行为面试题建议回答结构;Chrome/Edge 扩展覆盖浏览器标签页通话,iPhone 应用则可以监听在另一台设备上播放的通话。诚实的边界在全栈面试中尤其重要:构建功能和编码环节通常在共享屏幕上进行,共享屏幕上的一切都是可见的,因此这类环节不在辅助范围内。有监考的在线测评和公司托管设备同样不在范围内。设置方法见使用教程。

常见问题

全栈开发工程师面试常见的问题有哪些?

预计会遇到关于 API 设计与版本管理、分页、幂等请求、从登录表单到数据库的身份验证、客户端与服务端校验、N+1 查询,以及调试一个在浏览器和数据库之间某处出错的功能等问题。

全栈面试会包含 LeetCode 风格的题目吗?

很多流程会包含一轮数据结构题,但全栈面试更侧重实际任务:构建一个小功能、修复现有代码库中的 bug,或是设计一个横跨客户端与服务端的功能。

准备全栈面试应该主攻哪个技术栈?

职位描述里写的那个。面试官更关心你能否讲清楚请求流程、状态管理和数据建模,而不是你用的具体框架,不过用公司所用的技术栈写代码,能减少构建功能环节中的摩擦。

全栈面试比前端或后端面试更难吗?

更全面而已。你需要能跨层推理,并说明每个衔接处的取舍;单一层面深入到什么程度取决于团队,所以要看职位描述,判断这个岗位更偏向哪一端。

全栈面试中可以使用 AI 助手吗?

在规则允许的情况下,SubcueAI 可以在对话类和设计类环节转录面试官的话,并建议回答结构。共享屏幕编码、录制或有监考的测评,以及公司托管设备都不在使用范围内。

相关问题

← 更多关于 按岗位与主题分类的面试问题