2023 年 7 月下旬,我遭遇裁员,经历了近 7 个月的休整与沉淀后,于 2024 年 2 月初冲刺字节跳动 2-2 职级前端岗位。此次面试共 3 轮技术面,每一轮都包含手写算法环节,最终虽未通过第三轮,但梳理了完整的面试流程、核心问题及复盘总结,希望能为正在求职的同行提供参考。
Taimili 艾米莉 ( 一款专业的 GitHub star 管理和github 加星涨星工具taimili.com )
艾米莉 是一款优雅便捷的 GitHub star 管理和github 加星涨星工具,基于 PHP & javascript 构建, 能对github star fork follow watch 刷星管理和提升,最适合github 的深度用户
面试整体概况
- 面试职级:2-2(前端)
- 面试轮次:3 轮技术面(均含手写算法)
- 面试结果:未通过第 3 轮
- 核心聚焦:低代码平台开发(简历重点 + 项目经验)、JS/React 基础、算法能力、职业经历衔接
第一轮面试:基础与项目初考察(1 小时 40 分钟)
开场与职业经历问询
首先进行自我介绍,重点分享了过往工作中落地低代码平台、开发用户操作记录回溯工具的经历,提及向开源项目 rrweb 提交 2 个 PR,以及参与公司插件化架构搭建的细节。
面试官紧接着围绕离职相关问题展开询问,核心包括:
- 离职原因(如实说明被裁)
- 离职后 7 个月的时间安排(1 个月休息 + 2 个月旅游 + 1 个多月写书 + 11 月底启动求职)
- 求职进展(近两个月是否收到其他 offer)
技术基础问答(JS+React+Webpack)
- JS 浮点数运算问题:0.1+0.2≠0.3 的原因及解决方案
- Webpack 核心概念:loader 与 plugin 的区别,是否有自定义 plugin 经验
- ES6 转 ES5 过程中,Webpack 的具体作用
- React 类组件:为何必须用 setState 修改状态,而非直接赋值 this.state.xxx
- setState 的内部执行逻辑
- 类组件 componentWillUnMount 对应的 Hooks 实现方式
- useState 原理:多个 useState 不串值的底层逻辑,函数组件重渲染时如何获取历史状态
- React 自定义合成事件的设计初衷
项目细节深挖
- 简历中 "关注资产损失" 的具体工作内容
- 低代码开发与实践的核心职责
- 表单联动的实现方案
- 为何未采用 Formily 等现成方案做表单驱动
算法题(现场手写)
- 实现 lodash.get 方法
- 计算二叉树的最大深度
- 岛屿的最大面积
反问环节
针对团队技术栈、低代码在字节的应用场景、业务发展重点等问题与面试官交流。
第二轮面试:低代码深度聚焦(1 小时左右)
由于简历重点突出低代码项目,且自我介绍时提及个人著作《低代码平台开发实践:基于 React》,本轮问题几乎全部围绕低代码展开。
职业与项目背景问询
- 写书的初衷与契机
- 能否提供掘金上发布的低代码相关文章
- 被裁的具体原因(本轮再次重点询问)
低代码核心问题
- 低代码针对的中后台场景具备哪些特征
- Table 组件的配置能力:表头及字段展示内容的配置方式
- 做低代码平台的核心动因
- 开发前是否评估过研发量,有无明确的开发规划
- 低代码平台是独立开发还是团队协作成果
- 属性面板修改后,画布的刷新机制
- 为何未基于现有低代码项目做二次改造,选择从零开发
- 开发过程中遇到的核心难点及解决方案
算法题(现场手写)
- 最大子数组和
- 最长回文子串
反问环节
向面试官咨询了团队在低代码领域的技术迭代方向、现有产品的优化重点等问题。
第三轮面试:深度技术 + 场景思辨(1 小时左右)
本轮未要求自我介绍,开场直接手写算法题,后续围绕技术深度、项目价值、场景认知展开问询。
算法题(现场手写)
K 个一组翻转链表
核心问询问题
- 写书的核心目标,与市面上同类书籍的差异化
- 低代码的适用场景与目标用户群体
- 低代码与无代码(no-code)的边界界定
- 所开发的低代码平台能实现的最复杂场景
- 为何要将 JSON 转化为手写代码,转化后的代码形态
- 源码解析器的核心功能与实现逻辑
- 开发低代码平台的背景与初衷
- 整个低代码项目的开发周期
- 从酷家乐离职后的核心安排(是否以写书为主)
- 用户操作记录回溯工具的核心解决问题与落地效果
- 主管是否明确说明被裁原因
反问环节
就字节低代码平台的技术架构、团队协作模式、后续技术规划等问题进行交流。
面试重点问题汇总
高频问询方向
- 离职与职业衔接:被裁原因、离职后 7 个月的时间分配、求职进展
- 低代码专项:项目背景、研发规划、技术选型、难点解决方案、与现有方案的差异、场景适配性、与无代码的边界
- 个人著作:写书初衷、内容差异化、核心价值
需改进的答题技巧
- 强化问题拆解:面对复杂问题时,先重复关键词或提炼核心诉求,确认理解无误后再作答
- 结构化表达:涉及多原因、多维度的问题,采用 "1、2、3" 分点阐述,搭配手势辅助记忆,确保逻辑清晰、重点突出(如 "React 合成事件的设计原因"“JSON 转手写代码的动因” 等问题)
附:个人著作《低代码平台开发实践:基于 React》核心亮点
解决的核心痛点(过往低代码平台的 5 大问题)
- 搭建完成的应用支持独立部署
- 引入渲染沙箱,设计态画布拥有纯净运行环境(设计器与渲染器分离在不同 Frame)
- 构建组件市场:通过组件规范 + 开发脚手架,实现组件的开发、调试、上传,摆脱组件写死限制,实现组件与平台解耦
- Schema 版本管理:将 JSON Schema 存储于 Git 仓库,支持版本预览与重新编辑
- 支持二次开发:开发人员可对搭建完成的应用进行拓展开发
核心技术覆盖
- 基础技术:React Context API、React Hooks、React Ref、Mobx、MongoDB(本地运行需安装)
- 核心功能:低代码架构策略、组件开发、设计器实现、渲染器开发、代码生成器
- 基础设施:GitLab CI/CD 持续部署、npm 私有库搭建、LDAP 账号管理系统
书籍结构与阅读建议
- 第一部分(基础篇):1 章,涵盖核心理论知识,适合低代码入门者
- 第二部分(需求分析篇):2 章,讲解低代码平台的需求与功能设计
- 第三部分(实战篇):5 章,核心技术实现 + 大量代码示例,难度较高
- 第四部分(基础设施篇):1 章,聚焦研发体系搭建
阅读建议:有低代码基础的资深工程师可从第 4 章开始;入门者建议从第 1 章基础理论逐步学习。开源资源:书中 7 个开源项目的完整源码可通过github.com/react-low-c… 获取。