字节-高级前端三轮面经

前端技术江湖

共 4556字,需浏览 10分钟

 ·

2024-06-24 23:19

字节的面试难度,一直是大厂中的 Top 级别,即使是前端岗位,也特别看重算法能力。今天就给大家分享一篇字节的社招面经,原作者是《低代码平台开发实践:基于react》这本书的作者,在低代码平台这块有较深的研究,让我们一块来学习下他的面经吧。

以下是正文。


我面试的职级是 2-2,一共经历了 3 轮技术面,每一面都要手写算法。

2023 年 7 月下旬,我经历了一次裁员,一直到了 2024 年 1 月才开始找工作。在今年的 2 月初,我参加了字节跳动的面试,虽然没能通过第 3 轮面试,我记录了当时的一些面试问题,希望能帮助大家了解字节的面试流程和问题。

第一轮面试

首先是自我介绍,主要介绍在任职的公司落地了低代码平台和用户操作记录回溯,还向开源项目 rrweb 提交了两个PR,最后是公司的插件化架构。

PS:大家在自我介绍中,可以突出自己有亮点的内容,可以引导后续面试官的提问

自我介绍完毕,面试官的第一个问题是:为什么离职?

我因为被裁而离职,也如实做了回答,后面的面试官也都问了为什么被裁。

PS:如果在某个公司的工作经历不满两年,很容易被问到为什么离职,回答时需要注意,尽量不要吐槽前公司

由于我从离职到面试字节中间隔了7个月左右,面试官还重点关注了离职之后在做什么。

离职之后,我首先回家休息了近 1 个月,旅游了近 2 个月,然后写书花了 1 个多月,到 1 月底开始找工作,这没什么好隐瞒的,如实告知了面试官。

PS:这位大佬还是挺实诚的,有过写书的经历,在能力和项目经历上,绝对很有竞争力的

第一轮主要面试 JS 和 React基础知识,问题如下:

  1. 浮点数运算的精度问题,比如 0.1 + 0.2 不等于 0.3 这是什么原因,要怎么解决?
  2. 对 webpack 有了解吗
  3. webpack中 loader 与 plugin 有什么区别
  4. 有没有写过 plugin
  5. 我们写代码的时候是 es6,浏览器运行的时候是 es5,在做代码转化的时候,webpack 做了哪些工作?
  6. 在 React 类组件中,为什么修改状态要使用 setState 而不是用 this.state.xxx = xxx
  7. setState 函数做了哪些事情
  8. React 生命周期 componentWillUnMount() 对应的 hooks 要怎么写
  9. useState 的原理是什么,背后怎么执行的,它怎么保证一个组件中写多个 useState 不会串
  10. 函数组件重新渲染的时候怎么拿到useState之前的状态,而不是得到初始化的状态
  11. React为什么要自定义合成事件
  12. 你的简历里写了关注资产损失,这是做什么事情。
  13. 你在地代码开发与实践上也做了一些事情,当时是做什么呢?
  14. 表单的联动是怎么处理的
  15. 当时做这个表单驱动的时候,为什么没有用 Formily 现成的方案呢
  16. 被裁的原因是什么呢
  17. 从离职到现在一直没有找工作吗?
  18. 从11月底到现在两个月了有哪些 offer 了吗

算法题

  1. 实现 loadsh.get 方法
  2. 计算二叉树的最大深度
  3. 岛屿的最大面积

最后是反问环节。面试时长 1 小时 40 多分钟。

一面的时间很长,可能是面试官对这位同学的项目经历很挺感兴趣,也能是因为作者在算法题这块花的时间有点多

第二轮面试

由于简历重点介绍了低代码,并且在自我介绍的时候,提到了我在 gap 期间写的书,二面面试官的大部分问题都与低代码相关。

问题如下:

  1. 为什么写书
  2. 能把你的掘金上发的低代码文章发给我吗?
  3. 低代码针对的中后台是什么样的
  4. table 中的字段也是可以配置的吗?Table 头和每一项下面展示的内容怎么配置
  5. 为什么要做低代码
  6. 做低代码系统的时候你有考虑研发量吗
  7. 整个低代码都是你一个人做吗?
  8. 当属性面板上有修改之后,画布刷新的机制是怎么样的
  9. 继续讨论研发量,开发规划的问题
  10. 没有考虑使用已有的低代码项目做二次改造吗
  11. 做低代码的时候有没有遇到比较难的问题,怎么解决的
  12. 被裁的原因

PS:作者在面试时重点介绍了自己开发的低代码平台,其实最近在筛简历时,发现很多人都写了低代码平台。但大家得提前想好,这样的平台是否真的能给团队带来很高的价值。稍微大点的公司都会有这个系统,除了老板喜欢提升效率的平台,大家做汇报也好看。但实际上,现在的低代码平台还是有很多局限性,大家要想好平台的能力边界在哪儿。

算法题

  1. 最大子数组和
  2. 最长回文子串

最后是反问环节。面试时长 1 个小时左右。

第三轮面试

这一轮的面试官没让做自我介绍,一开始就是写算法题

算法题

  1. K 个一组翻转链表

下面是询问的问题

  1. 为什么写书
  2. 在市面上类似的书有一些,你的书有什么不同
  3. 什么场景适合做低代码,给什么用户使用
  4. 低代码最适合的场景是不是no-code?
  5. 怎么界定低代码和无代码的边界
  6. 你做的低代码平台能实现的最复杂的一个场景是什么样的
  7. 为什么json要转化为手写代码
  8. 转化成手写代码是什么样的
  9. 源码解析器是什么
  10. 开发低代码的背景
  11. 整个项目的周期有多长
  12. 从酷家乐离职之后主要在写书吗?
  13. 用户操作记录回溯工具是为了解决什么问题
  14. 用户记录回溯工具有达到目的吗
  15. 主管有没有说被裁的原因

最后是反问环节。面试时长 1 个小时左右。

总结

面试被问到的重点问题如下:

  1. 为什么被裁
  2. 被裁之后在干什么
  3. 低代码项目的迭代安排和人员安排
  4. 市面上的已有低代码方案

需要改进的点:

  1. 为了迫使自己在对方问问题之后思考问题,重复一下问题里的关键字。比如,当对方问为什么 React使用 setState() 修改状态,而不是直接给 this.state 赋值去修改?重复一遍面试官的话,如果面试官说的话很长,那就提炼出关键字后重复一遍。
  2. 当某个方案有多个原因时,先回答1,2,3,再逐条分析。比如为什么 React 要封装合成事件?为什么要将低代码 json 转成手写代码?为了让自己回答问题更专注,使用手指头记录自己说到了第几点。(结构化)

面试官点评

三面的算法题是一道 hard 难度的题目,大家通常会认为,问 hard 难度其实是因为没 hc。

但讲道理,k长度一组反转链路,其实是一个实际难度在简单到中等之间的题目,标了个 hard 可能是因为它在 leetcode 属于比较早期的题目,并不是真的难写。

对于数据结构扎实的同学来说,leetcode 的链表题可能是最简单的一块了。

事实上,2-1/2-2 的职级,对于基础要求其实在各类面试中区分得并不明显。字节的前端岗位面试,对于硬核内容的考察通常并不会很深,很多时候是看你的实际项目解决了啥问题,看你在这个项目领域里的深度,甚至有没有带人的经验,然后再定你是2-1还是2-2,面2-22-1也并不少,但带人的岗位经常会要求 3-1 了。

大家也不要太把字节的面试当模板,有些共性的背题该背就背,算法该刷还是得刷,除此之外还是要坚持一些自己的技术追求,感兴趣的问题多深入一些,比如你最近解决/解决中的问题,在 github 上有多少解决方案,哪些方案比较好,你做得哪些是更好的,以后想解决啥问题。

作者:何遇er

原文:https://juejin.cn/post/7345821800880324671


浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报