字节跳动暑期后端AI开发一面面经
面试题目
一、项目拷打
二、实习 2.1 实习内容介绍 2.2 实习网关配置所用协议 2.3 设计网关时会选什么协议(TCP) 2.4 TCP为什么可靠 2.5 TCP三次握手及四次挥手流程 2.6 Redis丢数据怎么办 2.7 Java相关Redis客户端及本地缓存(Jedis, Caffeine)
三、八股 3.1 Java控制并发的方法(synchronized, ReentrantLock) 3.2 两个类的底层实现(字节码/Monitor, AQS+CAS) 3.3 CAS原理 3.4 平时如何使用AI 3.5 如何给AI设定约束 3.6 与Agent对话时约束的管理机制
四、手撕 4.1 编程题:输入int64,计算不大于该数的欧美数字格式逗号总数 4.2 如何判断B-Tree相等,追问B+Tree相等判断
参考解析
1. TCP为什么可靠: 主要依靠序号(Sequence Number)、确认应答(ACK)、超时重传、流量控制(滑动窗口)和拥塞控制。这些机制共同保证了数据按序到达且无丢失。
2. Redis丢数据方案: 需结合持久化策略(RDB+AOF)、主从复制(Sentinel哨兵机制)、以及缓存更新的一致性策略(先更新DB再删缓存或延迟双删)。
3. CAS原理: Compare And Swap,包含三个操作数:内存值V、预期原值A、新值B。若V==A,则将V改为B,否则自旋。底层通过Unsafe类调用硬件CPU的原子指令实现。
4. AQS原理: 抽象队列同步器,基于volatile变量state表示资源状态,内部维护一个FIFO的双向链表队列管理等待线程,利用CAS修改state实现锁的竞争与释放。
5. B+Tree相等判断: 判断B+Tree相等需满足结构相同且各节点内的键值对完全一致。递归比较根节点及所有子节点的键值序列及指针结构即可。