中科全安面经
- 轮次
- 一至二面
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 自我介绍和实习项目主要做了什么?
- 实习期间修复的 bug 是主动发现还是他人安排?
- 实习期间开发了哪些功能,产出如何?
- 服务器垃圾定时清理器如何判断垃圾可以清理?
- 研判解析工具如何实现?
- 如何重构任务执行流程?
- 如何创建线程池?
- 什么是分布式锁?
- Java 中使用过哪些锁?
- 使用线程池时如何保证数据安全?
- 有哪些 SQL 优化经验?
- ThreadLocal 是什么?
- 一般如何设计索引?
- 是否熟悉 SQL?
《参考解析》
- 线程池设计:根据任务的 CPU/IO 属性设置线程数、队列和拒绝策略,提交任务时避免共享可变状态,结果和异常要显式收集。线程安全不能只靠线程池本身,还要保护业务数据。
- 分布式锁:Redis 锁至少要使用带随机值的 SET NX PX,并通过 Lua 校验持有者后删除;业务执行时间可能超过租期时要续期或用 fencing token 防止旧持有者继续写入。
- ThreadLocal:它把线程作为索引保存线程私有数据,在线程池中必须在 finally 中 remove,避免长生命周期线程持有请求对象造成泄漏。
- 索引设计:围绕高频过滤、排序和联合查询设计,遵循最左匹配原则并结合选择性与执行计划;清理任务要有明确的生命周期、白名单和可恢复记录,不能仅凭文件名或时间做删除判断。