面试面经 · 字节跳动
【字节跳动】【后端开发】【一面】校招Java基础轰炸,连追问到怀疑人生
【字节跳动】【后端开发】【一面】校招Java基础轰炸,连追问到怀疑人生
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 字节跳动 |
| 岗位 | 后端开发(Java方向) |
| 轮次 | 一面 |
| 时间 | 2025年秋招 |
| 面型体感 | 压力较大,连续追问,节奏快 |
| 结果 | 通过,进入二面 |
面试题目(按提问顺序)
- 自我介绍,挑一个最熟悉的项目介绍
- 介绍一下策略模式和责任链模式,分别用在哪些场景?
- HashMap并发不安全的原因是什么?JDK 7和JDK 8分别有什么问题?
- HashMap为什么使用拉链法解决哈希冲突?和开放寻址法相比有什么优势?
- HashMap的size为什么设计为2的幂次?
- ConcurrentHashMap在JDK 7和JDK 8的实现有什么区别?
- synchronized和ReentrantLock的核心区别是什么?什么场景下只能用ReentrantLock?
- synchronized的锁升级过程是怎样的?偏向锁到重量级锁的触发条件?
- volatile的作用,以及它为什么不能保证原子性?
- ThreadLocal内存泄漏是怎么发生的?怎么避免?
- AQS的核心实现原理是什么?
- MySQL事务的ACID分别是什么?InnoDB是怎么实现的?
- MySQL索引为什么用B+树?聚簇索引和非聚簇索引的区别?
- 联合索引index(b,c)在不同查询条件下是否走索引?
- 接口调用如何保证幂等?
- Redis有哪些数据结构?BloomFilter的原理是什么?
- TCP三次握手过程,有什么状态,状态机如何变化?
- 什么是TIME_WAIT状态,为什么需要它?时间是多久?
- 进程和线程的区别?哪些资源是线程共享的,哪些是独占的?
- 手撕算法:接雨水(LeetCode 42)
面试感受 / 反馈
- 一面时长约60分钟,整体节奏非常紧凑
- 面试官采用"连续追问"模式,每个知识点都会从定义追问到实现细节,再追问到设计原因
- 比如问HashMap不会只问"底层结构是什么",会一路追到"为什么拉链法""为什么2的幂次""扩容时怎么rehash"
- 算法题是LeetCode Hard级别的接雨水,需要O(n)解法
- 整体感受:不是考你"背了多少",而是考你"有没有想过为什么"
- 项目部分问得不深,主要还是八股和算法
准备建议
- Java并发是字节考得最深的模块,锁升级、AQS、ThreadLocal必须吃透
- HashMap/ConcurrentHashMap是必考题,要能说到JDK 7和8的差异
- MySQL索引、事务要理解底层实现,不能只背定义
- 算法至少刷到LeetCode中等偏上水平,Hard题也要准备
反问示例
- 团队主要做什么业务?技术栈是什么?
- 新人入职后的培养路径是怎样的?