文章目录

字节跳动(番茄小说)前端一面挂整理笔记(三十九)

1. 项目和实习工作中,如何体现主观能动性、问题背景理解和架构探索

答案

如果项目里既提过 Webpack 又提过 Vite,建议先说明主用哪一个,再对比原因。

  1. Webpack 生态更老更全,适合历史项目和高度定制场景。
  2. Vite 开发态基于原生 ESM,冷启动和热更新通常更快,适合现代前端项目。
  3. 如果面试官追问,一定补上:开发态和生产构建的策略不一样,不能只说“Vite 更快”。

2. hook 和工具函数的区别,为什么要用自定义 hook 而不是普通工具函数

答案

如果这里指 Vue3 的组合式逻辑,本质是把“状态、计算属性、副作用、复用逻辑”从 Options API 的配置项里拆出来,用函数组织。

  1. 好处是相关逻辑可以按业务能力聚合,而不是被 data/computed/methods/watch 分散。
  2. 适合复杂组件、跨页面复用、抽离表单逻辑、请求逻辑、滚动监听、权限判断等。
  3. 自定义 hooks / composables 适合复用“带状态和生命周期”的逻辑;纯计算逻辑则更适合普通工具函数。

3. 前端框架的意义

答案

前端框架的核心意义是降低复杂 UI 和状态管理的成本。

  1. 它提供组件化和声明式开发方式。
  2. 帮助我们更稳定地管理状态、更新和复用逻辑。
  3. 项目规模一大时,没有框架会更难维护。

4. diff 和如何降低多叉树复杂度

答案

前端框架里的 Diff 不是做最优树编辑距离,而是做工程上的折中。

  1. 通常按同层比较,不做跨层复杂匹配。
  2. 列表场景依赖 key 标识稳定节点。
  3. 这样可以把复杂度降下来,同时保证大多数场景性能可接受。

5. 找出无序数组的连续区间

答案

这题一般先排序或借助集合,再找连续段。

  1. 如果允许改顺序,排序后从小到大扫描,相邻差值为 1 就归到同一段。
  2. 如果要保留原数组不动,也可以先放进 Set,从每个可能的起点开始向后扩展。
  3. 核心是找到每段区间的起点和终点。

6. 如何使用 AI 工具,使用哪些编译器,项目编译前后分别是什么

答案

AI 相关题最好回答成“工具边界 + 落地方式”。

  1. AI 适合做样板代码、重构建议、测试用例、文档整理和方案对比。
  2. 真正落地时要给它足够上下文,比如代码规范、目录结构、接口文档、历史实现和约束规则。
  3. Skills / MCP / Agent 可以理解为不同层级的能力扩展:Skills 偏可复用能力包,MCP 偏工具和上下文接入协议,Agent 偏任务编排和执行过程。
  4. AI 不能代替工程判断,核心链路仍然要靠人 review 和兜底。

7. Vite、Webpack 如何配置

答案

如果项目里既提过 Webpack 又提过 Vite,建议先说明主用哪一个,再对比原因。

  1. Webpack 生态更老更全,适合历史项目和高度定制场景。
  2. Vite 开发态基于原生 ESM,冷启动和热更新通常更快,适合现代前端项目。
  3. 如果面试官追问,一定补上:开发态和生产构建的策略不一样,不能只说“Vite 更快”。