面试官问“为什么选这个技术栈”,应该怎样回答技术选型?
不要只说“流行”“好用”,而是从业务需求和约束出发:团队熟悉度、项目规模和生命周期、性能与 SEO 要求、生态和长期维护、迁移成本。讲出比较过的备选方案和取舍理由,并承认所选方案的缺点以及怎样应对。
本题是回答思路与示例,不对应某个官方规范。
简答
面试官问“为什么用 Vue 不用 React”,想听的不是两个框架谁更好,而是你做决定时考虑了什么。只回答“Vue 上手简单”“React 生态大”,听起来像是看了别人的对比文章,不像自己做过决定。
好的回答从约束出发。先说项目是什么样的:是后台管理系统还是面向用户的官网,要不要 SEO,预计维护多久,团队几个人、熟悉什么。再说这些约束带来了哪些要求,比如“需要服务端渲染保证收录”“团队大部分人只写过 Vue”。然后说比较了哪些方案,各自在这些要求上表现怎样,最后为什么选了这个。
一定要讲缺点。任何选择都有代价,比如“选了 Nuxt 以后,服务端部署和缓存要我们自己处理,于是我们……”。能说出代价和应对,说明你是真的权衡过,而不是跟风。
如果技术栈不是你选的,就如实说是团队已有的选择,然后讲你理解的原因,以及用下来觉得哪里合适、哪里不合适,如果重新选你会怎么考虑。
一个示例
背景:我们要做一个面向商家的后台管理系统,几十个表单和表格页面,不需要 SEO,预计会持续迭代好几年。团队五个前端,三个人有 Vue 经验,两个人主要写 React。
备选:考虑过 Vue 3 加 Element Plus,和 React 加 Ant Design。两者都有成熟的后台组件库,功能上都能满足。
选择和理由:最后选了 Vue 3。一是团队多数人熟悉,上手快、评审成本低;二是这类表单密集的页面,
v-model写起来比受控组件少很多样板代码;三是用 TypeScript 和<script setup>,类型支持已经够用。代价:两位写 React 的同事需要适应,我们花了一周做内部分享,统一组合式函数的写法和目录规范。另外有一些社区方案在 React 生态更成熟,比如部分图表组件,我们用了框架无关的库来替代。
这个回答的每一条理由都能对应到前面的约束:团队、页面类型、维护周期。换成另一个项目,比如要做面向用户、注重首屏和 SEO 的电商站,同样的思路可能得出“选 Next.js 或 Nuxt 做服务端渲染”的结论。各框架的定位可以参考《选择前端框架时应该先比较哪些约束?》。
常见追问
如果现在重新选,你还会选它吗?
这是在看你会不会回顾自己的决定。可以说“会,理由是……”,也可以说“部分会改,比如状态管理当时用了 Vuex,现在会直接用 Pinia,因为……”。有理有据的反思比坚持说当初完全正确更好。
你们的构建工具、状态管理又是怎么选的?
用同样的思路回答:需求是什么、比较了什么、为什么选、代价是什么。比如构建工具从 webpack 换到 Vite,理由是开发启动和热更新更快,代价是部分老插件要替换,见《Vite 开发模式为什么启动快,生产环境为什么仍需要构建?》。