本次面经共 1 轮。每轮单独成文;轮次标题重复时,以“第 N 轮”和稳定的轮次 ID 区分。
轮次导航
- 第 1 轮 · 一面(32 道题)
← 已是第一轮 · 返回本次面经 · 已是最后一轮 → 本轮概述: 一共三轮面试,经过整理后形成该面经。 主要考察了候选人的实习经历、项目经验以及对前端工具和技术的理解。问题涵盖了从Vite插件开发到模块管理等多个方面,重点测试了候选人的实际操作能力和对技术细节的掌握。 本轮要点: 本次面试深度考察工程化全链路能力(Vite插件开发/预构建/HMR原理)、性能优化实战(INP项目包体积↓40%/LCP时间↓50%)、跨端架构设计(JavaScript Bridge通信/兼容性治理)及模块化高级应用(单例设计/循环依赖检测)。难点聚焦于pnpm幽灵依赖治理、Vite HMR全流程解析及Node.js运行时设计思想。 本轮共 32 道题。答案默认折叠,便于先自行作答。 1. 请介绍你在乾象、腾讯的实习经历,包括实习期间遇到的难点和亮点。 题目要点 实习经历, 项目背景, 技术挑战, 解决方案, 成绩, 亮点 参考答案 可以从项目背景、具体职责、遇到的技术挑战及解决方案等方面进行阐述。同时,可以分享一些在实习中取得的成绩或亮点,比如优化效果、团队协作等。 2. 现场实现一个最近开发的模块/组件,例如 URL Filter。 题目要点 设计思路, 实现过程, 单元测试, 代码示例 参考答案 可以详细描述这个模块/组件的设计思路、实现过程以及如何进行单元测试。如果可能的话,还可以展示一些代码片段来说明关键部分。 3. 在实习期间开发的 Vite 插件的功能是如何实现的? 题目要点 架构兼容性:理解 Vite 插件如何复用 Rollup 钩子并扩展开发环境特有的 Server 钩子。 钩子应用场景:能够准确区分 config(配置修改)、resolveId/load(路径解析)、transform(代码改写)的应用边界。 AST 与代码转换:掌握如何通过 AST 操纵实现对代码的无损增强,并维持 SourceMap 的连续性。 环境控制:利用 configureServer 扩展中间件,以及通过 handleHotUpdate 实现精准的热更新控制。 虚拟模块技术:利用虚拟模块机制实现编译时信息的动态注入。 参考答案 Vite 插件的实现本质上是基于 Rollup 插件接口的扩展,并结合了 Vite 特有的开发服务器钩子。可以从插件系统的架构设计、生命周期钩子(Hooks)的执行时序、以及针对开发环境与生产环境的差异化处理三个维度进行回答。 ...