Skill: yangchao228/resume-interview-generator (version 1.0.0)

--- name: resume-interview-generator description: 基于候选人简历自动生成面试题、笔试题、追问路径和评分标准的 AI Skill。当用户需要准备技术面试、生成笔试题目、评估候选人简历、或设计面试评估方案时使用。输入简历内容和岗位信息后，自动输出结构化的题目与评估内容，支持面试题模式、笔试题模式、综合评估模式等多种输出形式。 --- # 简历出题技能 基于候选人简历内容，自动生成面试题、笔试题、追问路径与评分标准，帮助面试官快速完成候选人评估准备。 ## 核心能力 1. **简历解析**：提取技术栈、项目经历、亮点、风险点、可疑表述 2. **面试题生成**：基于四个核心维度（项目经历、基础能力、代码能力、行为协作）生成题目，中级以上增加场景设计考察 3. **笔试题生成**：生成选择题、简答题、编程题、SQL题、系统设计题 4. **评估标准**：每道题附带考察点、参考答案、评分标准、回答质量判断依据 ## 隐私与输出约束 - 默认忽略简历中的姓名、电话、邮箱、住址、证件号、社交账号等个人敏感信息，不作为出题重点 - 输出候选人画像、题目和评估结论时，不要重复展示联系方式等敏感字段 - 如果用户直接提供了包含真实个人信息的简历，聚焦技术经历、项目内容、岗位匹配度和风险验证点 - 如果需要举例，优先使用“候选人”“该候选人”“简历显示”这类泛化表述 ## 难度等级体系 技能内置 **5 个难度等级**： | 等级 | 工作年限 | 核心要求 | |------|----------|----------| | **实习生** | 应届/在校 | 基础概念、学习能力、项目参与真实性 | | **初级** | 1-3 年 | 独立完成需求、技术栈熟练度、代码质量 | | **中级** | 3-5 年 | 复杂业务处理、性能优化、跨模块协作 | | **高级** | 5-8 年 | 架构设计、系统治理、技术决策 | | **资深** | 8 年以上 | 技术战略、组织效能、业务技术融合 | ## 面试题考察维度 ### 核心三维考察（所有级别） 1. **项目经历**（3 题，含追问与行为协作考察） - 验证项目真实性 - 技术选型的 trade-off - 难点解决方案的细节 - **融合行为协作考察**：Owner意识、跨团队协作、冲突处理、复盘总结 - 每题附带压力追问，深挖可疑点 2. **基础能力**（5 题） - 计算机专业知识掌握和运用能力 - 根据技术栈匹配核心知识点（语言、框架、中间件、数据库等） - 区分概念层、实践层、原理层 - 技术深度与广度平衡 3. **场景设计**（中级及以上，2 题） - 系统设计能力 - 高并发/稳定性/数据治理等场景 - 技术方案评估与选型 4. **代码能力**（2 题，手写代码） - 算法与数据结构 - 代码设计与实现 - 边界处理与鲁棒性 - **要求候选人手写代码** ## 时间控制 - **总时长**：控制在 50 分钟以内 - **题目总数**： - 实习生/初级：10 题（约 45 分钟） - 中级及以上：12 题（约 50 分钟） - **时间分配建议**： - 项目经历：每题 5-6 分钟（含追问），共 15-18 分钟 - 基础能力：每题 3-4 分钟，共 15-20 分钟 - 场景设计：每题 5-6 分钟，共 10-12 分钟（中级及以上） - 代码能力：**手写代码，共 10-20 分钟** ## 工作流程 ### 步骤 1：接收输入 收集以下信息（带 * 为必填）： - **简历内容***：简历文本或 PDF/Word 内容 - **岗位名称**：如"高级Java后端工程师" - **岗位方向**：如后端开发、大数据、AI工程 - **目标级别**：实习生/初级/中级/高级/资深 - **面试类型**：技术面/综合面/笔试 - **输出模式**：面试题模式/笔试题模式/综合评估模式/极简模式/深挖模式 - **题目数量**：默认 10-12 道面试题或 20 道笔试题 - **输出语言**：中文/英文（默认中文） - **重点识别包装风险**：是/否（默认是） ### 步骤 2：简历解析 分析简历，形成"简历画像"： **技术画像**： - 编程语言（Java/Go/Python等） - 框架与中间件（Spring/Redis/MQ等） - 数据库（MySQL/ES/MongoDB等） - 云平台与DevOps工具 **项目画像**： - 项目数量与复杂度 - 候选人在项目中的角色 - 涉及的技术挑战 - 量化成果（性能提升、成本下降等） **风险识别**： - 模糊表述（"参与"、"负责"但无具体细节） - 可疑亮点（技术栈与年限不匹配） - 时间线疑点 - 过度包装痕迹 ### 步骤 3：生成面试题 根据目标级别，按以下维度生成题目： #### 实习生/初级（共 10 题，约 45 分钟） - **项目经历**：3 题（含压力追问和行为协作考察），验证项目真实性和参与度 - **基础能力**：5 题，考察基础概念、原理和知识掌握 - **代码能力**：2 题，手写代码，简单算法和代码实现 #### 中级及以上（共 12 题，约 50 分钟） - **项目经历**：3 题（含压力追问和行为协作考察），深挖架构决策和技术 trade-off - **基础能力**：5 题，底层原理和复杂场景应用 - **场景设计**：2 题，系统设计和方案评估（中级及以上特有） - **代码能力**：2 题，手写代码，算法结合设计思维 ### 步骤 4：生成笔试题 按题型生成： 1. **客观题**（5-6道） - 单选题：考察基础概念 - 多选题：考察知识广度 - 判断题：考察细节理解 2. **简答题**（3-4道） - 原理阐述 - 方案对比 - 问题排查 3. **编程题**（2-3道） - 算法题：与岗位相关 - 业务逻辑题：贴近实际工作 4. **设计题**（2-3道，中级及以上） - 数据库/SQL设计 - 系统架构设计 - 故障排查方案 ### 步骤 5：完善评估标准 每道题必须提供 **3 个版本**（版本A/版本B/版本C），方便面试官根据候选人情况选择。每个版本包含： - **具体问题**：完整的面试问题描述 - **出题原因**：为什么要问这道题 - **重点考察点**：核心能力标签 - **参考答案**：详细的参考答案（而不仅是要点） - **追问方向**：如何深入挖掘 - **回答质量判断**： - 优秀回答特征 - 合格回答特征 - 风险回答特征 - **建议评分**：分值或等级区间 **3 个版本的设计原则**： - **版本A**：标准难度，适合大多数候选人 - **版本B**：更深入/更开放，适合表现优秀的候选人 - **版本C**：更基础/更具体，适合需要降低难度的场景 ## 出题原则 1. **强相关原则**：优先围绕简历里真实写过的内容出题，而非泛泛的八股 2. **分层次原则**：同一技术点覆盖概念层、实践层、场景层、trade-off层 3. **可验证原则**：题目设计要能够区分"真做过/参与过/背过/包装" 4. **可评估原则**：每道题都要有明确的判断标准 5. **岗位适配原则**：同样技术点，不同级别的深度必须不同 6. **维度覆盖原则**：确保三个核心维度（项目经历、基础能力、代码能力）都有足够覆盖，行为协作融合在项目经历中考察 ## 输出格式模板 ### 简历分析摘要模板 ```markdown ## 候选人画像 - **工作年限**：X 年 - **目标级别**：实习生/初级/中级/高级/资深 - **岗位方向**：XXX ## 核心技术栈 - **语言**：XXX - **框架**：XXX - **中间件**：XXX - **数据库**：XXX ## 重点项目 1. **项目名称**：XXX - **角色**：XXX - **技术亮点**：XXX - **量化成果**：XXX ## 亮点识别 - XXX ## 风险点与待验证项 - XXX（建议通过 XX 方式验证） ## 建议重点验证方向 1. XXX 2. XXX ``` ### 面试题输出模板 ```markdown ## 一、项目经历考察（融合行为协作） ### 题目 1：[考察主题，如"Redis缓存设计"] **【版本A】标准版** **具体问题**： 你在项目中使用 Redis 做缓存时，是怎么设计缓存更新策略的？ **出题原因**： 考察候选人对缓存一致性的理解，以及是否真正处理过实际业务场景。 **重点考察点**： - 技术能力：缓存一致性策略（Cache Aside/Write Through等） - 行为协作：是否与产品/业务方沟通过期策略 **参考答案**： 1. 首先应该说明选用的策略，最常用的是 Cache Aside（旁路缓存） 2. 需要说明缓存穿透、击穿、雪崩的应对方案 3. 应该提到过期时间的设置策略和业务场景的结合 4. 如果涉及分布式锁，说明使用场景和实现方式 **追问方向**： - 技术追问：如果缓存和数据库数据不一致，你们是怎么发现的？怎么处理？ - 行为追问：这个过期策略是你定的还是和业务方一起定的？如果业务方要求数据实时性很高，你怎么沟通？ - 压力追问：你说你们系统QPS很高，能说一下具体多高吗？缓存命中率是多少？ **回答质量判断**： - **优秀**：能清晰说出策略选择原因，主动提及三种缓存问题及解决方案，有具体数据支撑 - **合格**：能说出基本策略，知道缓存穿透等问题，但解决方案不够完善 - **风险**：只说用了Redis做缓存，说不清楚更新策略，或说"用的框架自动处理" **建议评分**：15分（满分20分） --- **【版本B】深入版** **具体问题**： 你们系统中 Redis 缓存和数据库是如何保证最终一致性的？有没有遇到过不一致的情况，当时是怎么发现和解决的？ **出题原因**： 深入考察候选人对分布式系统一致性的理解，以及问题排查和解决能力。 **重点考察点**： - 技术能力：分布式一致性、问题排查、监控告警 - 行为协作：推动问题解决的能力 **参考答案**： 1. 说明具体的缓存更新策略，以及为什么选择这种策略 2. 描述可能出现不一致的场景（如更新失败、并发竞争等） 3. 说明监控手段：如何发现不一致（对账、校验、报警） 4. 说明解决方案：重试机制、补偿机制、人工介入流程 5. 提及预防措施：事务、分布式锁、消息队列等 **追问方向**： - 技术追问：你们有没有做缓存和数据库的对账？是怎么做的？频率如何？ - 行为追问：如果发现了数据不一致，但影响范围不确定，你会怎么处理？ - 压力追问：如果老板说"缓存绝对不能和数据库不一致"，你会怎么回应？ **回答质量判断**： - **优秀**：能系统性地描述完整方案，包括预防、发现、解决全流程，有实际案例 - **合格**：能说出几种不一致场景和基本解决方案，但对监控和对账描述不清 - **风险**：否认会出现不一致，或说"我们没遇到过这种情况" **建议评分**：20分（满分20分） --- **【版本C】基础版** **具体问题**： 你们项目里为什么要用 Redis？用它做了什么事情？ **出题原因**： 验证候选人是否真实使用过 Redis，了解其对基础概念的掌握。 **重点考察点**： - 技术能力：Redis 基础使用场景 - 行为协作：在团队中承担的角色 **参考答案**： 1. 说明使用 Redis 的业务场景（如缓存热点数据、Session存储等） 2. 说明选择 Redis 的原因（速度快、数据结构丰富等） 3. 提及使用过程中的注意事项（如内存限制、持久化等） 4. 说明自己在其中的具体工作 **追问方向**： - 技术追问：Redis 是什么类型的数据库？和 MySQL 有什么区别？ - 行为追问：这个 Redis 是你自己搭的还是运维搭建的？遇到问题找谁？ - 压力追问：Redis 是单线程的，你们怎么知道性能够不够用？ **回答质量判断**： - **优秀**：能清晰说明场景和原因，主动对比其他方案，提到实际使用细节 - **合格**：能说出基本使用场景，但细节不够丰富 - **风险**：说不清楚具体做了什么，或场景明显不合理 **建议评分**：12分（满分20分） --- **【面试官选用建议】** - 候选人基础较弱或简历描述较模糊 → 选用 **版本C** - 候选人表现正常，需要标准考察 → 选用 **版本A** - 候选人表现优秀，希望深入挖掘 → 选用 **版本B** ## 二、基础能力考察 [同上格式，每个题目提供3个版本] ## 三、场景设计考察（中级及以上） [同上格式，每个题目提供3个版本] ## 四、代码能力考察（手写代码） **总时长**：10-20 分钟 ### 题目 X：[如"实现一个LRU缓存"] **【版本A】标准版** **具体问题**： 请手写代码实现一个简单的 LRU（最近最少使用）缓存，支持 get 和 put 操作。 **要求**： - 使用你熟悉的编程语言 - get 和 put 操作时间复杂度为 O(1) - 考虑容量限制，超出容量时淘汰最久未使用的数据 **参考思路**： 1. 使用 HashMap + 双向链表实现 2. HashMap 存储 key 到链表节点的映射 3. 双向链表维护访问顺序，头部为最近使用，尾部为最久未使用 4. get 时移动到头部，put 时如果已满则移除尾部 **参考答案**（Java示例）： ```java class LRUCache { class Node { int key, value; Node prev, next; Node(int k, int v) { key = k; value = v; } } private int capacity; private Map<Integer, Node> map; private Node head, tail; public LRUCache(int capacity) { this.capacity = capacity; map = new HashMap<>(); head = new Node(0, 0); tail = new Node(0, 0); head.next = tail; tail.prev = head; } public int get(int key) { if (!map.containsKey(key)) return -1; Node node = map.get(key); moveToHead(node); return node.value; } public void put(int key, int value) { if (map.containsKey(key)) { Node node = map.get(key); node.value = value; moveToHead(node); } else { if (map.size() >= capacity) { Node toRemove = tail.prev; removeNode(toRemove); map.remove(toRemove.key); } Node newNode = new Node(key, value); map.put(key, newNode); addToHead(newNode); } } private void moveToHead(Node node) { removeNode(node); addToHead(node); } private void removeNode(Node node) { node.prev.next = node.next; node.next.prev = node.prev; } private void addToHead(Node node) { node.next = head.next; node.prev = head; head.next.prev = node; head.next = node; } } ``` **评分标准**： - 能写出基本结构（5分） - 正确处理get/move逻辑（5分） - 正确处理put/淘汰逻辑（5分） - 代码规范、边界处理（3分） - 复杂度分析正确（2分） --- **【版本B】进阶版** **具体问题**： 请实现一个支持过期时间的 LRU 缓存，每个 key 可以设置独立的过期时间，过期后自动清理。 **附加要求**： - 支持为每个 key 设置过期时间（TTL） - 过期数据需要被清理，不能一直占用内存 - 考虑并发安全性 **参考思路**： 1. 在基础LRU上增加过期时间字段 2. 使用优先队列或定时任务清理过期数据 3. 使用读写锁保证线程安全 4. 访问过期数据时检查并清理 **评分重点**： - 过期机制设计（8分） - 并发安全处理（7分） - 内存回收策略（5分） --- **【版本C】简化版** **具体问题**： 请实现一个固定大小的缓存，支持插入和查询操作，当缓存满时新数据替换最旧的数据。 **要求**： - 使用数组或链表实现即可 - 不需要考虑O(1)复杂度 - 能运行通过基本测试 **参考思路**： 1. 使用数组存储数据，记录插入顺序 2. 查询时遍历查找 3. 满了之后从头部或尾部替换 **评分重点**： - 能完成基本功能（15分） - 代码逻辑清晰（5分） --- **【面试官选用建议】** - 候选人算法基础较弱 → 选用 **版本C** - 标准算法考察 → 选用 **版本A** - 希望考察设计和优化能力 → 选用 **版本B** ``` ### 笔试题输出模板 ```markdown ## 编程题 ### 题目 X：XXX **难度**：初级/中级/高级 **建议时长**：XX 分钟 **题目描述**： XXX **示例**： 输入：XXX 输出：XXX **解题思路**： 1. XXX 2. XXX **评分点**： - 基础实现（X分）：XXX - 边界处理（X分）：XXX - 复杂度优化（X分）：XXX **参考答案**： ```语言 代码示例 ``` ``` ## 不同级别出题深度指南 参考 [references/level-guidelines.md](references/level-guidelines.md) 了解 5 个级别的详细出题深度要求。 ## 岗位专项题库参考 参考 [references/tech-questions.md](references/tech-questions.md) 获取常见技术栈的出题参考。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)