写在前面

这周最大的转折点,是一场面试。

虽然只是一家深圳的小公司,但面试官问得非常细:

  • 从 HashMap 到红黑树
  • 从 Redis 缓存三兄弟到双写一致性
  • 从 Lua 脚本到 Java 与 Python 跨语言协作
  • 从 AI 上下文存储到 Docker 部署

一场面试下来,我清晰地看到了自己的知识盲区

  • 红黑树实现原理答不上
  • 数据库锁含糊其辞
  • AI 对话上下文调试说不清

但我反而很庆幸——
这些问题现在暴露,总比春招终面时暴露要好。

一、本周完成

1️⃣ 项目实战推进

知学汇项目(接近收尾)

完成:

项目即将收尾,下周准备转入数据结构猛攻阶段

  • 优惠券发放功能
  • 兑换券生成功能
  • 实现排行榜功能:

  • 使用 Redis SortedSet
  • 底层:跳表 + 哈希表

同时输出一篇:
👉 RESTful API 设计博客。

AI项目(智答)工程化升级

本周重点:让 AI 项目更像“生产系统”。

完成改进:

稳定性

  • 引入全局异常拦截
  • 区分状态码,避免敏感信息泄露

可观测性

  • 引入 Python 结构化日志
  • 新增审计日志:
    • 用户登录
    • 文档删除

产品体验

  • 前端修复嵌套问题
  • 普通问题不再展示参考来源 → 降低信息噪音
  • AI 可通过 userID 获取用户名 → 生成个性化回答

项目正在从「能跑」走向「能上线」

2️⃣ 八股与基础补强

  • Java集合

    • HashMap:数组+链表+红黑树,阈值8转树、6转链,线程不安全。

    • ArrayList:动态数组。

    • TreeMap:红黑树,有序,不允许null键。

  • MySQL

    • 事务ACID,undo log(原子性/一致性),redo log(持久性)。

    • 隔离级别:读未提交、读已提交、可重复读(默认)、串行化。

    • 索引最左匹配原则。

  • 分布式事务:XA、TCC、本地消息表,Seata框架。

  • 分布式锁:Redisson实现锁续约、红锁。

  • 数据库锁:共享锁、排它锁、悲观锁。

  • 海量数据存储:分区、分表、分库(主从)。

  • IoC & AOP:Spring核心概念。

3️⃣ 面试实战复盘

  • 八股部分

    • HashMap底层原理 ✓

    • 红黑树实现原理和优点 ✗(自己挖坑没填上)

    • IoC和AOP ✓

    • Redis缓存三兄弟(穿透、击穿、雪崩) ✓

    • 数据库锁 ✗(转而讲索引最左匹配原则)

    • Mybatis-plus vs Mybatis ✓

    • 双写一致性:答延迟双删 ✓

  • AI部分

    • 使用过哪些AI工具,什么是MCP(被推荐了一个MySQL的MCP) ✓

    • 如何让AI根据接口实现代码 ✓

  • 项目部分

    • Python工程化相关知识 ✓

    • 高并发点赞:Lua脚本的优点和作用 ✓

    • Java与Python服务如何连接 ✓

    • 跨语言数据一致性:分布式锁 ✓

    • Redis存储上下文对话:怎么调试?存多少轮? ✗(细节说不清)

    • Docker部署 ✓

4️⃣每日运动

  • 4/1:5km
  • 4/2:5km
  • 4/4:5km
  • 4/5:5km

二、本周收获(核心)

1️⃣ 面试是最高效的学习催化剂

HashMap 我能讲。
红黑树我“以为能讲”。

直到被追问:

红黑树为什么比 AVL 更适合 HashMap?

我卡住了。

面试后立刻画旋转图,才真正理解。

追问,是检验理解深度的试金石。

2️⃣ 延迟双删背后的工程细节

问题:
为什么要“延迟”?

答案:
等待 MySQL 主从同步完成,避免读到旧数据。

这一刻我意识到:

所有工程方案,都是对极端情况的妥协。

3️⃣ 跨语言协作的真实工程经验

Java + Python:

  • HTTP + RESTful 通信
  • 分布式锁保证一致性

面试官提醒:
必须考虑锁超时与重试

这是我之前忽略的风险点。

三、遇到的问题

  1. 红黑树:知道但不深入
    面试时被问到红黑树优点,我只答了“自平衡、查找快”。但面试官追问“比AVL树好在哪?”我答不上来。后来复习:红黑树不追求绝对平衡,插入删除旋转次数少,更适合写多读少的场景。

  2. 数据库锁:完全空白
    面试官问“数据库锁”,我直接跳过讲了索引。这是明显的知识漏洞。周末专门补了:行锁、表锁、间隙锁、Next-Key Lock,以及MVCC如何与锁配合。

  3. Redis上下文对话存储:缺乏调试经验
    项目里用Redis存储对话上下文,但面试官问“怎么调试?存多少轮?”我答得含糊。回来后梳理:可以设置过期时间(如30分钟),每轮对话存一个hash,key为用户会话ID,field为轮次,value为消息体。调试可用redis-cli --monitor实时查看。这是需要实际踩坑才能积累的经验。

  4. MCP概念第一次听说
    面试官推荐了MySQL的MCP(Model Context Protocol),我完全不了解。面试后查了:MCP是一种让AI模型与外部工具交互的协议。这提示我需要关注AI工程化的前沿动态。

四、本周不足

  1. 知识体系不够网状
    红黑树、数据库锁、分布式事务……这些点单独背了,但没串起来。比如:MySQL的间隙锁和Redis的分布式锁,都是解决并发问题,但适用场景完全不同。下周要画知识图谱,把相关概念连成网。

  2. 数据结构与算法学习依然滞后
    本周只做了2道LeetCode简单题,远低于目标。知学汇项目结束后必须严格执行“猛攻数据结构”计划。

  3. 面试准备缺乏模拟
    没有提前模拟面试,导致临场被问红黑树时紧张卡壳。下周开始每周至少一次自问自答录音复盘。

五、下周计划

  1. 项目收尾与转型

    • 完成知学汇项目收尾,写项目总结文档。

    • 猛攻数据结构:数组、链表、栈、队列、树(二叉搜索树、AVL、红黑树)、图(BFS/DFS),每天至少1道LeetCode,周末做2道中等题。

  2. 知识补强

    • 红黑树专题:手写旋转逻辑,对比AVL树,输出一篇学习笔记。

    • 数据库锁专题:行锁、间隙锁、MVCC,结合MySQL实战案例。

    • 分布式事务深度:画XA、TCC、本地消息表、Seata AT模式的对比表格。

    • Redis上下文存储最佳实践:整理会话管理方案,包括过期策略、轮次限制、调试方法。

  3. 习惯保持

    • 每天五公里跑步。

    • 每天写日记,记录一个技术点或面试反思。

总结

        这周是一场“实战体检”。一场面试把我从舒适区拉了出来——那些自以为掌握的知识点,在追问下纷纷露出破绽。但正是这些破绽,让我看清了下一步的方向:从“背结论”转向“懂原理”,从“会使用”转向“知权衡”

        技术成长从来不是线性的。这周我经历了面试受挫、项目推进、写作输出、跑步坚持,每一件事都在提醒我:春招是一场持久战,比的不是谁背得熟,而是谁补得快。红黑树没搞懂就去画旋转图,数据库锁不会就去查行锁间隙锁,Redis上下文说不清就去敲命令调试——行动是最好的复盘

下周,知学汇项目收尾后,我将全力攻克数据结构和算法。保持节奏,保持饥饿,继续前进。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐