字节后端-推荐架构面经 已offer

3.6 一面
自我介绍
一、 项目相关
1. 大概介绍一下你整个系统架构的链路,或者说你的系统整体链路是长什么样子?
2. 你的库存信息怎么保留?存不存在超卖的现象?
3. 你 Redis 里的信息是怎么跟 MySQL 做同步的?
4. 初始结果不一致怎么办?(存不存在 Redis 初始结果跟 MySQL 不一致的问题)
5. 你觉得这条链路在真实的生产环境下能用吗?还有哪些不完备的点?
6. 如果消费队列扣减失败或订单写入 MySQL 失败,导致数据不一致,你有什么自动化机制(校验+补偿)来解决?
7. 知识库构建的文档和语义信息数据来源是哪里?是自己整理的吗?
8. 通过什么去做分词和检索?
9. 向量数据库跟正常数据库的区别是什么?它怎么加速相似向量检索?
10. 是否了解 HNSW 算法的具体实现?
二、 八股
1. 缓存击穿、穿透、雪崩这三个概念上的区别是什么?
3. 使用 SETNX 指令跟执行 Lua 脚本的差异是什么?
4. 排他锁(X锁)跟共享锁(S锁)的区别是什么?
5. Java 线程模型如何保证线程间的公平性
6. CAS是做什么的?它有什么问题?
7. 数据库有哪些隔离级别?
8. 如何解决“幻读”问题?InnoDB 引擎下是怎么处理的?
9. 聚簇索引和非聚簇索引的区别是什么?
10. 什么情况下不需要“回表”查询
11. TCP 是通过哪些机制保证可靠传输的?
12. 如何解决网络拥塞问题?(拥塞控制、慢启动、快重传等机制)
13. 进程和线程在内存结构上有哪些区别和关系?
14. 同步 I/O 和异步 I/O 的概念怎么理解?
15. 异步 I/O 是在用户态执行还是系统态(内核)执行?谁来负责通知结果?
16. Linux 的软链接和硬链接有什么区别?删除原始文件后哪种还能正常访问?
17. Java 的 HashMap 是怎么解决冲突的
18. 实现“数组+链表”时,为什么不能直接用 ArrayList 或 LinkedList 替换掉那个数组?
手撕
之字形(Zigzag)打印二叉树。

3.10 二面
一、项目
1. 请介绍你在项目过程中印象最深、最具技术挑战或复杂度的点,以及你是如何解决的。
2. 在秒杀场景下,如何保证“库存扣减”与“一人一单”逻辑的原子性?
3. 为什么 Lua 脚本能做到分布式一致性?它是如何把多条命令聚合为原子操作的?
4. Lua 脚本是如何编排这些多条 Redis 命令的?它是感知多个用户的命令还是单用户的顺序命令?
5. 限流算法
6. 除了限流,你是否了解“熔断”机制?它与限流的区别是什么?在下游服务扛不住时该如何处理?
7. 你构建的知识库文档量级是多少?
8. 如何从原始文档构建出向量检索索引库?索引库的底层数据结构是什么样的?
9. 你了解 HNSW 和 IVF这两种索引算法的区别吗?它们分别适用于什么场景?
手撕
1. 无序数组频率统计 时间复杂度 O(n),空间复杂度 O(1)(允许修改原数组)
2. 旋转有序数组找最小值
3. 有 10 个 100G 的日志文件,存储用户的搜索 Query(存在重复),找出访问频次最高的 100 个 Query。单机内存仅 10G,可以使用多台机器。 口述思路

3.11 hr面半小时后oc,晚上下正式offer
明天就要入职了,希望一切顺利

#牛客AI配图神器#
全部评论

相关推荐

评论
1
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务