【杭州Java社招一面】Redis、线程池、线上问题排查
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 看过我上一篇帖子的小伙伴知道,我最近是学agent相关的内容的。上周更新了下boss的简历,就有hr邀约面了。我自己是没主动去投递,一方面是因为我做的agent的项目还相当于mvp阶段,我知道这个复杂度还不够深,我也是想着边面边完善的。另一方面主动投递的话,如果刚好一周内有太多面试,对于还在职干活的我来说也确实忙不过来。这一家面试,是杭州Java岗社招的第一轮技术面。以下是问题记录以及我的一点总结。
- 自我介绍。
- 介绍最近投入时间比较多的项目。
- 针对项目提了方案设计的问题。
- 缓存怎么做的,用的什么数据结构?
- 消息怎么做的,传递什么内容,怎么找到对应的缓存?
- 为什么选Redis?
- 如果服务挂了,Redis持久化还有意义吗?
- Redis占用内存多大?单机还是集群?
- Redis持久化怎么做的,什么时候触发?
- set x 1 命令执行10万次,aof文件里面有多少条?
- Redis读写流程哪个阶段最耗时?
- Redis单机和集群有什么区别,迁移需要调整什么?
- 线程池的基本流程?
- 如何判断核心线程数是否已满?
- 核心线程的创建在并发下怎么保证不超过coresiz
《参考解析》
- Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
- 并发问题应先明确共享状态和一致性边界,再选择锁、CAS或队列。线程池需要根据任务是CPU密集还是IO密集设置核心线程数、队列容量和拒绝策略,并监控活跃数与队列长度。
- Agent或RAG链路应记录工具调用、检索证据和失败原因;对非法参数、路由错误和超时设置校验、重试上限与可观测日志,避免把模型输出直接当作可信结果。