我个人的筹备面试经验 25.12-26.4

我是 25 年 12 月开始筹备的,今年 3 月 5 号投递的第一份简历,4.16 offer。

我筹备分四个方向:八股文、项目、算法、技术

一、项目、八股

我想先说我的理解——项目和八股文最好不要分开准备

最理想的情况是:项目本身就有很多能聊的点。简历上写了一条「做了 XX 优化」,面试官顺着这条往下问——为什么要做这个优化?用到了什么原理?具体是怎么落地的?这么做的好处是什么?

好多八股文的题型不就是这个样子么?

为什么会出现 XX 问题?哪些场景/工具下会出现 XX 问题?用什么方式能解决?每种方案各有什么优劣?我们怎么衡量?怎么预防 XX 问题?实践中,是怎么用 XX 工具解决 XX 问题的?

举个例子

假设简历上有这么一条:

针对 XX 订单查询接口高峰期响应慢的问题,引入 XX 自定义线程池异步处理非核心逻辑,接口 P99 从 800ms 降到 200ms。

(这里只是举个例子,代表简历上这一条是有关线程池的优化)

那面试官顺着你这一条能问出很多东西——

  • 基础:为什么不直接 new Thread()?→ 创建/销毁成本、无法复用、不可管控
  • 参数:核心线程数、最大线程数、队列、拒绝策略你怎么定的?依据是什么?
  • 场景判断:你这是 CPU 密集还是 IO 密集?怎么判断的?有没有压测数据支撑?
  • 队列选型:用的哪种队列?为什么不用无界队列?
  • 拒绝策略:选了哪个?业务上能不能丢请求?丢了怎么补偿?
  • 监控:线程池打满你怎么发现?有没有埋点和告警?
  • 踩坑:用线程池踩过什么坑?

能聊到的八股,已经覆盖了咱们单独去背诵线程池的大部分八股——而且每一个点都和项目有绑定,能说出自己的思考。

如果是面试官孤立地问线程池的八股 不依据项目去问 情况就很难受——因为就算 100% 答对了 也不算亮点,答错了 可能就会扣分。

二、算法

筹备目标是这样:

第一种情况:遇到之前写过的算法题

(HOT100、HOT150、剑指 offer 这样的)

应该要做到下面三点:

  1. 要能够清晰地说出来这道题的思路,逻辑要严密(很多时候去解释之前写过的算法,可能会有逻辑跳跃,没彻底解释清楚为什么就得出结论了)
  2. 语言要流畅(说话不结巴)
  3. 然后 Bugfree 地解出来(边界情况什么的要考虑清楚)

第二种情况:遇到没写过的算法题

  1. 分析题意,然后一步一步地去分析思考,在分析思考的过程中,也要把自己的思路说出来。
  2. 如果思考卡顿超过三四分钟(明显想不出来了),去请求面试官的帮助,要让他给点思路帮助解决这个问题(如果能清晰地说出自己卡在哪,然后面试官给出提示,然后领悟,解出题,我认为挺加分,能体现出表达、沟通、协作能力)。

练习方法

所以说,我准备算法的方法是:写算法题,先要和 AI 对话,把题的链接发给它,然后跟它聊这个题的思路。

得先能说服 AI,让它认可思路和逻辑推导,以及预期的实现方式。

如果把 AI 说服了,就可以开始写代码。

在这个过程中,如果有思维漏洞或者卡住的地方,要问 AI,或者让 AI 把思路不严谨的地方挑出来。

最后代码抠出来了,要让 AI 挑一下刺——「有没有考虑好边界情况」「变量名命名这样合适吗」「如果这个地方数据规模大了之后会不会有问题」等等。

我下面写一个示例 prompt(也可以自己用 AI 生成一个):

你现在是一个严格的算法面试官,帮我训练这道题。
题目:【粘贴题目链接或题目描述】
请严格遵守以下规则:
【第一阶段:思路对线】
1. 在我"说服你"之前,绝对不要给我任何解题思路、提示或代码。
2. 我会先口述我的思路,包括:
   - 我对题意的理解
   - 我选择的算法和原因
   - 我的实现步骤(伪代码级别)
   - 时间 / 空间复杂度的预估
3. 你要做的:
   - 针对我推理中【逻辑跳跃】【边界没想清】【复杂度估算错误】
     【伪代码描述模糊】的地方,逐个反问,让我自己补全
   - 只要还有任何一处我没说圆,就继续追问,不要因为我大体说对了
     就放过细节
   - 直到我的思路足以支撑写出 bug-free 的代码,才让我开始编码
【第二阶段:代码 review】
4. 我写完代码后,你从以下角度挑刺:
   - 边界情况(空输入、单元素、极值、整数溢出等)是否处理全?
   - 变量命名清不清楚?有没有歧义?
   - 时间 / 空间复杂度是不是最优?
   - 有没有更简洁或更优雅的写法?
5. 挑刺时也用反问的方式,不要直接给答案。
   比如:"如果输入是空数组你这段代码会怎么样?"
【其他要求】
- 整体语气模拟真实面试官:冷静、犀利,但不带情绪否定
- 如果我寻求帮助,你可以给一个【最小提示】,
  不要直接说答案
- 我说"开始"之后我们进入流程

刷多少合适

我自己写了393道 如果方法得当的话且有举一反三的能力 把HOT100写熟悉就行 这个看个人

三、技术

比如 MySQL、Redis、消息队列、JVM、JUC 这些。

可以先打开黑马程序员、尚硅谷的视频 看一看他们每个章节标题就行,再找一找常见的八股文看看一般都考些什么,最后就可以打开对话框和 AI 开始聊了。

比如说 Redis 就可以问——

Redis 是干什么的?为什么要有 Redis?Redis 存在的必要性是什么?Redis 是通过什么提升增删改查效率的?Redis 底层数据结构有哪些?为什么要有这些数据结构?这些数据结构对于优化效率的帮助体现在哪?用 Redis 可能会出现哪些问题?为什么会出现这些问题?出现了这些问题我怎么解决......

可以一直问下去。

我的学习顺序

  1. 先彻底理解这个技术本身的出现是为了满足什么需求(以及为什么会出现这个需求)
  2. 理解这个技术是怎么用的,还有哪些性质
  3. 理解这个技术的底层原理
  4. 这个技术的这些特性是由哪些底层原理决定的

举个例子:学习 Redis

第一. 为什么会需要 Redis

  • 数据原本存在哪?→ MySQL。
  • MySQL 有什么问题?→ 磁盘 IO 慢、单机 QPS 有上限、热点数据被反复查。
  • 为什么磁盘慢?→ 机械寻道 / SSD 也比内存慢一个数量级;为什么内存就快?
  • 那能不能直接把数据放内存?→ 用本地缓存(Caffeine、Guava Cache,再退一步直接用 HashMap)行不行?→ 单实例确实够用,但有几个绕不过去的问题:多实例之间数据不共享、容量受限于单机堆内存、服务一重启就丢、一个实例更新了别的实例感知不到。
  • 为什么是 Redis 而不是别的?→ 它不只是 KV,还提供丰富数据结构 + 持久化 + 主从 + 哨兵 + 集群 + 原子操作,生态最成熟,基本就是默认选择。
  • 哪些业务场景「非 Redis 不可」?→ 高并发读、计数器、分布式锁、排行榜、Session 共享、限流、去重、延迟队列、消息广播。

第二. 怎么用 + 有哪些特性

Redis 有几种数据类型?每种类型对应什么经典场景?

  • String → 缓存对象、计数器、分布式锁、限流令牌桶
  • Hash → 存对象字段、购物车
  • List → 消息队列、最新动态列表
  • Set → 去重、交并差(共同好友、标签)
  • ZSet → 排行榜、延迟队列、按时间窗口
  • Bitmap → 签到、用户在线状态
  • Geo → 附近的人
  • Stream → 消息队列(替代 List 方案)

第三. 底层原理

  • 单线程为什么不慢?→ 基于内存 + IO 多路复用(epoll)+ 避免锁竞争 + 高效数据结构。
  • 每种数据类型底层是什么?→ String 是 SDS(动态字符串),List 是 quicklist + listpack,Hash 是 listpack/dict,Set 是 intset/listpack/dict,ZSet 是 listpack/跳表 + 字典。
  • 为什么 ZSet 选跳表不选红黑树?→ 实现简单、范围查询友好、内存连续性好。
  • 持久化?→ RDB(快照、fork 子进程、二进制紧凑)vs AOF(命令日志、三种刷盘策略)vs 混合持久化。
  • Cluster?→ 16384 槽 + CRC16 + gossip + 重定向。

第四.这个技术的这些特性是由哪些底层原理决定的

  • 为什么 INCR 是原子的?→ 单线程模型决定的。
  • 为什么 Hash 小的时候特别省内存?→ 用 listpack 紧凑存储,超过阈值才升级为 dict。
  • 为什么 Redis 重启可能丢数据?→ AOF 默认 everysec、RDB 是间隔快照、主从是异步复制。
  • 为什么会有缓存穿透 / 击穿 / 雪崩?→ 缓存「key 不存在 / 单热点失效 / 批量同时失效」分别对应三种现象,解决方案(空值缓存 + 布隆过滤器 / 互斥锁 + 逻辑过期 / 随机 TTL + 多级缓存 + 熔断)也都从机制推得出。
  • 为什么会有双写一致性问题?→ 缓存和 DB 是两套存储 + 网络延迟 + 并发,所以才有「先删缓存还是先更 DB / 延迟双删 / canal 监听 binlog」几种方案。

总体来说就这些

用AI提高效率很重要 绝大部分的学习过程都用AI来做 没什么毛病 我百分之八十五以上的学习时间都是在AI对话框里面度过的

当然这只是我个人的看法,不一定都得这样

然后心态很重要 拥有良好的心态就是胜利

#我的求职进度条#
全部评论

相关推荐

评论
4
4
分享

创作者周榜

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