Top 30 Tooling Interview Questions and Answers
30 multiple-choice questions on Tooling, drawn from 30 bites out of the 47 tagged Tooling on Tezvyn. Answer them here or read straight down. Every question carries the correct option, why it is correct, and a link to the bite it came from.
30 questions. Pick an answer, or open “Show the answer” to read it.
Answers are graded in your browser. Nothing is saved, and no XP or streak is earned here. The app keeps score.
Question 1 of 30
When adding a new implicit dependency such as a Logger to a deep call chain, what is the main benefit of Kotlin 2.4.0 stable context parameters?
Show the answer
Answer: a · They let the compiler pass the dependency implicitly through the call stack, avoiding changes to every intermediate function signature.
Stable context parameters allow the compiler to implicitly pass dependencies through call chains, eliminating the need to refactor every intermediate signature when adding a new implicit dependency. Option C describes explicit backing fields, a separate Kotlin 2.4.0 feature for property storage shapes, not dependency threading.
Read the full bite: Kotlin 2.4.0 Ships Stable Context Parameters and UUID API
Question 2 of 30
A team needs a niche third-party native SDK that has no Expo support yet wants EAS builds and OTA updates. What is the most accurate take?
Show the answer
Answer: a · They can use Expo prebuild with a config plugin to integrate the SDK while keeping EAS and OTA
Expo prebuild plus a config plugin lets you add arbitrary native code while retaining EAS Build and EAS Update. Abandoning Expo is unnecessary, and Expo Go actually cannot load custom native modules, which is the reverse of the distractor's claim.
Read the full bite: Expo managed workflow vs bare React Native
Question 3 of 30
How do the Kotlin Language Server Alpha and the Kotlin Toolchain differ in purpose?
Show the answer
Answer: a · The Language Server brings IntelliJ-engine-backed completions to LSP editors, while the Toolchain unifies build, test, and agent workflows
The Language Server delivers IntelliJ-engine-backed diagnostics and completions to LSP-compatible editors, whereas the Toolchain is a unified CLI for builds, tests, and agents. Option C reverses these roles, which is tempting because both tools were announced together and relate to developer workflow.
Read the full bite: Kotlin 2.4.0 Preview, Unified Toolchain, and LSP Alpha Land
Question 4 of 30
Which statement accurately describes Metro's primary role in a React Native project?
Show the answer
Answer: c · It compiles multiple JavaScript source files into a single, optimized bundle for execution.
Metro's core function is to act as a "specialized compiler" that takes numerous JavaScript files, resolves dependencies, transforms code, and combines them into a single, optimized bundle for efficient loading on devices. Option B describes a package manager, C describes native build tools, and D describes the React Native framework itself.
Read the full bite: Metro: The JavaScript Bundler for React Native
Question 5 of 30
Why is it a problem to list a library your source code imports at runtime under devDependencies?
Show the answer
Answer: d · A production install that skips devDependencies leaves it missing, causing runtime errors
Production installs omit devDependencies, so a runtime import placed there will be absent and throw module-not-found. Runtime libraries must live under dependencies.
Read the full bite: dependencies vs devDependencies in package.json
Question 6 of 30
What is the primary function of the `create-vite` tool?
Show the answer
Answer: c · To generate a new web application project with a chosen framework and pre-configured Vite setup.
The card describes `create-vite` as a "project wizard or a blueprint generator" for "creating new projects from scratch." It explicitly states that it is not for adding Vite to an existing project, which makes option A incorrect.
Read the full bite: Scaffolding a Vite Project with `create-vite`
Question 7 of 30
What is the critical reason for wrapping Vite's HMR API calls within an if (import.meta.hot) block?
Show the answer
Answer: b · To prevent runtime errors in the production build where import.meta.hot is undefined.
The card states that forgetting this wrapper will 'crash your production build' because 'import.meta.hot is undefined' in production. Option A describes the function of hot.accept(), not the purpose of the conditional check itself.
Read the full bite: Vite's HMR API: Manually Controlling Hot Reloads
Question 8 of 30
When resolving a package, which source does npx check first before falling back to its cache or the network?
Show the answer
Answer: a · The local project's node_modules/.bin directory
npx prioritizes a local project binary to avoid unnecessary network requests, checking node_modules/.bin before its own cache or the registry. Option D is tempting because caching is a core feature, but local copies take precedence.
Read the full bite: npx: Execute Packages Without Installing Them
Question 9 of 30
When timing a competitor's public API from your laptop, why report the median and p95 across many samples rather than a single measurement?
Show the answer
Answer: a · A single request can be skewed by transient network jitter, caching, or geography, so distributions reveal real behavior
Latency varies with jitter, caching, and location, so a distribution with median and tail percentiles is honest; a single sample is noise. The distractor claiming one sample suffices ignores that server latency is anything but constant.
Read the full bite: Measure a competitor's public performance
Question 10 of 30
After a developer builds an APK, what is the primary function of the Android Debug Bridge (ADB) in the development workflow?
Show the answer
Answer: d · To facilitate communication with a device for transferring and installing the APK.
ADB is a command-line tool that enables communication with a device. Its primary role after a build is to install the APK using `adb install`. Compiling the APK is the job of a build tool like Gradle, not ADB.
Read the full bite: What is ADB and what are two common commands you use?
Question 11 of 30
What is the main advantage of generating prop documentation with react-docgen-typescript over maintaining a markdown prop table?
Show the answer
Answer: a · Docs stay synchronized with the typed source because they are extracted from it
Extracting from typed source means renaming or adding a prop updates docs automatically, eliminating drift. It does not affect bundle size or SSR, and it relies on types rather than replacing them, so those options are wrong.
Read the full bite: Auto-generating component API docs from source
Question 12 of 30
Why should react be listed under peerDependencies rather than dependencies when publishing a component library?
Show the answer
Answer: c · It prevents shipping a duplicate React copy that breaks hooks via mismatched instances
Bundling React would give consumers two React instances, breaking hooks and context; a peer dependency makes them share their single copy. Install speed, privacy flags, and what npm publishes are unrelated to this choice.
Read the full bite: Publishing a component to a private NPM registry
Question 13 of 30
Which benefit best captures why Storybook is treated as design system infrastructure rather than just a playground?
Show the answer
Answer: c · It serves as a shared surface for isolated development, living docs, and automated testing
Storybook ties together isolated building, browsable documentation, and visual or interaction testing across teams. It does not compile to native code, replace a registry, or author production CSS, making those options incorrect.
Read the full bite: Storybook's role in design system infrastructure
Question 14 of 30
What is the most important reason a monorepo's CI needs affected-package detection for a design system?
Show the answer
Answer: a · It avoids rebuilding and testing every package when only a few changed, keeping CI fast
Affected detection limits CI work to changed packages and their dependents, preventing full-repo rebuilds as the system grows. Cross-package imports, publishing, and circular-dependency resolution are separate concerns it does not handle.
Read the full bite: Monorepo vs polyrepo for a design system
Question 15 of 30
How does a monorepo primarily facilitate consistent usage of a design system across multiple applications?
Show the answer
Answer: c · By enabling direct source code imports and atomic commits for shared component updates.
A monorepo ensures consistency by allowing applications to import components directly from source code and enabling a single, atomic commit to update a shared component and all its consumers simultaneously. Option A is incorrect because monorepos avoid the publishing step common in polyrepos; changes are applied directly within the single repository.
Read the full bite: Monorepos: A Design System's Single Source of Truth
Question 16 of 30
What is true of a CSS pre-processor like Sass?
Show the answer
Answer: c · It compiles its extended syntax into plain CSS at build time
A pre-processor compiles extended syntax to standard CSS during the build; browsers only ever run the output. Browsers never parse Sass directly, and Sass variables resolve at compile time rather than updating live.
Question 17 of 30
Which statement best captures how PostCSS differs from Sass?
Show the answer
Answer: c · PostCSS is a plugin-driven tool that transforms a CSS AST, so its features depend on the plugins enabled
PostCSS is a transformation platform whose capabilities come from plugins like autoprefixer and cssnano, unlike Sass's fixed language. It is not limited to minification, and it is commonly used alongside Sass in the same pipeline.
Read the full bite: What is PostCSS and how it differs from Sass
Question 18 of 30
What does autoprefixer rely on to decide which vendor prefixes to add?
Show the answer
Answer: a · A browserslist target combined with Can I Use compatibility data
Autoprefixer uses your browserslist configuration plus Can I Use data to emit only the prefixes your target browsers need. It deliberately avoids blanket-adding every prefix, and declaration order or user sampling play no role.
Question 19 of 30
What is the central reason a PostCSS plugin parses CSS into an AST instead of running a regular expression over the source text?
Show the answer
Answer: d · AST traversal safely targets specific nodes like declarations without corrupting comments or urls
Walking the parsed AST lets the plugin operate on exactly the right declaration nodes while leaving comments, urls, and unrelated tokens intact. Raw regex over text easily mangles those edge cases.
Read the full bite: Build a custom PostCSS plugin (px to rem)
Question 20 of 30
Why is package download count a weak primary metric for design system adoption?
Show the answer
Answer: a · It measures installation, not actual component usage, and is skewed by CI pulls
Downloads prove a package was installed, often by CI repeatedly, not that components are actually used, so they overstate adoption. AST-based usage analysis measures real usage and off-system code instead.
Read the full bite: Tracking design system adoption technically
Question 21 of 30
Why is static analysis of consuming repos preferred over npm download counts for measuring design system adoption?
Show the answer
Answer: a · Downloads are inflated by CI and caches and reveal nothing about which components render
Download numbers are skewed by automated installs and tell you nothing about actual component usage, whereas AST scanning counts real imports and props. The legal and npm-capability claims are false.
Read the full bite: Tracking design system component usage and versions
Question 22 of 30
Why can a console.log placed inside a FlatList renderItem noticeably hurt scroll performance during development?
Show the answer
Answer: b · It fires on every row render, serializing arguments and, with a debugger attached, crossing the bridge on the JS thread
Inside renderItem the log runs for every visible row repeatedly, and each call serializes data and, when devtools are connected, hops the bridge, occupying the JS thread. It does not trigger re-renders or run on the UI thread, and it does not persist to disk.
Read the full bite: Cost of console.log and production-safe debugging
Question 23 of 30
What primary problem does Autoprefixer solve for front-end developers?
Show the answer
Answer: b · Automatically adding necessary vendor prefixes to modern CSS properties.
Autoprefixer's core function is to automate the addition of vendor prefixes to modern CSS, as stated in the card's 'WHY IT EXISTS' and 'THE MENTAL MODEL' sections. Option D describes a different CSS optimization tool, not Autoprefixer.
Read the full bite: Autoprefixer: Stop Memorizing CSS Vendor Prefixes
Question 24 of 30
What is the key distinction between PostCSS and a CSS preprocessor like Sass?
Show the answer
Answer: d · PostCSS transforms standard CSS using a plugin ecosystem, while Sass provides a complete language with built-in features.
PostCSS is a tool that transforms existing CSS using a variety of JavaScript plugins, rather than being a new language itself. In contrast, Sass is a dedicated language that offers built-in features like variables and mixins.
Read the full bite: PostCSS: The 'Babel for CSS' Transformer
Question 25 of 30
Which scenario best illustrates a problem Stylelint is designed to address?
Show the answer
Answer: b · A team member uses a hex color value instead of a required CSS custom property.
Stylelint's primary role is to enforce coding conventions and catch logical errors, not just formatting. Disallowing hex codes in favor of custom properties is a perfect example of enforcing a specific project rule or convention, as highlighted in the card's canonical example. Inconsistent indentation, mixed quotes, and trailing whitespace are formatting concerns, which are better handled by a dedicated formatter like Prettier.
Read the full bite: Stylelint: Your CSS Guardian for Rules, Not Just Formatting
Question 26 of 30
Which statement best distinguishes Sass from PostCSS?
Show the answer
Answer: a · Sass is an extended language that compiles to CSS; PostCSS transforms CSS via plugins
Sass is a preprocessor language compiled to CSS with mixins, functions, and nesting; PostCSS is a plugin-driven transformer (e.g., autoprefixer). They are complementary, not interchangeable, and both run at build time, not in the browser.
Question 27 of 30
What primary challenge does Style Dictionary address for organizations with multi-platform products?
Show the answer
Answer: b · Ensuring consistent visual design and efficient updates across separate web, iOS, and Android codebases.
Style Dictionary's core purpose is to provide a single source of truth for design tokens, which are then compiled into platform-specific style files, thereby ensuring visual consistency and streamlining updates across multiple applications. It does not directly create UI components or define the design system itself, nor is its primary goal performance optimization.
Read the full bite: Style Dictionary: A Build Tool for Design Tokens
Question 28 of 30
Why is component coverage a stronger adoption metric than npm download counts for a design system?
Show the answer
Answer: a · Coverage reflects how much UI actually uses system components, while downloads only show installs
A package can be installed yet barely used, so downloads overstate real adoption. Coverage measures the share of actual UI built from system components, capturing genuine usage rather than mere installation.
Read the full bite: Measuring design system adoption and health
Question 29 of 30
Why does go vet flag a method receiving sync.Mutex by value even though the compiler accepts the code?
Show the answer
Answer: d · The compiler intentionally ignores suspicious but technically legal patterns that likely indicate bugs.
The Go compiler deliberately allows technically valid code that looks buggy, which go vet catches with heuristics. The syntax-only distractor is wrong because the compiler does enforce type correctness.
Question 30 of 30
Which type of issue is Cargo Clippy primarily designed to identify, going beyond the Rust compiler's capabilities?
Show the answer
Answer: c · Non-idiomatic code, potential performance problems, and stylistic inconsistencies.
Clippy extends the Rust compiler by identifying non-idiomatic code, performance bottlenecks, and style issues, acting as an automated code reviewer. The Rust compiler primarily focuses on memory safety, syntax, and type correctness.
Read the full bite: Cargo Clippy: Your Opinionated Rust Code Reviewer
Could you explain these out loud?
That is what an interview actually tests. Tezvyn gives you questions like these with what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.