โ† All topics

๐ŸŒ Interview Prep

Web & Frontend

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

100 questions, most asked first

Ranked by how often each question comes up in real interviews. #1 is the most common.

#1What happens when you type a URL and press Enter?HTTP & APIsMediumFree#2What makes an API RESTful?HTTP & APIsEasyFree#3Cookies vs localStorage vs sessionStorageStorage & cachingEasyFree#4The CSS box modelBox modelEasyFree#5Flexbox vs CSS GridFlexboxEasyFree#6CSS specificity and the cascadeBox modelMediumFree#7HTTP methods and status codesHTTP & APIsEasyFree#8What is CORS?Web securityMediumFree#9Cross-site scripting (XSS)Web securityMediumFree#10Cross-site request forgery (CSRF)Web securityMediumFreeUnlock 90 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๐Ÿ”’#13State vs propsReactEasy๐Ÿ”’#14How does useEffect work?ReactMedium๐Ÿ”’#15Why do lists need keys?ReactEasy๐Ÿ”’#16Controlled vs uncontrolled inputsReactMedium๐Ÿ”’#17Semantic HTMLHTMLEasy๐Ÿ”’#18Making a website accessibleAccessibilityMedium๐Ÿ”’#19Responsive designResponsive designEasy๐Ÿ”’#20CSS position valuesCSS Grid & positioningEasy๐Ÿ”’#21display none vs visibility hidden vs opacity 0Box modelEasy๐Ÿ”’#22The critical rendering pathBrowser & performanceMedium๐Ÿ”’#23Reflow vs repaint (layout thrashing)Browser & performanceMedium๐Ÿ”’#24Core Web VitalsBrowser & performanceMedium๐Ÿ”’#25Lazy loading images and codeBrowser & performanceEasy๐Ÿ”’#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๐Ÿ”’#32SEO for web developersHTMLEasy๐Ÿ”’#33The rules of hooksReactMedium๐Ÿ”’#34useMemo and useCallbackReactMedium๐Ÿ”’#35Context vs Redux vs other state librariesState managementMedium๐Ÿ”’#36Making a slow React app fastReactMedium๐Ÿ”’#37Form validation on the client and the serverFormsEasy๐Ÿ”’#38CSS units (px, em, rem, %, vw/vh)Responsive designEasy๐Ÿ”’#39Why isn't my z-index working?CSS Grid & positioningMedium๐Ÿ”’#40Pseudo-classes vs pseudo-elementsBox modelEasy๐Ÿ”’#41CSS transitions vs animations vs JS animationBrowser & performanceEasy๐Ÿ”’#42Organizing CSS at scale (BEM, CSS modules, Tailwind)Box modelMedium๐Ÿ”’#43DOM APIs every frontend dev should knowDOM & eventsEasy๐Ÿ”’#44Event bubbling and delegationDOM & eventsMedium๐Ÿ”’#45fetch and error handlingHTTP & APIsMedium๐Ÿ”’#46Loading, empty and error statesState managementEasy๐Ÿ”’#47REST vs GraphQLHTTP & APIsMedium๐Ÿ”’#48Designing API paginationHTTP & APIsMedium๐Ÿ”’#49Idempotent APIs and retriesHTTP & APIsMedium๐Ÿ”’#50401 vs 403 (and 404 for privacy)HTTP & APIsEasy๐Ÿ”’#51HTTP/1.1 vs HTTP/2 vs HTTP/3HTTP & APIsMedium๐Ÿ”’#52How DNS worksHTTP & APIsMedium๐Ÿ”’#53What is a CDN?Storage & cachingEasy๐Ÿ”’#54Content Security Policy (CSP)Web securityMedium๐Ÿ”’#55ClickjackingWeb securityEasy๐Ÿ”’#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๐Ÿ”’#63React Server ComponentsReactHard๐Ÿ”’#64Lifting state up and prop drillingState managementEasy๐Ÿ”’#65Error boundariesReactMedium๐Ÿ”’#66Testing frontend codeReactMedium๐Ÿ”’#67Debugging with browser DevToolsBrowser & performanceEasy๐Ÿ”’#68requestAnimationFrameBrowser & performanceMedium๐Ÿ”’#69IntersectionObserverDOM & eventsMedium๐Ÿ”’#70Internationalization (i18n)HTMLMedium๐Ÿ”’#71Progressive enhancementHTMLMedium๐Ÿ”’#72Cross-browser compatibilityResponsive designEasy๐Ÿ”’#73The viewport meta tagResponsive designEasy๐Ÿ”’#74Build a layout with CSS GridCSS Grid & positioningMedium๐Ÿ”’#75How do you center a div?FlexboxEasy๐Ÿ”’#76flex-grow, flex-shrink and flex-basisFlexboxMedium๐Ÿ”’#77CSS custom properties and dark modeResponsive designMedium๐Ÿ”’#78Form submission and preventDefaultFormsEasy๐Ÿ”’#79Implementing infinite scrollDOM & eventsMedium๐Ÿ”’#80Handling file uploadsFormsMedium๐Ÿ”’#81Web Components and the Shadow DOMDOM & eventsMedium๐Ÿ”’#82Running untrusted code safely in an iframeWeb securityHard๐Ÿ”’#83Cookie security attributesWeb securityMedium๐Ÿ”’#84HTTP security headersWeb securityMedium๐Ÿ”’#85How client-side routing worksBrowser & performanceMedium๐Ÿ”’#86Frontend system design: an autocomplete search boxBrowser & performanceHard๐Ÿ”’#87Micro-frontendsState managementHard๐Ÿ”’#88Monitoring a frontend in productionBrowser & performanceMedium๐Ÿ”’#89Optimistic UI updatesState managementMedium๐Ÿ”’#90IndexedDB and offline dataStorage & cachingMedium๐Ÿ”’#91Mobile-first designResponsive designEasy๐Ÿ”’#92Accessible formsAccessibilityEasy๐Ÿ”’#93Color contrast and accessible colorAccessibilityEasy๐Ÿ”’#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๐Ÿ”’