‹ 首页

mock-interview

@toongri · 收录于 昨天 · 上游提交 昨天

Use when generating interviewer-side mock-interview questions from a candidate's resume — triggers include "모의면접 질문", "면접 예상질문", "이력서로 면접 질문", "꼬리질문", "drill-down 질문", "2단계 3단계 깊이", "mock interview questions", "interview questions from resume", "follow-up depth". Use whenever a user provides a resume (PDF/markdown) and asks for interview questions or follow-ups.

适合你,如果经常需要为候选人准备面试题目

/ 通过 npx 安装 校验哈希
npx oh-my-skill add toongri/oh-my-toong-playground/mock-interview
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- toongri/oh-my-toong-playground/mock-interview
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify toongri/oh-my-toong-playground/mock-interview
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
25GitHub stars
~4.7K最小装载
~7.4K含声明引用
~7.4K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 731a80a · 表述以原文为准
它做什么

当你提供简历并要求面试问题后,Claude不会一次性生成所有问题,而是逐题与你协作:先显示每个问题的方向、预期关键词和简历依据,等你确认后再深入下一题;最终通过多模型委员会验证后交付。

什么时候触发

当用户提供简历并要求生成面试题,或提到“꼬리질문”、“follow-up”、“drill-down”等关键词,或想准备面试候选人时触发。

装好后可以这样说
启动单个领域的逐题协作流程。
要求展示第一步的候选方向列表。
触发drill-down链式追问模式。
技能原文 SKILL.md作者撰写 · MIT · 731a80a

Mock Interview Questions

Overview

Generate interviewer-side mock-interview question sets from a candidate's resume, with drill-down chains that probe each main question level by level down the same thread.

This is the Socratic method applied to interviewing. Each follow-up digs one level deeper into the candidate's previous answer — same thread, never a sibling branch — and the chain keeps going until the candidate either reaches solid ground (genuine first-hand depth) or their reasoning collapses and they hit the edge of what they actually understand. That terminus — solid ground vs. collapse, and how deep it took to reach — is the signal the interview exists to produce.

Core principle: Each follow-up question must be a natural next question to the candidate's previous answer. Same thread, one level deeper — not a different branch. Stop only when the thread itself terminates (see Chain Depth Decision).

This is a collaborative co-design process with the interviewer, NOT a one-shot generator. The two rules below are mandatory and define how this skill works.

Rule 1 — Co-Design + Council, Not One-Shot (Mandatory)

Default LLM behavior is to silently produce a finished question set in one shot, then stop. That is the #1 failure this skill prevents. Two disciplines, neither opt-in:

1a. Per-question ping-pong with the interviewer

Do not dump a finished set. Build it with the interviewer, question by question. For each question, surface your decision rationale — direction, expected answer keywords, and resume evidence (not hidden chain-of-thought) — and get the interviewer's input BEFORE finalizing:

  • Direction: "이 질문 이런 방향(키워드 X)으로 가려는데 어때?"
  • Follow-up candidates: "이 답변 다음 꼬리질문 후보가 (A) …, (B) … 인데 뭐가 더 좋아?"
  • Happy-case keywords + evidence: "이 질문엔 이런 키워드로 답이 나와야 할 것 같고, 이력서 근거는 X야(또는 이력서엔 없고 후보 이해도를 떠보는 질문이야) — 동의해?"

Incorporate the interviewer's answer, then move on. You may batch the stages of ONE chain (one area) into a single checkpoint message, but never batch multiple areas or the full set, and never ask for a blanket rubber-stamp — each stage's direction / keywords / evidence must be individually visible and individually confirmable, and you wait for per-stage feedback before the next area. The process and its granularity ARE the product — the interviewer's domain judgment is what makes the keywords and evidence correct.

1b. Council validation to unanimous APPROVE

Send the interviewer-agreed draft through a multi-model council on the 10 review axes (see references/council-iteration.md). Default path: iterate to unanimous APPROVE, bringing each round's conflicts back to the interviewer. Explicit opt-out path: run exactly one council round silently — auto-apply verified factual-error fixes and consensus fixes, no user arbitration — then ship. This is the DEFAULT final step, not a conditional gate.

The only opt-out

The interviewer explicitly says "빠르게 / 그냥 한 번에 / 알아서 다 만들어줘". The bare filler "그냥" alone (e.g., "그냥 질문 좀 뽑아줘") is a casual discourse marker, NOT an opt-out. Even on a real opt-out, run exactly one silent council round — auto-apply verified factual-error fixes and consensus fixes, no user arbitration, then ship; never zero. Factual errors are never waved through in fast mode. Absent an explicit signal, ping-pong and council are the default.

| Rationalization | Reality | |-----------------|---------| | "User asked casually, so just produce it in one shot" | Ping-pong is default. No explicit "빠르게" → ping-pong. | | "Council takes time, skip it" | Council is default. The only opt-out is an explicit user signal. | | "Asking per question is too much" | That granularity IS the deliverable. Skipping it produces keywords/evidence the interviewer never validated. | | "I'll show the whole draft, then they can edit" | One-shot-then-edit is not co-design. Surface direction/keywords/evidence per question, before finalizing. |

Rule 2 — Drill-down Chain ≠ Branching Tree

Default LLM behavior is to produce a branching tree when asked for "3-level follow-ups." That is wrong.

| Wrong (branching tree) | Right (drill-down chain) | |------------------------|--------------------------| | Q → Q-A / Q-B / Q-C (3 keyword branches) → each branches again | Q → natural next question from Q's answer → natural next question from that answer → … | | Interviewer jumps onto a different path based on answer keyword | Interviewer goes one level deeper on the same thread | | Spreads into sibling branches — each path stays shallow | One thread, each level deepening it to its natural terminus (see Chain Depth Decision) |

Test: If Q3 would still make sense without hearing the Q2 answer, it is a sibling branch, not a depth chain.

When to Use — Skill Selection Decision

Resume-related skills overlap on keywords. Use this flowchart to choose the right one.

digraph skill_selection {
    rankdir=TB;
    node [shape=box, style=rounded];

    "Improve / fix / rewrite\nthe resume itself?" [shape=diamond];
    "Find / match jobs\nfor the candidate?" [shape=diamond];
    "Prepare interviewer-side\nquestions about the candidate?" [shape=diamond];

    "Improve / fix / rewrite\nthe resume itself?" -> "Use resume-forge\n(or review-resume)" [label="yes"];
    "Improve / fix / rewrite\nthe resume itself?" -> "Find / match jobs\nfor the candidate?" [label="no"];
    "Find / match jobs\nfor the candidate?" -> "Use resume-apply" [label="yes"];
    "Find / match jobs\nfor the candidate?" -> "Prepare interviewer-side\nquestions about the candidate?" [label="no"];
    "Prepare interviewer-side\nquestions about the candidate?" -> "Use THIS skill\n(mock-interview)" [label="yes"];
    "Prepare interviewer-side\nquestions about the candidate?" -> "None of the above —\nask user for clarification" [label="no"];
}

Triggers that map to THIS skill:

  • User provides a resume (PDF/markdown) and asks for interview questions
  • User mentions "꼬리질문 / follow-up questions / drill-down / 2단계 / 3단계 깊이"
  • User wants to prepare to interview a candidate (NOT to be interviewed)
Workflow
1. Read the resume. If PDF/image, emit a markdown rendering as Part 1 of the deliverable. If already markdown, reference directly.
2. Extract project-by-project facts.
3. Identify 5–10 candidate high-signal areas (trade-off decision, design rationale, or operational depth).
   → PING-PONG: present the area list, ask "이 영역들 어때? 더 팔 곳 / 뺄 곳?" Incorporate before continuing.
4. For each agreed area, present the chain as ONE checkpoint (Rule 1a batching): show the Main question and each stage — direction / happy-case keywords / resume evidence individually visible — and wait for the interviewer's per-stage feedback before moving to the next area. Apply the Chain Depth Decision per stage; keep drilling the same thread until it terminates (the candidate reaches solid ground, or a natural next question no longer follows). Never rubber-stamp a whole chain; never batch multiple areas into one checkpoint.
5. Assemble the agreed draft per Required Deliverable Structure (incl. [Interviewer Guide] blocks, 1-page summary).
6. COUNCIL VALIDATION (default): load references/council-iteration.md via Read tool, run council on the 10 review axes, iterate to unanimous APPROVE, bring each round's conflicts back to the interviewer. (If the interviewer opted out: run exactly one silent council round — auto-apply verified factual-error fixes and consensus fixes, no user arbitration — then ship.)
7. Ship after unanimous APPROVE (or the interviewer explicitly stops).
Steps 3, 4, and 6 are interactive. Do NOT run 1→7 silently and present a finished artifact unless the interviewer explicitly opted out ("빠르게 / 그냥 한 번에 / 알아서 다 만들어줘" — bare "그냥" alone does NOT count).
Chain Depth Decision

Drill the same thread until it terminates. There is exactly ONE reason to stop: no natural next question follows from the prior answer. Use this at each potential next stage.

digraph chain_depth {
    rankdir=TB;
    node [shape=box, style=rounded];

    "Does a natural next question\nfollow from the prior answer?" [shape=diamond];

    "Just heard the prior stage's answer" -> "Does a natural next question\nfollow from the prior answer?";
    "Does a natural next question\nfollow from the prior answer?" -> "STOP — the thread terminated:\nsolid ground reached, or the candidate\nhit the edge of their knowledge.\nThat terminus IS the signal." [label="no"];
    "Does a natural next question\nfollow from the prior answer?" -> "Write the next stage and keep drilling —\neven past what the resume explicitly states." [label="yes"];
}

If the only way to "continue" is to jump to a different aspect, that is a sibling branch, not depth — stop this chain and open a new Main question (Rule 2).

Do NOT stop because the resume text "ran out." The resume records what the candidate claimed, not the limit of what is worth probing — and real understanding usually lies past the literal resume text. A natural next question on the same thread is fair game no matter how deep it goes.

Fairness guard: keep "I don't know" (모르겠습니다) cost-free. Deep drilling is fair only if admitting the edge of one's knowledge is cheap — then a collapse is honest signal, not a manufactured one. A candidate who invents an answer under pressure does so because the interviewer punishes "I don't know," not because the question is deep — so fix the reaction, not the depth. The Interviewer Guide should say "if they reach their limit and say so, that is a clean terminus — note the depth and move on," never "they should have known this."

Anatomy of a Good Stage

Use numeric main-question IDs (Q1, Q2, …). Never use letter suffixes (Q-A, Q-B, Q-C) — those signal sibling branching, which Rule 2 forbids.

### Q{n} → stage-{N} drill-down

> [Natural next question from the prior stage's expected answer]

**Why this question is natural**: [1-2 sentence rationale referencing the prior answer thread]

**Happy-case answer keywords**
- [Concrete senior-discriminating points]
- [Operational signals — not buzzwords]
- *(Bonus, if mentioned spontaneously)* [Vendor / framework nuance — extra credit only; absence is not a scoring penalty]

**Resume evidence**: [Direct quote from resume that anchors this stage — OR, when the stage probes past the literal resume, say so plainly (e.g. "beyond the resume: does the GET_LOCK claim rest on real understanding of its lack of TTL?"). This line tells the interviewer how to read a failure here: a contradicted claim, or just the edge of the candidate's knowledge.]
Happy-case Keyword Rules

Keywords must be senior-discriminating, not surface vocabulary:

  • ✅ "queue capacity = arrival rate × allowable wait (Little's Law)" — dimensional reasoning
  • ❌ "ThreadPoolExecutor", "queue", "backpressure" — buzzword soup

Three layers per stage:

  • Primary — average expected answer
  • Strong senior signal — vendor nuance, dimensional analysis, anti-pattern recognition
  • (Bonus, if mentioned spontaneously) — extra credit; absence is not a scoring penalty

Anti-pattern trap handling: When candidates commonly pick a wrong option (e.g., CallerRunsPolicy breaks HTTP-pool isolation), keep that option visible in the keyword list AND attach a separate [Interviewer Guardrail] probe to verify the candidate recognizes the trap.

Question Framing — Real Facts, Not Hypotheticals

When asking about something the candidate may not have done, the tempting escape is the hypothetical — "If X had been the case, then …". Avoid it:

  • Hypotheticals collapse to zero signal when the candidate says "that didn't apply to me" — nowhere to go next.
  • The candidate reasons on top of an invented premise, weakening discrimination.

Pattern: ask a factual question, then let the chain naturally terminate or deepen based on the answer.

> Did the external site's webhook retry policy depend on your response code?

[Interviewer Guide — follow-up]
- "No, they didn't retry on response code" → chain naturally terminates (normal). Move to next area.
- "Yes, they retried based on response code" → enter the deepening question:
  "How did you respond on 0 affected rows to avoid retry storms?"

One answer signals termination, the other deepening. Both are valid signals. Hypothetical framing forces both onto the same path and loses the signal.

Visual Separation for Multi-Question Stages

When a stage naturally contains 2+ questions, do not put them in a single quote block — the interviewer reads them aloud in one breath.

**[Interviewer Guide — first utterance]**
> [Question 1]

[Happy-case keywords for Q1]

**[Interviewer Guide — second utterance (only if Q1 answer is sufficient)]**
> [Question 2 — natural deepening from Q1 answer]

[Happy-case keywords for Q2]

Conditional deepening uses a yes/no gate:

**[Interviewer Guide — yes/no gate]**
> [Yes/no question]

**[Interviewer Guide — follow-up handling]**
- "No" → chain naturally terminates (normal)
- "Yes" → proceed to the next utterance
Fact-Check High-Risk Areas

Common LLM factual errors. Verify before including in happy-case keywords:

| Area | Common error | Accurate fact | |------|-------------|---------------| | MySQL GET_LOCK() | "No auto-release" | Connection-scoped auto-release on session termination. Real issue: no lease/TTL, so the lock can stay held when the owning session hangs or its connection leaks without closing | | jmap | "Deprecated" | Per Oracle JDK docs, classified as experimental/unsupported (not deprecated). jcmd preferred | | MySQL composite index + range | "Only first column in key_len" | key_len includes the equality prefix plus the first range column. The second range column is a post-filter (ICP / Using where) | | Queue capacity sizing | "Processing time × wait time" (dimensional error: time²) | Arrival rate × allowable wait (Little's Law, L = λW) | | CallerRunsPolicy | "Normal backpressure choice" | When the isolated pool is reached from an HTTP/Tomcat thread, this defeats the isolation — anti-pattern | | LLM zero-retry | "Zero-retry for all errors" | Major LLM vendors (OpenAI, Anthropic, etc.) officially recommend exponential backoff for 429 Rate Limit — this is the exception |

This table is meant to grow. Add new factual pitfalls as you discover them.

Domain Mapping — Optional, Opt-In Only

Default: do not generate domain-mapping questions. A company name in the resume/prompt is not a license to auto-generate domain-specific probes.

Opt-in triggers: "Map to company X context" / "Include domain-fit questions" / "Add [domain] mapping".

Bad mapping is worse than no mapping. Example: mapping medical-reservation concurrency to an exchange's matching engine is the wrong analogy — matching engines are single-threaded in-memory while reservation systems use distributed locks. The correct analog is balance-hold / withdrawal-limit. Verify entity and pattern correctness for every mapping.

Required Deliverable Structure
  1. Part 1 — Resume body extracted as markdown: For PDF/image resumes, render the resume content at the top (personal info, experience, projects, activities). Interviewers cross-check facts without reopening the PDF.
  2. Part 2 — Areas (5–10): Main → drill-down stages, each a natural next question down the same thread, continuing until the thread terminates (solid ground or the edge of the candidate's knowledge). Each stage's Resume-evidence line says whether it is anchored in the resume or probes past it.
  3. Interviewer Usage Guide: Progression principles, area priority, time allocation for 60/90-minute modes.
  4. 1-page Compressed Summary (table): area name, main one-liner, drill-down stages, time — scannable at a glance.
  5. Red / Green Flag Checklist: signals for evaluating responses.
Council Validation (Default Final Step)

This is the corrected design. Earlier versions made council an opt-in "quality gate" — that was wrong. Council is the DEFAULT final step.

Send the interviewer-agreed draft through a multi-model council on the 10 review axes (chain naturalness, evidence-line honesty, happy-case senior discrimination, factual accuracy, depth appropriateness, utterance separation, difficulty calibration, question fairness, domain-mapping accuracy, area coverage — full definitions in references/council-iteration.md).

Do not expect one round. Typically 3–7 rounds. "round-2-pass + minor polish" ≠ ship-ready.

The only opt-out: interviewer explicitly says "빠르게 / 그냥 한 번에 / 알아서 다 만들어줘" (bare "그냥" alone does NOT count). Even then, run exactly one silent council round — auto-apply verified factual-error fixes and consensus fixes, no user arbitration — then ship. Opt-out reduces ping-pong and iteration depth; it never skips the first factual round.

REQUIRED: load references/council-iteration.md via the Read tool. Do not run council from memory — the strict prompt format, the 10 review axes, feedback triage, conflict→user-interview, and stop conditions all live there.

Common Rationalizations (Stop Signals)

| Excuse | Reality | |--------|---------| | "User asked casually — produce it in one shot" | Ping-pong is default. No explicit "빠르게" → ping-pong per question. | | "Council takes time — skip it" | Council is the default final step. Opt-out requires an explicit user signal. | | "A tree structure is richer" | The user specified a chain. Richness comes from depth, not sibling branches. | | "Listing keywords is enough" | Keyword lists become buzzword soup. Operational signals, dimensional reasoning, vendor nuance discriminate seniors. | | "Company name appeared — auto-add domain mapping" | Domain mapping is opt-in. Auto-adding produces bad analogies and gets rejected. | | "This fact is common knowledge" | See the fact-check table. LLMs get these wrong often. | | "The interviewer will know to break it up" | A single visual block gets read aloud as one block. Use [Interviewer Guide] separators. | | "All stages must reach depth 3" | Depth is set by the thread, not a quota. A chain stops when no natural next question follows — that may be depth 2 or depth 5. Don't pad to a number. | | "The resume doesn't back this depth, so stop" | The resume is what they claimed, not the limit of what's worth probing. If a natural next question follows on the same thread, drill it — real understanding usually ends past the literal resume text. | | "They couldn't answer the deep one — mark them down" | Reaching the edge of one's knowledge is a clean terminus, not a deduction. Only a collapse on claimed territory (contradicting their own resume) is a negative signal. Keep "I don't know" cost-free. |

Red Flags — Stop and Restart

If any of these appear, stop and correct:

  • Presenting a finished question set in one shot without per-question ping-pong (and the user did NOT opt out)
  • Shipping without council validation — the default path requires council to unanimous APPROVE; opt-out fast mode requires exactly one silent round. Zero council rounds is ALWAYS a red flag.
  • Finalizing direction / keywords / evidence without asking the interviewer "이거 어때?"
  • Sibling-branch notation (Q-A, Q-B, Q-C used as follow-ups)
  • Two or more questions packed into a single quote block
  • Domain-mapping area present when the user did not request one
  • Happy-case lists that are buzzword soup
  • A chain stopped at the resume boundary while a natural next question on the same thread still existed (the collapse point was never reached)
  • All chains padded to the same depth regardless of where each thread naturally terminates
Bottom Line

This skill is a collaborative co-design loop, not a generator. Build the question set with the interviewer one question at a time (Rule 1a), keep every follow-up a true depth chain drilled to where the candidate's understanding actually ends (Rule 2), then validate to unanimous council APPROVE (Rule 1b). The process and its granularity are the product — a finished artifact dumped in one shot, however polished, is the failure mode this skill exists to prevent.

按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。