← Meta Interview Insights

Meta·Software Engineer·Technical Phone Screen·Senior

SeniorPrefer not to say
Apr 2026

Summary

Meta frontend design interview, one main coding/design problem with a follow-up discussion. The question was meaty enough that the whole session basically revolved around it.

Questions Asked (1)

Q1

Build a React table component that supports pagination and sorting, with clean component decomposition, sensible state design, and dynamic column configuration. Follow-up: how would you extend it and make it work on mobile?

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

Spent the first few minutes just thinking out loud about how to split things up, like a Table wrapper, a Header row, a Body, a Pagination control.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (data size, server vs client-side pagination/sorting, column config API) and then walk through a clean component decomposition: a container Table component managing state, presentational subcomponents (Header, Body, Pagination), and a column configuration array. Discuss state design (useState/useReducer for page, sort, data) and trade-offs, then address the follow-up by outlining extension points (virtualization, server-side ops) and mobile responsiveness (horizontal scroll, card layout, touch targets).

Pro tip: Emphasize controlled vs uncontrolled component patterns and memoization (React.memo, useMemo) to avoid unnecessary re-renders—Meta interviewers value performance awareness and API design maturity.

1. Clarify requirements and constraints

Ask about data volume, client vs server-side pagination/sorting, column configuration needs, and expected interactions. This shows you avoid premature implementation and align with real-world use cases.

2. Design component decomposition and state

Propose a container/presentational split: Table (stateful) renders Header, Body, Pagination. Define state: currentPage, sortConfig, and data (or fetch status). Use useReducer for complex state transitions.

3. Define column configuration API

Design a columns prop as an array of objects with key, header, sortable, render, etc. This enables dynamic columns and keeps the component reusable and declarative.

4. Implement pagination and sorting logic

For client-side, slice data and sort with a comparator; for server-side, trigger fetches on page/sort change. Discuss controlled props (onPageChange, onSortChange) for flexibility.

5. Address extension and mobile follow-up

Outline extension points: virtual scrolling, column resizing, row selection. For mobile, suggest responsive design: horizontal scroll, stacked card layout, larger touch targets, and hiding less important columns.

Key Points to Mention

  • Controlled vs uncontrolled components and lifting state up
  • Performance optimizations: React.memo, useMemo, useCallback, and avoiding inline functions
  • Server-side vs client-side pagination/sorting trade-offs (latency, data size, complexity)
  • Accessibility: ARIA roles, keyboard navigation for sortable headers and pagination
  • Mobile responsiveness: horizontal scroll, card layout, touch-friendly controls, and media queries
  • Extensibility: virtualized rows, column resizing, row selection, and theming

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