拿下技术面上传简历

你维护一个权限判定服务:canAccess(user, resource, action, depth) 通过角色继承和资源父链递归求解。团队用记忆化搜索实现——进程内一个全局 HashMap 缓存,key 是把四个字段拼成的字符串,value 是布尔结果。上线后随着权限数据和 QPS 增长,堆内存持续上涨、Full GC 变频繁,P99 从个位数毫秒涨到数百毫秒。请定位可能的原因并给出改造方案;同时说明什么条件下你会放弃记忆化搜索,改用别的做法。

数据结构与算法动态规划与贪心5 年以上知识点 1 个

面试官在考什么

考察他能否把“算法上的记忆化”当成工程缓存来治理(key 设计、容量、生命周期、失效一致性),并判断记忆化搜索本身的适用边界。

记忆化搜索

回答框架 · 前两步

  1. 原因定位:key 用字符串拼接,每次调用生成新 String,命中判定靠逐字符比较;全局无界缓存 + 高频新 key,导致长生命周期对象堆积,GC 压力直接体现在 P99。
  2. 改造:key 换成紧凑的数值/结构化对象(user/resource 用整型 id,避免字符串),缓存换成有界分段 LRU,容量按可用堆和命中率反推;必要时做本地+共享两级缓存。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题