精选

字节前端面经

写在最前

以下是我近期三次面试后的一些个人总结,经验有限,想法或许还不够成熟,欢迎大家一起交流探讨。 篇幅所限,许多细节无法一一展开。如果大家有其他问题,欢迎在评论区留言,我会尽我所知回复。

timeline

  • 6.11 投递简历
  • 6.12 收到面试邀约
  • 6.17 技术一面 1天后约二面
  • 6.19 技术二面 1天后约三面
  • 6.24 技术三面 当晚约HR面
  • 6.25 HR面
  • 6.30 OC

个人bg

27届9本,项目有跟着鱼总做的AI海龟汤和智能BI,加上几个完成度比较高的课程大作业,八股临时准备了几天。

面试细节

(1)一面93分钟,侧重看基础

  1. 自我介绍 + 项目拷打

  2. 八股 计网相关: ① HTTP1, 2, 3的区别 ② HTTP与TCP的区别,TCP三次握手的细节 ③ HTTP与WebSocket的对比 ④ 了解什么浏览器的缓存? Vue相关: ① display: none和visibility: hidden的区别 ② 父子组件间的如何进行信息传递 ③ vue项目管理用过哪些依赖 ④ 了不了解babel?

  3. 手撕代码 ① 实现两个版本号大小的比较,比如 "1.0.1 & 1.0.0", "1.0001 & 1.01", 1.0.0 & 1.0“,”1.12.1 & 1.11.1" ② 实现value = string的多叉树的数据结构,以及实现一个dfs根据string值来查找,如果查找不到就返回null ③ 利用 Promise 实现一个并发任务调度器,要求最大并发量为2,并按任务完成顺序输出结果。

  4. 反问环节

(2)二面76分钟,侧重看项目

  1. 自我介绍 + 项目介绍
  2. 八股拷打
    ① 用户在浏览器地址栏输入url到拿到页面的全过程,要求越细越好
    ② html资源是如何渲染的
    ③ 是否渲染过程了解css, js等的处理流程
    ④ 域名解析的过程
    ⑤ 对一面一些的问题又问了一遍,问我自己回去有整理过哪些内容
  3. 项目拷打
    面试官对简历中的项目细节问得非常深入,细致地探讨了项目的流程、架构设计及技术解决方案。可能是面试官觉得我的项目经历多的有点不太真实,所以和我聊的很细,不过整个过程都蛮顺利的
  4. 手撕算法
    给一个01地图,统计连通块的梳理
  5. 反问环节

(3)三面105分钟,全方面拷打(有可能是压力面)

  1. 自我介绍
  2. 手撕代码
    因为自己基础比较弱,前两面通过项目讲解占据了优势,所以后面八股、代码都考的挺简单的。但是三面面试官不是很吃这一套,讲到一半就打断开始做题了。 题目是和DOM树有关的一道算法题。算法蛮简单的,但是我不会DOM的API。。。 我思路出的挺快,但是代码一直写不出来,面试官也敏锐的察觉到了这点,开始对我的js疯狂拷打
  3. 八股拷打
    从js到css到vue再到后端,面试官一直挑我不会的问,前两面面试官是答多少算多少,三面是答出了大概就问具体实现/底层实现。压迫感拉满,具体题目已经回忆不起来了,只知道自己快被拷打哭了。也是在这个时候意识到了自己基础确实是过于薄弱了,前两面顺利通过都有侥幸的因素在。
  4. 项目拷打
    面试官要求用简短清晰的文字讲清楚项目的亮点。 这点自己确实没总结好,之前和其他面试官都是边讲项目边聊把项目的内容传达清楚的,三面面试官没有引导,就是要自己讲,有些点没讲清楚 以及三面面试官对我项目的质量好像也不是很满意,我的一个【上线(数百人次使用) + 微服务】的项目面试官觉得规模还是太小了(这就是压力面嘛…害怕……) 最后也是只讲了1个项目就没敢往下讲了
  5. 反问环节
    一通下来我已经没底气再说话了,濒临崩溃的边缘,感觉三面凉透了,就问了一下面试官能不能给自己一些建议。面试官老师人还是比较好,和我讲了蛮多的,也让我下定决心改变自己的学习方式,更加注重去加强自己的技术深度。

Tips

  1. 【 【 保持自信 】 】 ,一定要让面试官感觉你很有潜力!具体表现在 【流畅的自我介绍】【从容地回答问题】 等等,就算不会直接大方承认就行,不用太紧张
  2. 面试官时间宝贵,一定用最凝练的语言传递核心信息,避免冗余的口头禅和不必要的铺垫。 (自己在这方面也蛮需要加强的,有些东西明明一句话能讲完的)
  3. 写在简历上的每一个字都可能成为提问的起点,做好被深挖的准备!
  4. 可以借助 AI 撰写面试稿、模拟项目提问。提前预想项目的难点和可优化的部分,并调研好解决方案,引导面试官去提问。

个人建议

【项目】 跟着鱼总好好的做几个项目完全足矣,关键是要注入自己的思考和创新。尝试优化、拓展,把这个过程清晰地讲给面试官,把项目真正变成“自己”的而不是一味的抄教程 【八股】 强推面试鸭!几天的突击让自己对前端的技术又了解了蛮多的。不过面试鸭题目还是比较散乱,可以让AI二次归类整理,形成体系化的认知。 【技术】 上面的所有技巧都只是为了应付面试,面试技巧终究是“术”,个人技术实力才是“道”。与其寄希望于“吹水”,不如静下心来,在一个方向上深耕。扎实的技术功底才是自己的核心竞争力。

写在最后

自己能通过面试一定程度上还有些运气成分,似乎这个部门比较缺人,而且今年前端好像也有比较大的空缺,就这么阴差阳错的进来了,硬实力绝对还是不太够,希望通过接下来的实习能够好好沉淀一下,把技术筑牢,加油!

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
千寻
作者分享
学习打卡day6: 忘打卡了,补一下前两天的卡。。。。 1. 单词 * 60 2. 编译原理第3章 3. 计算机图形学作业 4. 中级实训项目:对接oss云存储 实训项目做的实际上就是一个协作知识库,可能会结合一些AI能力比如RAG。 但是架构上和一个在腾讯实习的舍友模仿着大厂的方式搞的很复杂。。。 整个系统被我们拆成了 前端 + node BFF + grpc后端 前端用monorepo,目前拆分为了两个 app,一个是auth部分,做成所有app可以复用的单点登录模式,存储用户基本信息,另一个就是知识库app,后面可能会上管理端的app。 后端也由此暂时拆成了auth_service和wiki_service,一开始是和前端直接HTTP通信。 但是由于后端微服务间独立,有些用户信息在auth_service里面,必须从wiki_service拿,于是我们就加了一层node BFF,所有前端请求打到node网关,由node网关再去从不同的微服务间拼数据。 node BFF和go用grpc进行通信,又加多了一个proto仓库来约定字段,写了一个proto的转译工具,支持一键拉取特定分支并转译为ts/go代码。 虽然说整体流程和自己在公司的时候很像了,但是发现好像不知道为什么要这么搞,好像一开始就没怎么好好设计,wiki_service包含了模块、文章、评论管理等等的所有部分,导致现在 BFF 层实际上对于大部分请求只是直接透传,失去了微服务聚合的价值,而为此还要从 router, controller, service写3~4层的样板代码,导致开发调试效率效率极低。。。。。一开始用rpc是为了想着提升性能,但是现在加了个node层也不知道实际性能究竟有没有收益。现在本地开发,前端2个端口,node2个端口,后端又2个端口,而且加了个node层前后端还不好直接调试。 感觉还是经验太少了,很多地方都过度设计了,希望能找到相关的资源,学习学习应该要怎么样重构
4
学习打卡day5: 昨日完成: 1、单词 * 60 2、lc hot 100 * 9 3、编译原理 * 2 4、论文阅读70%(https://arxiv.org/abs/2508.16629)
2
学习打卡day4: 昨日完成 1. 单词 * 20 2. 软件测试作业 3. lc hot100 * 7 4. 编译原理 * 2 5. 算法设计作业 6. 正在看一篇 TS 类型体操的文章:https://juejin.cn/post/7061556434692997156,比较好奇要多久TS才能达到这样的水平,感觉实习中遇到的TS真的大多数只是简单标注个类型。。。。
2
学习打卡day3 昨日完成: 1. 单词 *80 2. typehero medium * 12 3. lc hot 100 * 4 4. 编译原理一章 5. 编译原理实验作业
1
学习打卡day2 昨日完成: 1. 单词 * 40 2. typehero easy * 12 ,发现自己对ts的类型系统还是不太熟悉,蛮多关键字不熟悉的,写一些稍微复杂一点的类型处理时,明明思路是很清晰的,但是就是打不出代码来,实习的时候没怎么注重这方面,还是要加强一下: 看到一道比较有意思的题目:https://typehero.dev/challenge/includes,手写类型系统里的Array.includes 3. lc hot100 * 3 昨天下午去看了疯狂动物城2,学的比较少,今天继续加油
2
下载 APP