Interview
What Engineers Search For When Preparing: A Search Analytics Study
We analyzed 12,885 on-site search queries from engineers prepping for interviews. DSA patterns and named problems dominate; language prep is the top gap.

We pulled every query typed into Thita.ai's on-site search bar over the last 15 months — 12,885 rows — normalized and topic-classified them in code, and measured what share of real search intent already lands on an existing page versus what doesn't. This is a companion piece to our hardest DSA patterns study: that one measured what engineers get wrong once they start solving; this one measures what they go looking for before they start.
Headline numbers
- 12,885 search rows, 3,814 distinct normalized queries, spanning ~15 months.
- Among queries that are at least 3 characters long (a proxy for an actual typed word, not a keystroke-in-progress), 15.4% land on a topic we can map to an existing page — DSA pattern names, named problems, or a programming language.
- The largest single mapped topic is DSA pattern names (two pointers, sliding window, binary search, dynamic programming, and so on) — 672 queries from 120 distinct searchers, already served by our DSA patterns pages.
- The second-largest mapped topic is named problem search — people typing a specific problem's title (e.g., "two sum," "trapping rain water," "best time to buy and sell stock") directly into the search bar — 595 queries from 101 distinct searchers, already served by problem search.
- Programming languages (Python, Java, SQL, JavaScript, C++, and others) are searched by 79 distinct people across 369 queries and currently have no dedicated per-language prep page — the clearest unmet-demand signal in this dataset.
What we could and couldn't classify
Search-bar analytics log every keystroke of a live, incremental search box, not just submitted queries — so a large share of rows are single- or two-character fragments ("s," "t," "91") captured mid-type rather than a complete search. Restricting to queries of 3+ characters is the fairer cut for "did this search have real intent," and that's the number we lead with above (15.4% matched). Looked at across every row including fragments, the match rate is lower (13.7%) simply because keystroke fragments can't match anything.
Everything that isn't a DSA pattern name, a named problem, or a programming language falls into an "other / unclassified" bucket in our topic taxonomy. That bucket is large and is a mix of: keystroke fragments, off-platform terms (career-adjacent searches unrelated to coding interview prep), and a long tail of specific problem or concept names our current keyword rules don't yet recognize. We do not publish anything from that bucket beyond its aggregate size — see Publication rules below.
Topics with too little data to publish
Several topics we defined in code — company-specific searches, system design, low-level design, resume/ATS, mock/AI interview, AI coach, roadmap/study-plan, and generic "coding problem" phrasing — appeared in the data but each had fewer than 50 distinct searchers, our publication floor for this study (same floor used across our DSA pattern difficulty study). We report that they exist and are non-zero, but we do not publish their counts, because a count from under 50 people is too easy to make identifying and too noisy to trust as a trend.
Methodology
- Source: the
search_analyticstable (on-site search-bar queries, ~15 months of history). Onlyuser_idandquerywere read for this study — never the result the user clicked, response time, or any other column. - Normalization: every query is lowercased, trimmed, had internal whitespace collapsed, and had punctuation stripped, so
"Two Pointers!!","two pointers", and" two pointers "all count as the same query. - Topic classification: each normalized query is assigned to exactly one topic bucket by deterministic keyword rules defined in code (no ML, no fuzzy scoring) — DSA pattern names are matched against our canonical pattern registry (the same source of truth used to render
/dsa-patterns), named-problem fragments against a curated list drawn from this dataset's own frequency table, company names against a curated public list of well-known interview employers, and so on for system design, low-level design, behavioral, resume, mock interview, AI coach, roadmap, and programming languages. The first matching rule wins; rules are checked in a fixed priority order (documented in the script) to resolve overlaps like "design pattern" reading as low-level design rather than the DSA "Design Patterns" category. - Suppression (topics): a topic's aggregate is only published if at least 50 distinct users searched something in it. Topics below that floor are acknowledged as present but their counts are withheld.
- Suppression (individual queries): this study's source data is free text, so we apply a stricter, separate rule before ever considering publishing a single raw query string: it must appear at least 50 times and from at least 50 distinct users. Every query that clears that bar is then hand-reviewed for names, emails, or anything else personal before it can be published — code alone cannot certify that. In this dataset, exactly two raw queries cleared the 50-occurrence/50-user bar; both were single- or two-character keystroke fragments with no informational content ("s"; a two-digit fragment), so after hand review we chose not to publish either — clearing the anonymity bar isn't the same as being worth publishing, and neither carries a topic-level finding beyond what's already reported above. No raw, free-text query is included anywhere in this post or its underlying data file as a result.
- Never published: individual query text below the 50-occurrence/50-user floor, any per-user information, click targets, response times, or search filters.
- Cadence: annual, per our research-studies plan (MASTER_PLAN §8.4).
What this means for content planning
The clearest, most actionable gap in this data is programming-language-specific prep content — 79 distinct searchers looked for language-specific material with no dedicated page to land on today. DSA pattern and named-problem search, by contrast, are already well served by existing pages; the opportunity there is making sure those pages rank and are easy to find from search, not building new ones.
Read the companion study: The DSA Patterns Engineers Actually Fail.