<?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: Nachiket Salvi</title>
    <description>The latest articles on DEV Community by Nachiket Salvi (@nachiket_salvi_d54a6d4dd9).</description>
    <link>https://dev.to/nachiket_salvi_d54a6d4dd9</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%2F4085355%2Fd8c4b3d6-f34f-4eba-8742-8848b8b11aa1.jpg</url>
      <title>DEV Community: Nachiket Salvi</title>
      <link>https://dev.to/nachiket_salvi_d54a6d4dd9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nachiket_salvi_d54a6d4dd9"/>
    <language>en</language>
    <item>
      <title>The one skill behind frontend interviews: matching the signal to the technique</title>
      <dc:creator>Nachiket Salvi</dc:creator>
      <pubDate>Wed, 19 Aug 2026 16:23:29 +0000</pubDate>
      <link>https://dev.to/nachiket_salvi_d54a6d4dd9/the-one-skill-behind-frontend-interviews-matching-the-signal-to-the-technique-3fp5</link>
      <guid>https://dev.to/nachiket_salvi_d54a6d4dd9/the-one-skill-behind-frontend-interviews-matching-the-signal-to-the-technique-3fp5</guid>
      <description>&lt;p&gt;Most frontend interview prep is a list of questions. You grind the list, feel&lt;br&gt;
prepared, then freeze in the room — because the real question was never "do you&lt;br&gt;
know debounce," it was "can you &lt;em&gt;notice&lt;/em&gt; that this problem wants debounce."&lt;/p&gt;

&lt;p&gt;That noticing is the actual skill. Interviews test whether you can read a vague&lt;br&gt;
problem and reach for the right tool fast. The list-grinding approach trains&lt;br&gt;
recall; the interview tests recognition. They're not the same muscle.&lt;/p&gt;

&lt;p&gt;Here's the pattern that helped me, with concrete examples across the areas&lt;br&gt;
frontend interviews actually cover.&lt;/p&gt;

&lt;h2&gt;
  
  
  The move: signal → technique
&lt;/h2&gt;

&lt;p&gt;For every problem, name the &lt;em&gt;signal&lt;/em&gt; (the tell in the prompt) and the&lt;br&gt;
&lt;em&gt;technique&lt;/em&gt; it points to. Train the mapping, not the memorized answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "only run after the user stops typing" → &lt;strong&gt;Technique:&lt;/strong&gt; debounce
(trailing timer, reset on each call).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "same input, don't recompute" → &lt;strong&gt;Technique:&lt;/strong&gt; memoize with a &lt;code&gt;Map&lt;/code&gt;
keyed on the arguments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "these async steps depend on each other, cancel if a newer one
starts" → &lt;strong&gt;Technique:&lt;/strong&gt; an abort token / stale-response guard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "child re-renders when unrelated parent state changes" →
&lt;strong&gt;Technique:&lt;/strong&gt; &lt;code&gt;memo&lt;/code&gt; + stable callbacks (&lt;code&gt;useCallback&lt;/code&gt;), or lift/colocate
state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "derived value recomputed every render and it's expensive" →
&lt;strong&gt;Technique:&lt;/strong&gt; &lt;code&gt;useMemo&lt;/code&gt; — but first ask if it's &lt;em&gt;actually&lt;/em&gt; expensive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TypeScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "the return type depends on the argument's type" →
&lt;strong&gt;Technique:&lt;/strong&gt; generics, or overloads when the shapes are discrete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "this value is one of a fixed set and I keep typo-ing it" →
&lt;strong&gt;Technique:&lt;/strong&gt; &lt;code&gt;as const&lt;/code&gt; + a union, over a loose &lt;code&gt;string&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Browser / performance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "layout janks while scrolling" → &lt;strong&gt;Technique:&lt;/strong&gt; move work off the
main thread or batch reads/writes to avoid layout thrash.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal:&lt;/strong&gt; "I need to know when this element enters the viewport" →
&lt;strong&gt;Technique:&lt;/strong&gt; &lt;code&gt;IntersectionObserver&lt;/code&gt;, not scroll listeners.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why easy → hard matters
&lt;/h2&gt;

&lt;p&gt;Once you've got the mapping, walk each technique from its simplest form to its&lt;br&gt;
gnarly edge cases. Debounce is easy until the interviewer asks for a &lt;em&gt;leading&lt;/em&gt;&lt;br&gt;
edge, or cancellation, or a flush. The easy version proves you know the tool;&lt;br&gt;
the hard version is where the signal-reading actually pays off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practicing the recognition, not the recall
&lt;/h2&gt;

&lt;p&gt;Two things that made this stick for me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the code where you read it.&lt;/strong&gt; Reading a debounce implementation and
&lt;em&gt;writing&lt;/em&gt; one against a live console are different. Do the second.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get quizzed, don't get told.&lt;/strong&gt; Have someone (or an LLM) give you the signal
and make you produce the technique cold, then critique it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I ended up building a free site around exactly this — &lt;a href="https://frontend-interview.com" rel="noopener noreferrer"&gt;Frontend Interview&lt;br&gt;
Prep&lt;/a&gt; — 265 questions across HTML/CSS, the&lt;br&gt;
browser, JavaScript, TypeScript, React, system design, and DSA, each pairing the&lt;br&gt;
signal with the technique and each with an in-browser editor so you can run your&lt;br&gt;
answer. There's also a "copy as prompt" button on every question that hands you&lt;br&gt;
a ready-made "quiz me on this" prompt for ChatGPT/Claude, which is the&lt;br&gt;
recognition-drilling loop from point 2. It's the tool I wish I'd had.&lt;/p&gt;

&lt;p&gt;But the technique stands on its own: next time you practice, before you write a&lt;br&gt;
line, say out loud what signal the prompt is giving you and which tool it wants.&lt;br&gt;
That habit is what shows up in the room.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>interview</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
