← Coinbase Interview Insights

Coinbase·Software Engineer·Technical Phone Screen·Intermediate

IntermediatePrefer not to say
Jul 2026Remote

Summary

Coinbase frontend interview where they had me build a full autocomplete component from scratch. Pretty involved for a single session, covering debouncing, async fetching, keyboard nav, and styling the active state all at once.

Questions Asked (1)

Q1

Build an autocomplete input component that debounces user input, fetches suggestions asynchronously, renders the list, supports up/down arrow key navigation with the active item highlighted, and submits the selected value on Enter.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This was a lot to juggle in one question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline the component architecture and data flow. Walk through the implementation details for debouncing, async fetching, keyboard navigation, and accessibility, highlighting trade-offs and edge cases. Conclude with testing and performance considerations.

Pro tip: Emphasize accessibility (ARIA roles, screen reader support) and race condition handling (e.g., using AbortController or request IDs) to show production-level thinking. Mention how you would handle caching and rate limiting, especially in a fintech context like Coinbase.

1. Clarify Requirements and Constraints

Ask about expected scale, latency requirements, API rate limits, and accessibility standards. Confirm whether suggestions should be cached and how errors should be handled.

2. Design Component Architecture and Data Flow

Outline the component structure (input, suggestion list, state management) and the flow: user types -> debounce -> fetch -> update state -> render. Discuss state variables like query, suggestions, activeIndex, loading, and error.

3. Implement Debouncing and Async Fetching

Explain debounce implementation (e.g., using setTimeout/clearTimeout or a custom hook) and how to handle async requests with cancellation (AbortController) to prevent race conditions. Mention error handling and loading states.

4. Handle Keyboard Navigation and Selection

Describe key event handling for ArrowUp, ArrowDown, Enter, and Escape. Explain how to manage activeIndex, highlight the active item, and submit the selected value on Enter. Ensure focus management and accessibility (ARIA roles, aria-activedescendant).

5. Discuss Trade-offs, Testing, and Performance

Talk about trade-offs (e.g., debounce delay vs. responsiveness, client-side vs. server-side filtering). Outline testing strategies (unit, integration, E2E) and performance optimizations (memoization, virtualization for large lists).

Key Points to Mention

  • Debouncing technique and optimal delay (e.g., 300ms) to balance responsiveness and API load.
  • Race condition prevention using AbortController or request sequencing.
  • Accessibility: ARIA roles (combobox, listbox, option), aria-activedescendant, and screen reader support.
  • Keyboard navigation: handling ArrowUp/Down, Enter, Escape, and ensuring active item is scrolled into view.
  • Error handling and loading states: showing spinners, error messages, and retry mechanisms.
  • Caching and rate limiting: client-side caching of suggestions and respecting API rate limits.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.