字节跳动(番茄小说)前端一面挂整理笔记(三十九)
1. 项目和实习工作中,如何体现主观能动性、问题背景理解和架构探索
答案
如果项目里既提过 Webpack 又提过 Vite,建议先说明主用哪一个,再对比原因。
- Webpack 生态更老更全,适合历史项目和高度定制场景。
- Vite 开发态基于原生 ESM,冷启动和热更新通常更快,适合现代前端项目。
- 如果面试官追问,一定补上:开发态和生产构建的策略不一样,不能只说“Vite 更快”。
2. hook 和工具函数的区别,为什么要用自定义 hook 而不是普通工具函数
答案
如果这里指 Vue3 的组合式逻辑,本质是把“状态、计算属性、副作用、复用逻辑”从 Options API 的配置项里拆出来,用函数组织。
- 好处是相关逻辑可以按业务能力聚合,而不是被
data/computed/methods/watch分散。 - 适合复杂组件、跨页面复用、抽离表单逻辑、请求逻辑、滚动监听、权限判断等。
- 自定义 hooks / composables 适合复用“带状态和生命周期”的逻辑;纯计算逻辑则更适合普通工具函数。
3. 前端框架的意义
答案
前端框架的核心意义是降低复杂 UI 和状态管理的成本。
- 它提供组件化和声明式开发方式。
- 帮助我们更稳定地管理状态、更新和复用逻辑。
- 项目规模一大时,没有框架会更难维护。
4. diff 和如何降低多叉树复杂度
答案
前端框架里的 Diff 不是做最优树编辑距离,而是做工程上的折中。
- 通常按同层比较,不做跨层复杂匹配。
- 列表场景依赖
key标识稳定节点。 - 这样可以把复杂度降下来,同时保证大多数场景性能可接受。
5. 找出无序数组的连续区间
答案
这题一般先排序或借助集合,再找连续段。
- 如果允许改顺序,排序后从小到大扫描,相邻差值为 1 就归到同一段。
- 如果要保留原数组不动,也可以先放进
Set,从每个可能的起点开始向后扩展。 - 核心是找到每段区间的起点和终点。
6. 如何使用 AI 工具,使用哪些编译器,项目编译前后分别是什么
答案
AI 相关题最好回答成“工具边界 + 落地方式”。
- AI 适合做样板代码、重构建议、测试用例、文档整理和方案对比。
- 真正落地时要给它足够上下文,比如代码规范、目录结构、接口文档、历史实现和约束规则。
- Skills / MCP / Agent 可以理解为不同层级的能力扩展:Skills 偏可复用能力包,MCP 偏工具和上下文接入协议,Agent 偏任务编排和执行过程。
- AI 不能代替工程判断,核心链路仍然要靠人 review 和兜底。
7. Vite、Webpack 如何配置
答案
如果项目里既提过 Webpack 又提过 Vite,建议先说明主用哪一个,再对比原因。
- Webpack 生态更老更全,适合历史项目和高度定制场景。
- Vite 开发态基于原生 ESM,冷启动和热更新通常更快,适合现代前端项目。
- 如果面试官追问,一定补上:开发态和生产构建的策略不一样,不能只说“Vite 更快”。