<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jacob Zhang</title>
    <description>The latest articles on DEV Community by Jacob Zhang (@zx12345).</description>
    <link>https://dev.to/zx12345</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4151491%2F5f9ce5a0-29f8-499d-938e-7d5f25002600.jpeg</url>
      <title>DEV Community: Jacob Zhang</title>
      <link>https://dev.to/zx12345</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zx12345"/>
    <language>en</language>
    <item>
      <title>3 Hard Lessons from Building a Voice-Based AI Mock Interviewer</title>
      <dc:creator>Jacob Zhang</dc:creator>
      <pubDate>Thu, 08 Oct 2026 04:38:30 +0000</pubDate>
      <link>https://dev.to/zx12345/i-built-an-ai-voice-mock-interviewer-for-mle-interviews-10i6</link>
      <guid>https://dev.to/zx12345/i-built-an-ai-voice-mock-interviewer-for-mle-interviews-10i6</guid>
      <description>&lt;p&gt;I spent the last few months building a voice-based mock interview tool for ML engineers. The idea sounded simple: an AI interviewer that talks to you, asks follow-ups, and scores your answers.&lt;/p&gt;

&lt;p&gt;The reality was harder than expected. Here are the three lessons that cost me the most time.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Latency is the whole product
&lt;/h2&gt;

&lt;p&gt;In text chat, users forgive a 3-second reply. In voice, a 2-second pause kills the conversation. The interview feels broken.&lt;/p&gt;

&lt;p&gt;I used the OpenAI Realtime API, which streams audio with low latency. But the API alone was not enough. I had to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start generating the reply while the user is still finishing their sentence (careful turn detection).&lt;/li&gt;
&lt;li&gt;Keep the spoken replies short. Long answers sound robotic and make the user wait.&lt;/li&gt;
&lt;li&gt;Handle interruptions. Real interviewers get interrupted. The system needs to stop talking and listen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are building anything voice-first, budget half your engineering time for latency. It is not a detail. It is the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Scoring AI answers needs guardrails, or it lies to you
&lt;/h2&gt;

&lt;p&gt;My first scoring version gave a 7/10 to a 5-second "I don't know." That is worse than no score at all — it teaches the user nothing and destroys trust.&lt;/p&gt;

&lt;p&gt;What worked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hard gate: no score unless the user spoke substantively for at least 60 seconds.&lt;/li&gt;
&lt;li&gt;A strict rubric: 5/10 is a solid average, 8+ is genuinely excellent. The prompt explicitly forbids inflating scores for vague answers.&lt;/li&gt;
&lt;li&gt;Five separate dimensions (correctness, depth, clarity, structure, communication) instead of one number. A single score hides everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honest scoring is a feature. Users can tell when they are being flattered.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Follow-up questions must come from the conversation, not a script
&lt;/h2&gt;

&lt;p&gt;A fixed list of follow-ups feels like a quiz. A real interviewer listens and probes deeper into what you just said.&lt;/p&gt;

&lt;p&gt;I generate follow-ups from the full conversation history. The interviewer tracks the candidate's reasoning and asks about the weakest point. This was the hardest part to get right — it needs enough context to be smart, but not so much that it rambles.&lt;/p&gt;

&lt;p&gt;The test I use: if you removed the AI label, would this feel like a human interviewer? If yes, ship it.&lt;/p&gt;




&lt;p&gt;These lessons come from building DeepOffer (&lt;a href="https://getdeepoffer.com" rel="noopener noreferrer"&gt;https://getdeepoffer.com&lt;/a&gt;), a voice mock interview platform for MLE interviews. If you are preparing for interviews, the free question bank is a good place to practice. And if you are building voice AI yourself, I would love to compare notes in the comments.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>showdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Collected 2026's Google Interview Reports. Here's What's Actually Getting Asked.</title>
      <dc:creator>Jacob Zhang</dc:creator>
      <pubDate>Wed, 30 Sep 2026 06:11:23 +0000</pubDate>
      <link>https://dev.to/zx12345/i-collected-2026s-google-interview-reports-heres-whats-actually-getting-asked-3g05</link>
      <guid>https://dev.to/zx12345/i-collected-2026s-google-interview-reports-heres-whats-actually-getting-asked-3g05</guid>
      <description>&lt;p&gt;Google's coding interviews have a reputation for being unpredictable. After going through publicly shared 2026 interview reports (Glassdoor, Blind, LeetCode Discuss, July–September), I'd say they're not random at all — the structure is actually pretty predictable. Here's what keeps showing up.&lt;/p&gt;

&lt;p&gt;A quick note on honesty: dated first-hand reports from the last few months are scarce. Most of what's public is pattern-level, not exact questions. Below I separate &lt;strong&gt;confirmed sightings&lt;/strong&gt; (a report explicitly named or clearly described the exact problem) from &lt;strong&gt;high-frequency patterns&lt;/strong&gt; (the report described the shape; these are Google's classic favorites under that shape). Don't trust anyone selling you "the exact 2026 question list" — including me.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Graphs are the #1 topic this year
&lt;/h2&gt;

&lt;p&gt;Island-counting problems (the LeetCode 200 family) keep appearing as round openers — but they're just the warm-up. The real test is the follow-up, where the interviewer adds dynamic constraints mid-round ("now land appears over time — track the island count as it changes").&lt;/p&gt;

&lt;p&gt;Also showing up: grid traversal where your movement depends on &lt;em&gt;where you came from&lt;/em&gt; (state is more than just coordinates), and ranking-from-pairwise-results problems, which are topological sort in disguise.&lt;/p&gt;

&lt;p&gt;If you grind one chapter, make it graphs: &lt;strong&gt;200, 695, 994, 417, 329, 207, 210, 269&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The DP → binary search arc
&lt;/h2&gt;

&lt;p&gt;The most 2026 thing I saw: you start with a DP formulation, and the interviewer keeps pushing — find the bottleneck, optimize — until you land on a binary search solution. The textbook example is the "painter's partition" problem (&lt;strong&gt;LC 410&lt;/strong&gt;): the DP is O(n²k), the expected answer is binary-search-the-answer plus a greedy check.&lt;/p&gt;

&lt;p&gt;Train this as a template, not a trick: &lt;strong&gt;410, 1011, 1482&lt;/strong&gt; are the same muscle. If your DP solution passes without a follow-up asking "can you do better," something went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Trie + HashMap combos
&lt;/h2&gt;

&lt;p&gt;One August report described a medium-hard Trie problem combined with hash maps — and it earned a Strong Hire. The lesson: practice the two together, not in isolation. &lt;strong&gt;208&lt;/strong&gt; (implement it cold), &lt;strong&gt;212&lt;/strong&gt;, &lt;strong&gt;421&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Union-Find gets grilled on correctness
&lt;/h2&gt;

&lt;p&gt;Interviewers aren't just checking that you &lt;em&gt;use&lt;/em&gt; DSU — they're digging into path compression, union-by-rank, and whether you can argue correctness or offer alternative traversals. &lt;strong&gt;684&lt;/strong&gt; until it's muscle memory, then &lt;strong&gt;990&lt;/strong&gt;, &lt;strong&gt;128&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Streams and heaps
&lt;/h2&gt;

&lt;p&gt;Moving averages and top-K over data streams keep appearing in both SWE and MLE rounds. &lt;strong&gt;346&lt;/strong&gt; was a confirmed sighting; the two-heap median template (&lt;strong&gt;295&lt;/strong&gt;) and Kth-largest (&lt;strong&gt;703&lt;/strong&gt;, &lt;strong&gt;215&lt;/strong&gt;) round it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The confirmed-sighting shortlist
&lt;/h2&gt;

&lt;p&gt;These eight were explicitly named or clearly described in 2026 reports, so they're the safest bets if you're short on time: &lt;strong&gt;200, 416, 174, 410, 2188, 128, 346, 315&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;I turned the full research into an 81-problem checklist, ranked by 2026 frequency — every problem labeled as confirmed vs. pattern-matched, each with its source and a prep tip. It's $19 on Gumroad if you want the whole thing: &lt;a href="https://mleplaybook.gumroad.com/l/google-leetcode-interview-checklist-2026" rel="noopener noreferrer"&gt;https://mleplaybook.gumroad.com/l/google-leetcode-interview-checklist-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Good luck out there. And if you've interviewed at Google recently, drop what you saw in the comments — I'll fold it into the next update.&lt;/p&gt;

</description>
      <category>leetcode</category>
      <category>interview</category>
      <category>google</category>
      <category>career</category>
    </item>
  </channel>
</rss>
