██╗███╗ ██╗████████╗███████╗██████╗ ██╗ ██╗██╗███████╗██╗ ██╗███████╗██████╗
██║████╗ ██║╚══██╔══╝██╔════╝██╔══██╗██║ ██║██║██╔════╝██║ ██║██╔════╝██╔══██╗
██║██╔██╗ ██║ ██║ █████╗ ██████╔╝██║ ██║██║█████╗ ██║ █╗ ██║█████╗ ██████╔╝
██║██║╚██╗██║ ██║ ██╔══╝ ██╔══██╗╚██╗ ██╔╝██║██╔══╝ ██║███╗██║██╔══╝ ██╔══██╗
██║██║ ╚████║ ██║ ███████╗██║ ██║ ╚████╔╝ ██║███████╗╚███╔███╔╝███████╗██║ ██║
╚═╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
🥷 基于简历的 AI 模拟面试 Claude Code Skill
根据你的简历自动生成技术面试题,逐题问答、实时评估、按主题归档,支持多轮练习和薄弱知识点分析。
- 简历驱动 — 读取你的简历,针对技术栈和项目经验出题
- 逐题模拟 — 一题一答,实时评估(✅ 正确 /
⚠️ 部分 / ❌ 未答出) - 讲解模式 — 答错后可追问,不限轮次,确认理解后再进入下一题
- 动态权重 — 高权重题目出多了自动衰减,防止低权重题目被饿死
- 难度自适应 — 根据正确率动态调整:低于 30% 出基础题,30-70% 出原理题,高于 70% 出深度题
- 智能查重 — 基于 Jaccard + LCS 双重相似度检测,避免重复出题
- 按主题归档 — 题目自动分类到
topics/,精简格式存储 - Guide 渐进积累 — 薄弱 topic 先生成基础原理文档,讲解追问增量追加,逐步完善
- 复习模式 — 从答错/跳过的题目中随机抽取,巩固薄弱点,不另出新题
- 多轮续练 — 支持断点续练,进度持久化在
bank.json
curl -fsSL https://raw.githubusercontent.com/lznauy/interviewer/main/install.sh | bash自动下载预编译二进制,无需 Go 环境。支持 Linux / macOS(amd64 / arm64)。
安装内容:
~/.claude/skills/interview/scripts/interviewer— CLI 工具~/.claude/skills/interview/SKILL.md— Claude Code Skill 定义
可通过 SKILL_DIR 环境变量自定义安装路径。
需要 Go 1.21+。
git clone https://github.com/lznauy/interviewer.git
cd interviewer
./install.sh如果本地有 Go 环境,install.sh 会自动从源码编译。
在 Claude Code 中直接说:
帮我准备面试
或:
面试 # 开始/继续面试
复习 # 复习错题
mock interview
- 检测会话 —
interviewer detect扫描已有题库,选择继续或新建 - 简历解析 — LLM 解析简历生成
resume.json,CLI 校验格式 - 出题计划 —
interviewer plan计算权重和分配,LLM 构造题目,dedup查重 - 逐题作答 — 回答后即时评估,答错进入讲解模式
- 讲解模式 — 展示标准答案要点,用户可追问,理解后进入下一题
- 归档落盘 —
interviewer commit更新题库,LLM 写入 topic 详情 - 循环练习 — 继续下一轮 / 复习错题 / 结束
已有会话后,说「复习」或在继续菜单中选择「复习错题」:
interviewer review从全量错题中随机抽取 5 道- 展示上次作答记录,对比本次回答
- 答错进入讲解模式,复习结果通过
commit覆盖更新
权重计算:
resume.skills中的技能基础权重 = 10resume.projects[].techStack中的技术基础权重 = 5- 衰减公式:
effective = baseW / (1 + 0.1 * asked * baseW),防止高频题目饿死低频题目 - 每轮固定出 10 题,按权重比例分配
难度调整:(基于单技能正确率)
< 30%→ 难度 1-2(基础概念)30% ~ 70%→ 难度 3-4(原理与设计)> 70%→ 难度 4-5(深度 / 开放题)
查重阈值:
- 相似度
≥ 0.8→ 判定为重复,直接过滤 - 相似度
≥ 0.5→ 标记为可疑,提示审查 - 相似度计算:
max(Jaccard(bigram), LCS_ratio)
薄弱话题判定: 正确率 < 40% 且题目数 ≥ 2
所有命令输出 JSON 到 stdout,错误输出到 stderr。
| 命令 | 输入 | 用途 |
|---|---|---|
interviewer detect [dir] |
— | 扫描子目录,查找已有面试记录 |
interviewer check <dir> |
— | 校验 resume.json 格式 |
interviewer plan <dir> |
— | 计算出题指导(权重、分配、难度、去重索引) |
interviewer weights <dir> |
— | 查看所有 skill 的权重计算详情(调试用) |
interviewer review <dir> |
— | 从全量错题中随机取 5 道复习 |
interviewer dedup <dir> |
stdin: ["title1",...] |
批量查重 |
interviewer commit <dir> |
stdin: round result JSON | 落盘(更新 bank.json + index.md) |
your-interview-dir/
├── resume.json # 简历解析结果(LLM 生成,CLI 校验,只读)
├── bank.json # 题库状态(CLI 读写,LLM 只读)
├── index.md # 题目总览表(CLI 自动生成)
├── topics/ # 按主题分类的题目详情(LLM 写入)
│ ├── sync.md
│ └── ...
└── guides/ # 薄弱知识点文档(LLM 写入)
└── ...
example/ 包含一个 Go 后端面试题库示例:
- 10 道题目,覆盖 6 个技术方向(Go、MySQL、Redis、K8s、gRPC、Kafka)
- 含
resume.json简历文件(6 年 Go 后端工程师) - 含
bank.json进度文件 - 含
guides/薄弱知识点解析(Kafka、MySQL、Redis)
go test ./...interviewer/
├── cmd/interviewer/ # CLI 入口
│ └── main.go
├── internal/
│ ├── bank/ # 题库数据模型
│ ├── check/ # 简历校验
│ ├── commit/ # 落盘逻辑
│ ├── dedup/ # 题目查重(Jaccard + LCS)
│ ├── detect/ # 会话检测
│ ├── plan/ # 权重计算与出题分配
│ ├── resume/ # 简历模型
│ └── review/ # 错题复习选取
├── example/ # 示例题库
├── install.sh # 一键安装脚本
├── SKILL.md # Claude Code Skill 定义
└── go.mod # 零外部依赖