← All topics

🌐 Interview Prep

Web & Frontend

HTML, CSS layout, the DOM, HTTP, browsers, React, security and accessibility: front-end and full-stack interview staples.

πŸ“˜ Learn it from scratch

Visual, hands-on lessons for every pattern in this topic. Do the lesson, then come back and the questions click.

100 questions, most asked first

Ordered so the most useful questions for learning each pattern come first.

#1What happens when you type a URL and press Enter?HTTP & APIsMediumFree#6CSS specificity and the cascadeBox modelMediumFree#8What is CORS?Web securityMediumFree#9Cross-site scripting (XSS)Web securityMediumFree#10Cross-site request forgery (CSRF)Web securityMediumFreeUnlock 60 more Web & Frontend questions Β· all 1,200 questions for $39/year (about 11Β’ a day)See full access#11How does HTTPS work?Web securityMediumπŸ”’#12Virtual DOM and reconciliationReactMediumπŸ”’#14How does useEffect work?ReactMediumπŸ”’#16Controlled vs uncontrolled inputsReactMediumπŸ”’#18Making a website accessibleAccessibilityMediumπŸ”’#22The critical rendering pathBrowser & performanceMediumπŸ”’#23Reflow vs repaint (layout thrashing)Browser & performanceMediumπŸ”’#24Core Web VitalsBrowser & performanceMediumπŸ”’#26HTTP caching (Cache-Control, ETag)Storage & cachingMediumπŸ”’#27Service workers and PWAsStorage & cachingMediumπŸ”’#28WebSockets vs polling vs Server-Sent EventsHTTP & APIsMediumπŸ”’#29Session cookies vs JWTsWeb securityMediumπŸ”’#30How does "Sign in with Google" work?Web securityMediumπŸ”’#31SSR vs CSR vs SSG (and ISR)ReactMediumπŸ”’#33The rules of hooksReactMediumπŸ”’#34useMemo and useCallbackReactMediumπŸ”’#35Context vs Redux vs other state librariesState managementMediumπŸ”’#36Making a slow React app fastReactMediumπŸ”’#39Why isn't my z-index working?CSS Grid & positioningMediumπŸ”’#42Organizing CSS at scale (BEM, CSS modules, Tailwind)Box modelMediumπŸ”’#44Event bubbling and delegationDOM & eventsMediumπŸ”’#45fetch and error handlingHTTP & APIsMediumπŸ”’#47REST vs GraphQLHTTP & APIsMediumπŸ”’#48Designing API paginationHTTP & APIsMediumπŸ”’#49Idempotent APIs and retriesHTTP & APIsMediumπŸ”’#51HTTP/1.1 vs HTTP/2 vs HTTP/3HTTP & APIsMediumπŸ”’#52How DNS worksHTTP & APIsMediumπŸ”’#54Content Security Policy (CSP)Web securityMediumπŸ”’#56The same-origin policyWeb securityMediumπŸ”’#57Storing passwords safelyWeb securityMediumπŸ”’#58Rate limiting an APIWeb securityMediumπŸ”’#59When and how to use ARIAAccessibilityMediumπŸ”’#60Responsive and optimized imagesBrowser & performanceMediumπŸ”’#61Loading web fonts without hurting performanceBrowser & performanceMediumπŸ”’#62What is hydration?ReactMediumπŸ”’#65Error boundariesReactMediumπŸ”’#66Testing frontend codeReactMediumπŸ”’#68requestAnimationFrameBrowser & performanceMediumπŸ”’#69IntersectionObserverDOM & eventsMediumπŸ”’#70Internationalization (i18n)HTMLMediumπŸ”’#71Progressive enhancementHTMLMediumπŸ”’#74Build a layout with CSS GridCSS Grid & positioningMediumπŸ”’#76flex-grow, flex-shrink and flex-basisFlexboxMediumπŸ”’#77CSS custom properties and dark modeResponsive designMediumπŸ”’#79Implementing infinite scrollDOM & eventsMediumπŸ”’#80Handling file uploadsFormsMediumπŸ”’#81Web Components and the Shadow DOMDOM & eventsMediumπŸ”’#83Cookie security attributesWeb securityMediumπŸ”’#84HTTP security headersWeb securityMediumπŸ”’#85How client-side routing worksBrowser & performanceMediumπŸ”’#88Monitoring a frontend in productionBrowser & performanceMediumπŸ”’#89Optimistic UI updatesState managementMediumπŸ”’#90IndexedDB and offline dataStorage & cachingMediumπŸ”’#94Keyboard navigation and focus managementAccessibilityMediumπŸ”’#95Building an accessible modal dialogAccessibilityMediumπŸ”’#96Performance budgetsBrowser & performanceMediumπŸ”’#97Third-party scripts (analytics, ads, widgets)Web securityMediumπŸ”’#98Walk me through a frontend you builtState managementMediumπŸ”’#99script, async, defer and type=moduleBrowser & performanceMediumπŸ”’#100A search box that doesn't spam the APIDOM & eventsMediumπŸ”’