字节跳动面经(完结)
字节跳动成立于2012年3月,公司使命为“Inspire Creativity, Enrich Life(激发创造,丰富生活)”。公司业务覆盖150个国家和地区,拥有11万名员工。字节跳动在全球推出了多款有影响力的产品,包括今日头条、抖音、西瓜视频、飞书等。截至2021年6月,字节跳动旗下产品全球月活跃用户数超过19亿。
秋招薪资
同学 1(后端开发实习,附答案)
不知道是在哪里投递的,可能是在脉脉上一直有字节HR联系投递,就全点击了感兴趣,之后简历过筛,约了11月21号一面。这也是自己第一次面试字节,之前投递了很多次字节实习,简历都被筛了。
一面(11月21号,1h多)
自我介绍
项目
- 介绍一下自己最熟悉的项目?
- 项目使用的技术栈?项目的微服务是怎么划分的?
- 项目的签到功能是怎么实现的?
- 项目的搜索附近的人功能是怎么实现的?
Java基础
- final、finally、finalize的区别?
- 异常有哪些分类?
- Error 和 Exception都是谁的子类?
JUC
- 线程和进程有什么区别?
- 有多少种实现线程的方法?
- ThreadLocal是什么?
- ThreadLocal的实现原理?
- 使用ThreadLocal有什么问题吗?如何解决?
JVM
- 讲一下JVM内存结构?
- 垃圾回收算法了解多少?
MySQL
- MySQL 支持哪些存储引擎?
- MyISAM 和 InnoDB 的区别有哪些?
- 聚簇索引是什么?
- 非聚簇索引是什么?
- 使用非聚簇索引如何查找数据?
- 建立联合索引(a,b,c),where c = 5是否会用到索引?为什么?
- where b =5 是否一定会命中索引?(索引失效场景)
- 什么是数据库事务?事务的作用是什么?
- 事务具有的四个特征?
- MySQL 默认隔离级别?
Redis
- 单线程的Redis的QPS是多少?
- 单线程的Redis为什么这么快?
- Redis的持久化机制?
- Redis切片集群?数据和实例之间的如何进行映射?
- Redis扩容之后,哈希槽的位置是否发生变化?
- Redis缓存和数据库不一致解决方法?
设计模式
- 了解哪些设计模式?
- 单例模式有几种实现方式?
- 单例模式最常用的实现方式是哪种?为什么?
数据结构
- 讲一下冒泡排序和快速排序的区别,从平均时间,最好,最好,稳定性上来说?
算法
- LeetCode 543. 二叉树的直径
反问
- 部门的业务?
- 部门的技术栈?后序的面试流程?(被告知一面是没有问题的,二面等后序通知)
二面(11月23日,45min左右)
自我介绍
实习经历(20min)
- 介绍一下实习期间做的项目?
- 对实习项目做了提问。
Redis
- 对redis的数据结构是否熟悉?
- 讲一下Sorted set的底层数据结构实现?
- 什么是缓存穿透?如何解决?
- 什么是缓存击穿?如何解决?
- 什么是缓存雪崩?如何解决?
- 什么是缓存预热?如何解决?
- Redis如何实现分布式锁?
MySQL
- 什么是回表?
- 回表记录越多好吗?(回表的代价)
- 性别字段要建立索引吗?为什么?
- 什么是区分度?
- MySQL查看字段区分度的命令?
- MySQL主从复制流程和原理?
- MySQL如何查看查询是否用到了索引?
- type 列的最好,最好级别?都代表了什么意思?
计网
- 说说OSI七层模型?
答案

OSI(Open System Interconnection)七层参考模型是一个网络架构模型,由国际标准化组织(ISO)提出,用于描述和标准化各种计算机网络的功能和过程。这七层从低到高分别是:
- 应用层:最靠近用户的层,负责处理特定的应用程序细节。这一层提供了网络服务与用户应用软件之间的接口。例如,Web 浏览器、FTP 客户端和服务器、电子邮件客户端等。
- 表示层:确保从一个系统发送的信息可以被另一个系统的应用层读取。它负责数据的转换、压缩和加密。例如,确保数据从一种编码格式转换为另一种,如 ASCII 到 EBCDIC。
- 会话层:管理用户的会话,控制网络上两节点间的对话和数据交换的管理。它负责建立、维护和终止会话。例如,建立一个会话令牌,以便在网络上的两个节点之间传递。
- 传输层:提供端到端的通信服务,保证数据的完整性和正确顺序。这一层包括 TCP 和 UDP 等。
- 网络层:负责在多个网络之间进行数据传输,确保数据能够在复杂的网络结构中找到从源到目的地的最佳路径。这层使用的是 IP(Internet Protocol)协议。
- 数据链路层:在物理连接中提供可靠的传输,负责建立和维护两个相邻节点间的链路。包括帧同步、MAC(媒体访问控制)。
- 物理层:负责在物理媒介上实现原始的数据传输,比如电缆、光纤和无线信号传输。涉及的内容包括电压、接口、针脚、电缆的规格和传输速率等。
- 用户输入网址到显示对应页面的全过程?
答案
从在浏览器地址栏输入 URL 到显示主页的过程包括多个步骤,涵盖了 DNS 解析、TCP 连接、发送 HTTP 请求、服务器处理请求并返回 HTTP 响应、浏览器处理响应并渲染页面等多个环节。
- DNS 解析:浏览器发起一个 DNS 请求到 DNS 服务器,将域名解析为服务器的 IP 地址。
- TCP 连接:浏览器通过解析得到的 IP 地址与服务器建立 TCP 连接(通常是通过 443 端口进行 SSL 加密的 HTTPS 连接)。这一步涉及到 TCP 的三次握手过程,确保双方都准备好进行数据传输。
- 发送 HTTP 请求:浏览器构建 HTTP 请求消息,包括请求行(如 GET / HTTP/1.1)、请求头(包含用户代理、接受的内容类型等信息)和请求体(如果有);将请求发送到服务器。
- 服务器处理请求:服务器接收到 HTTP 请求后,根据请求的资源路径,经过后端处理(可能包括数据库查询等),生成 HTTP 响应消息;响应消息包括状态行(如 HTTP/1.1 200 OK)、响应头(内容类型、缓存控制等信息)和响应体(请求的资源内容)。
- 浏览器接收 HTTP 响应:浏览器接收到服务器返回的 HTTP 响应数据,开始解析响应体中的 HTML 内容;然后构建 DOM 树、解析 CSS 和 JavaScript 文件等,最终渲染页面。
- 断开连接:TCP 四次挥手,连接结束
我们以输入 www.baidu.com 为例:

- DNS 的解析过程?
答案
DNS 的全称是 Domain Name System,也就是域名解析系统,它可以将域名映射到对应的 IP 地址上,比如说我们访问 www.javabetter.cn,实际上访问的是我在阿里云上一台丐版服务器,它的 IP 地址是 xxx.xxx.xxx.xxx。
当然了,也可以通过 IP 地址直接访问服务器,但不方便记忆,所以就有了域名系统。一个好的域名可以卖好多好多钱,像 javabetter.cn 这个域名,一年需要 39 块钱。
域名到 IP 之间的映射,就需要 DNS 来完成。

我来说说 DNS 的解析过程吧:

假设我们在浏览器地址栏里键入了 paicoding.com:
浏览器会首先检查自己的缓存中是否有这个域名对应的 IP 地址,如果有,直接返回;如果没有,进入下一步。

检查本地 DNS 缓存是否有该域名的记录。如果没有,向根域名服务器发送请求,根域名服务器将请求指向更具体的服务,如 com 顶级域名服务器。
顶级域名服务器再将请求指向权限域名服务器,通常由域名注册机构直接管理,paicoding.com是在阿里云上注册的,所以阿里云会提供对应的 DNS 解析服务,将域名和阿里云服务器绑定起来。
最终,浏览器使用获得的 IP 地址发起一个 HTTP 请求到目标服务器,然后该服务器返回所请求的网页内容。
- HTTP有多少版本?
答案
HTTP1.0 默认短连接,HTTP 1.1 默认长连接,HTTP/2.0 基于 TCP 协议,而 HTTP/3.0 则基于 QUIC 协议,Quick UDP Connections,直译为快速 UDP 网络连接。

- HTTP/1.1和HTTP/2.0的主要区别是什么?
答案
说下 HTTP1.1
- 持久连接:HTTP 1.1 引入了持久连接(也称为 HTTP keep-alive),默认情况下不会立即关闭连接,可以在一个连接上发送多个请求和响应。极大减轻了 TCP 连接的开销。
- 流水线处理:HTTP 1.1 支持客户端在前一个请求的响应到达之前发送下一个请求,以提高传输效率。
说下 HTTP2.0
- 二进制协议:HTTP 2.0 使用二进制而不是文本格式来传输数据,解析更加高效。
- 多路复用:一个 TCP 连接上可以同时进行多个 HTTP 请求/响应,解决了 HTTP 1.x 的队头阻塞问题。
- 头部压缩:HTTP 协议不带状态,所以每次请求都必须附上所有信息。HTTP 2.0 引入了头部压缩机制,可以使用 gzip 或 compress 压缩后再发送,减少了冗余头部信息的带宽消耗。
- 服务端推送:服务器可以主动向客户端推送资源,而不需要客户端明确请求。
- 目前使用最广泛的是哪个HTTP版本?
答案
应该是 HTTP/2,在 2022 年 1 月达到峰值,占所有网站的 46.9%。
统计网站:w3techs

- 什么是幂等?幂等方法了解哪些?
答案
幂等(Idempotence)是一个数学概念,用于描述某些操作的特性,即无论操作执行多少次,结果都是相同的。换句话说,幂等操作可以重复执行而不会改变系统状态。
如果一个操作是幂等的,那么对同一资源执行该操作一次和执行多次的效果相同。
在正确实现的条件下,GET、HEAD、PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是。
例如,`GET /pageX HTTP/1.1` 幂等的。连续调用多次,客户端接收到的结果都是一样的:
```
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
```
- 除了Get方法之外还了解其他幂等方法吗?
答案
`DELETE /idX/delete HTTP/1.1` 是幂等的,即便是不同请求之间接收到的状态码不一样:
```
DELETE /idX/delete HTTP/1.1 -> Returns 200 if idX exists
DELETE /idX/delete HTTP/1.1 -> Returns 404 as it just got deleted
DELETE /idX/delete HTTP/1.1 -> Returns 404
```
- 一个TCP连接可以发送多少次HTTP请求?
答案
一个 TCP 连接可以发送多少次 HTTP 请求,取决于 HTTP 协议的版本。
在 HTTP/1.0 中,每个 HTTP 请求-响应使用一个单独的 TCP 连接。这意味着每次发送 HTTP 请求都需要建立一个新的 TCP 连接。
HTTP/1.1 引入了持久连接(Persistent Connection),默认情况下允许在一个 TCP 连接上发送多个 HTTP 请求。
通过使用 `Connection: keep-alive` 头部实现,保持连接打开状态,直到明确关闭为止。这极大地提高了效率,因为无需为每个请求都建立新的连接。
此外,HTTP/1.1 支持请求管道化(Pipelining),允许客户端在收到前一个响应之前发送多个请求。
HTTP/2 进一步优化了连接复用,允许在单个 TCP 连接上同时发送多个请求和响应,这些请求和响应被分割成帧并通过流传输。HTTP/2 的多路复用(Multiplexing)机制显著提高了并发性能和资源利用效率。
算法
- LeetCode 15. 三数之和 (带输入输出)
反问
- 是否要学习大数据相关知识?
- 之后的面试流程?
HR面(11月28日,15min)
- 觉得自己前面的2轮面试表现的怎么样?哪里发挥的好?哪里发挥的不好?
- 未来想从事哪一行业?
- 什么时候可以来实习?
- 可以实习多长时间?
- 平时都是怎么学习的?
- 介绍一下实习期间主要做的项目?
- 实习期间遇到的最大困难是什么?怎么解决的?
- 实习给你带来了哪些成长?
- 如果你可以来实习,你对自己有哪些规划吗?
- 你有什么想问我的吗?
牛客链接:https://www.nowcoder.com/discuss/1098607
同学 13(商业化,主管面挂,附答案)
转到了商业化的另一个组oc的
一面 1.15 1点 1h
- 什么是死锁,死锁的产生条件,破坏死锁
- 进程和线程区别,线程共享内存和进程共享内存的区别
- 进程间如何通信
- redis和mysql的区别
- redis的zset,什么是跳表,插入一个节点要构建几层索引
- B+树,为什么3层容纳2000W条,为什么2000w条数据查的快
- url请求的全过程(要求详细)
- (A,B,C) 联合索引 select * from tbn where a=? and b in (?,?) and c>? 会走索引吗
- 力扣79
- 二叉搜索树转双向链表
详细回答:传送门
二面 1.16 5点 1h
- 什么是三大范式,为什么要有三大范式,什么场景下不用遵循三大范式,举一个场景
- 什么是SQL注入,怎么避免,什么是参数化
- mysql怎么存emoji,怎么编码
- 什么是深分页,select * from tbl limit 1000000000这个有什么问题,如果表大或者表小分别什么问题
- 一个表(name, sex,age,id),select age,id,name from tblname where name='paicoding';怎么建索引
- http和https的区别,https是怎么建立连接,https是对称还是非对称加密
- http的响应号有哪些
- http有哪些方法,http的get方法可以实现写操作吗,https传递url安全吗,为什么数据在浏览器中,中间人攻击是什么
- 针对用户输入的前缀字符串,统计输出的top10的热词
- leetcode 47
- int num[] ,k。对这个数组进行排序,数组中的每个元素距离他排序后的位置相差的距离小于等于k
二面面试官太压力了,得着我回答的一个点一直问,汗流浃背,许愿oc
作者:怪等oc
链接:https://www.nowcoder.com/discuss/576849457367523328?sourceSSR=search
同学 9(飞书后端,一面凉,附答案)
1.问项目
2.Redis数据类型,sortedSet的实现
五种数据类型,sortedSet底层跳表
3.HashMap为什么不安全,如何改进,以及concurrentHashMap
4.TCP报文的结构
5.输入URL会发生什么
6.TCP为什么要三次握手
7.操作系统缺页中断,页面置换算法
8.手撕二叉搜索树的删除
作者:Crazy_zm
链接:https://www.nowcoder.com/feed/main/detail/a41f97767a534e2680d26ecd4093db99?sourceSSR=search
同学 2(大三实习后端开发)
一面面试时长1h20min
1、学习路线和项目选型
2、拷打我的开源分布式项目(25min),master单点故障有考虑吗?如果有请求打到当前worker上了但worker宕机了怎么保证一个处理平滑?....一系列问题很深很杂。问为什么用grpc,grpc一次服务调用中间会经历什么?服务发现怎么做的?负载指标怎么设计的?有监控吗?数据存储的格式是怎么样的?定期拉取更新吗?
3、操作系统进程间通信方式?进程调度算法有哪些?怎么查找僵尸进程?多线程有了解吗?多线程会出现哪些问题?死锁怎么排查?
4、问我的消息队列项目,为什么选型选zookeeper?业务层如何保证消息不会被重复消费(接口幂等)?
5、mysql的事务特性?mysql为什么用B+树?慢查询怎么优化?写个SQL题:一张表table award(id,userId,name,age,gender,type,type,score),查找所有同名人的所有信息
写完说下思路,只用你所写的子查询语句可以做到吗?
6、go怎么实现并发?GMP可以没有P吗?mutex底层实现?
7、redis有实际用过吗?
8、写题:*******
讲思路,时间复杂度?有什么优化方法?
当天下午hr就打电话约了二面
二面leader面,面试时长45min
1、说一面面试官对我评价很好,问我感觉怎么样?对计算机很感兴趣?高中有接触过计算机吗?为什么选择go?java和go在执行层面有什么不同?我提了一嘴JVM,面试官问我具体了解JVM吗我说我只是知道个大概,就没多问。
2、go里的并发怎么保证?GMP说一下?为什么多协程和多线程相比多协程效率更好?
3、子网掩码255.255.252.0可以接入的机器数量?我说出计算公式时候问公式里为什么要-2?代表什么?
4、redis里的持久化方式
5、RESTful API知道吗?GET和POST区别?
6、HTTP和HTTPS在哪里多了什么?HTTPS握手过程?
7、操作系统用户线程空间大小是多少?为什么是4GB?为什么是2的32次方?32代表什么?
8、虚拟地址的作用?
9、对于操作系统分页有什么考虑?页过大或页过小会有什么问题?常见的页面置换算法?讲讲LRU的思路?
10、算法题:删除链表的倒数第N个节点
11、说我学习的深度和广度都挺不错的,后期的开发语言和期待岗位?有没有了解一些比较新的技术?是怎么学习的?
作者:颜_然
链接:https://www.nowcoder.com/discuss/563096059170316288?sourceSSR=enterprise
同学 3(后端补录、凉经)
11.19 周一投递 - 11.21 电话没接到,微信约面试(当晚) -11.22 一面 -...
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复