字节跳动后端开发一面面经
面试题目
理论部分
- CPU里的各级存储的速度。
- 多核处理器在访问同一资源时可能出现什么问题,怎么预防?
- 对Java集合知道哪些,对concurrent的理解。
- 分布式里上游调下游服务,路由是怎么确定的?
- 对AI agent的理解,开发时整个流程大概什么样?
- 操作系统内存管理了解多少,虚拟页表有什么好处?
算法题
- 力扣 200. 岛屿数量
参考解析
- CPU存储层次:寄存器 > L1缓存 > L2缓存 > L3缓存 > 内存。速度随层级下移呈指数级下降,主要通过局部性原理(时间/空间局部性)提升缓存命中率。
- 多核并发:可能出现竞态条件、脏读写等。可通过锁(互斥锁、自旋锁)、原子操作(CAS)、内存屏障或无锁数据结构(如Disruptor)进行预防。
- Java Concurrent:主要掌握JUC包下的AQS原理、ConcurrentHashMap的分段锁/CAS+synchronized实现、线程池参数及拒绝策略、以及CompletableFuture等异步编排工具。
- 分布式路由:常见的有轮询(Round Robin)、加权轮询、一致性哈希(减少节点增删带来的缓存重构)、最少连接数等,可通过网关(如Nginx、Gateway)或服务发现组件(如Nacos、Consul)实现。
- 虚拟内存:虚拟内存通过页表映射,实现了进程间的内存隔离,保护了物理内存安全;同时支持内存交换(Swap),使得程序可用内存超过物理内存上限,且内存碎片整理更灵活。