Frontend Developer (Entry Level) Interview Preparation Guide - FAANG Standards
This guide is based on general FAANG interview practices and may not reflect specific company procedures.
Entry-level frontend developer interviews at FAANG companies typically consist of 6 rounds spanning 3-4 weeks. The process begins with recruiter screening, followed by 2 technical screens focusing on JavaScript fundamentals and HTML/CSS skills, a practical coding challenge to build UI components, a behavioral interview to assess learning mindset and teamwork, and a hiring manager round for final fit assessment. The emphasis at this level is on foundational knowledge, problem-solving ability, learning potential, and cultural fit.
Interview Rounds
Recruiter Screening
What to Expect
Initial phone or video call with HR recruiter lasting 20-30 minutes. The recruiter will verify your background, assess cultural fit, discuss your interest in frontend development, review your resume, and outline the interview process. They'll also evaluate your communication skills and overall enthusiasm for the role. This is your opportunity to make a strong first impression and demonstrate genuine interest in the company.
Tips & Advice
Be prepared with a 1-2 minute introduction of yourself and why you're interested in frontend development. Research the company and mention specific products or initiatives you admire. Prepare 2-3 thoughtful questions to ask the recruiter about the team, tech stack, or company culture. Be honest about your experience level as an entry-level candidate and emphasize your eagerness to learn. Dress professionally for video calls. Smile and maintain good eye contact. Have your resume and a notebook handy. Ask clarifying questions if you don't understand something about the process.
Focus Topics
Thoughtful Questions About the Role and Team
Preparing meaningful questions about team structure, tech stack, onboarding process, mentorship opportunities, current projects, and expectations for the first 90 days. Avoiding salary and benefits questions at this stage.
Practice Interview
Study Questions
Company Research and Culture Alignment
Understanding the company's mission, products, tech stack, recent news, and culture. Being able to articulate why you want to work there specifically, not just any company.
Practice Interview
Study Questions
Entry-Level Mindset and Learning Orientation
Clearly articulating your understanding of your current skill level, specific areas you want to learn, growth mindset, and ability to take feedback. Showing enthusiasm for mentorship and continuous improvement.
Practice Interview
Study Questions
Professional Communication and Self-Introduction
Crafting a clear, concise elevator pitch about yourself, your interest in frontend development, and what attracted you to the company and role. Should be authentic, confident, and no longer than 2 minutes.
Practice Interview
Study Questions
Technical Screen 1: JavaScript Fundamentals
What to Expect
45-60 minute technical interview focused on core JavaScript concepts and basic problem-solving. You'll be asked to write JavaScript code to solve algorithmic problems of easy to medium difficulty. The focus is on fundamental programming concepts like variables, functions, loops, conditionals, arrays, objects, and basic DOM manipulation. The interviewer will evaluate your understanding of core concepts, code clarity, problem-solving approach, and ability to communicate your thinking. You may be asked to explain your reasoning and discuss alternative approaches.
Tips & Advice
Practice basic JavaScript problems on LeetCode (Easy level) and HackerRank. Focus on understanding fundamental concepts like closures, scope, the event loop, and common patterns. Before writing code, clarify the problem requirements with the interviewer, discuss your approach, and think through edge cases. Write clean, readable code with clear variable names. Talk through your logic as you code. If you get stuck, ask clarifying questions or think out loud about alternatives. It's okay to not know everything—focus on your problem-solving approach and ability to learn. Practice array methods (map, filter, reduce) and string manipulation frequently. Familiarize yourself with console methods for debugging. Have a preferred code editor or online IDE ready and comfortable.
Focus Topics
DOM Manipulation and Event Handling
Selecting elements (getElementById, querySelector, querySelectorAll), modifying content and attributes, handling events (addEventListener, event delegation), creating and removing elements dynamically.
Practice Interview
Study Questions
Asynchronous JavaScript Basics
Understanding callbacks, Promises, async/await at an introductory level. How asynchronous operations work, handling success and errors, chaining promises or using async/await syntax.
Practice Interview
Study Questions
Objects and Object-Oriented Basics
Creating objects, accessing and modifying properties, object methods, destructuring, spread operator, Object methods (Object.keys(), Object.values(), Object.entries()). Basic understanding of prototypes.
Practice Interview
Study Questions
Array Methods and Manipulation
Array methods like map(), filter(), reduce(), forEach(), find(), includes(). Understanding when to use each method, how they transform data, and basic array manipulation techniques.
Practice Interview
Study Questions
Variables, Data Types, and Scope
Understanding var, let, const, their differences, and scope (global, function, block scope). Knowing hoisting, temporal dead zone, and best practices for variable declaration.
Practice Interview
Study Questions
Functions and Callbacks
Creating functions, function declarations vs expressions, arrow functions, parameters, return values, and passing functions as arguments (callbacks). Understanding function context and the 'this' keyword basics.
Practice Interview
Study Questions
Technical Screen 2: HTML, CSS, and Responsive Design
What to Expect
45-60 minute technical interview focused on HTML fundamentals, CSS layout techniques, and responsive design principles. You may be asked to write semantic HTML, create CSS layouts using flexbox and grid, and ensure responsive behavior across devices. The interviewer will evaluate your understanding of semantic markup, CSS specificity, layout methods, responsive design concepts, and best practices including accessibility basics and cross-browser compatibility awareness. This round may include questions about CSS methodologies and how you debug styling issues.
Tips & Advice
Focus on semantic HTML and writing accessible markup. Understand flexbox and CSS Grid thoroughly—practice common layout patterns like navigation bars, cards, responsive grids, and full-page layouts. Know how to write responsive designs using media queries, mobile-first approach, and relative units (em, rem, percentages). Be familiar with CSS specificity, the cascade, and the box model. Practice debugging CSS using browser DevTools. Know the difference between block, inline, and inline-block elements. Understand CSS resets vs normalize.css. Be able to explain cross-browser compatibility considerations. Practice building small components from design mockups or wireframes. Discuss performance considerations like minimizing repaints and reflows. Show knowledge of accessibility fundamentals (semantic tags, ARIA labels, color contrast, keyboard navigation).
Focus Topics
Cross-Browser Compatibility and Browser DevTools
Understanding common cross-browser issues, using browser DevTools to debug CSS and HTML, testing in different browsers, knowing vendor prefixes for experimental CSS features, and progressive enhancement.
Practice Interview
Study Questions
CSS Performance and Best Practices
Writing performant CSS (understanding repaints and reflows), CSS methodologies like BEM, avoiding excessive specificity, CSS organization, and minimizing CSS file sizes for better performance.
Practice Interview
Study Questions
CSS Box Model, Specificity, and Cascade
Understanding the box model (margin, border, padding, content), CSS specificity calculation and conflicts, inheritance, the cascade, and how to write efficient selectors. Debugging specificity issues.
Practice Interview
Study Questions
Semantic HTML and Accessibility Fundamentals
Using semantic HTML5 elements (header, nav, section, article, footer, aside, main) for proper document structure and meaning. Understanding alt text for images, ARIA labels, form accessibility, keyboard navigation, color contrast requirements.
Practice Interview
Study Questions
Responsive Design and Mobile-First Approach
Building responsive designs that work on mobile, tablet, and desktop. Understanding mobile-first approach, viewport meta tag, relative units (percentages, em, rem, viewport units), media queries, and appropriate breakpoints.
Practice Interview
Study Questions
CSS Flexbox and Grid Layouts
Mastering flexbox properties (flex-direction, justify-content, align-items, gap, flex-basis, flex-grow, flex-shrink) and CSS Grid (grid-template-columns, grid-auto-flow, grid-gap, grid-placement). Knowing when to use each and how to combine them effectively.
Practice Interview
Study Questions
Practical Coding Challenge: Build UI Component
What to Expect
90-120 minute practical assessment where you build a functional, interactive UI component from scratch. Common components include autocomplete input, image carousel, star rating widget, photo gallery, tooltip, or modal dialog. You'll receive design specifications or a mockup and must implement it using HTML, CSS, and JavaScript. This may be done in a real-time code editor or take-home assignment depending on the company. You're evaluated on code functionality, code quality, HTML structure, CSS implementation, JavaScript interactivity, responsiveness, handling edge cases, problem-solving approach, and ability to explain your decisions.
Tips & Advice
Start by clarifying requirements and asking clarifying questions about the design, interactions, edge cases, and browser support. Plan your approach before coding—sketch out the HTML structure, CSS strategy, and JavaScript logic on paper or a whiteboard first. Write semantic, well-organized HTML first. Implement CSS for layout and styling next, then add JavaScript interactivity. Focus on core functionality first, then polish and enhance. Write clean, readable code with meaningful variable names and helpful comments. Test your implementation on different screen sizes and browsers. Handle edge cases like empty states, loading states, and error scenarios. Be prepared to discuss your approach, trade-offs you made, and potential improvements or optimizations. If using a framework is allowed, use it, but make sure you understand the underlying HTML/CSS/JS fundamentals. Submit working, tested code with no console errors. Manage your time well—aim to have a working, functional component rather than a partially-built feature-complete solution.
Focus Topics
Code Organization and Problem-Solving Communication
Organizing code logically and readably, breaking problems into smaller, manageable pieces, refactoring code as needed, adding helpful comments, testing your work thoroughly, and explaining your thought process and design decisions.
Practice Interview
Study Questions
Edge Cases, Error Handling, and Robustness
Anticipating and handling edge cases like empty states, loading states, errors, rapid user actions, keyboard navigation, and graceful degradation. Writing robust code that handles unexpected inputs and scenarios.
Practice Interview
Study Questions
Semantic HTML and Component Structure
Organizing HTML elements logically and hierarchically, using semantic elements appropriately, creating accessible markup, using data attributes when needed, and structuring code for maintainability and clarity.
Practice Interview
Study Questions
Responsive CSS Implementation
Implementing design specifications accurately, making components responsive across devices using flexbox/grid, handling different states (hover, active, disabled, loading), maintaining visual consistency, and using relative units.
Practice Interview
Study Questions
JavaScript Interactivity and State Management
Implementing user interactions through JavaScript, handling events effectively, managing component state and data, updating the DOM based on user actions, and creating smooth, responsive interactions.
Practice Interview
Study Questions
Transforming Design Mockups into Code
Breaking down design mockups or wireframes into structure, styling, and interaction logic. Translating visual designs and specifications into HTML, CSS, and JavaScript. Creating components that match the design while being maintainable and semantic.
Practice Interview
Study Questions
Behavioral Interview
What to Expect
45-60 minute interview focused on soft skills, teamwork, communication, learning ability, and cultural fit. Using the STAR method (Situation, Task, Action, Result), you'll answer questions about past experiences, conflicts you've resolved, times you've learned something new, collaboration with team members, and how you handle challenges or feedback. The interviewer will assess your communication style, ability to receive feedback, collaboration skills, work ethic, humility, and alignment with company values. For entry-level candidates, the focus is on learning mindset, coachability, and ability to thrive in a team environment.
Tips & Advice
Prepare 5-7 concrete STAR format stories from your projects, coursework, internships, volunteer work, or personal experiences. Have stories ready for: learning something difficult or new, making a mistake and how you recovered, collaborating with diverse team members, receiving critical feedback and improving, overcoming a significant challenge or setback, working under pressure or tight deadlines, and helping a teammate. Be authentic and genuine—interviewers can tell when you're fabricating or exaggerating stories. Practice articulating your stories concisely (2-3 minutes each). Research the company's stated values and be ready to discuss how you align with them. During the interview, listen carefully to questions and answer directly and thoroughly. If you haven't experienced something specific, be honest and thoughtfully discuss how you would handle it based on your values. Show genuine curiosity about the company, team, and role. Ask meaningful questions about team dynamics, how the team supports new hires, and what the company values most. Maintain good eye contact, speak clearly and confidently, and show genuine enthusiasm. Emphasize your growth mindset, humility, and eagerness to learn from more experienced engineers.
Focus Topics
Communication, Clarity, and Asking for Help
Explaining complex technical ideas clearly to different audiences, asking clarifying questions when uncertain, documenting your work appropriately, being upfront about what you don't know, and seeking help when needed without hesitation.
Practice Interview
Study Questions
Initiative, Problem-Solving, and Drive
Describing how you approach solving problems, examples of taking initiative beyond assigned tasks to learn or improve something, times you've gone above and beyond, and how you identify and address issues proactively.
Practice Interview
Study Questions
Handling Feedback, Mistakes, and Resilience
Sharing examples of receiving constructive criticism gracefully without defensiveness, learning from mistakes, implementing feedback into future work, discussing times you've failed and what you learned. Showing resilience, positive attitude, and ability to bounce back.
Practice Interview
Study Questions
Learning Mindset and Growth Orientation
Demonstrating genuine eagerness to learn new concepts and technologies, asking questions proactively, seeking feedback actively, and showing concrete examples of how you've grown from mistakes or challenges. Discussing specific technologies you've recently learned and why they interested you.
Practice Interview
Study Questions
Teamwork, Collaboration, and Communication
Sharing examples of working effectively with others, supporting teammates, resolving team conflicts or disagreements respectfully, contributing to team goals, listening actively to teammates' ideas, and being a supportive, positive colleague.
Practice Interview
Study Questions
Hiring Manager Round
What to Expect
30-45 minute conversation with the hiring manager or engineering lead who would directly supervise you. This round is typically more conversational and less formally technical. The hiring manager will assess your foundational technical knowledge, curiosity about the team's work and tech stack, realistic expectations about the role and growth opportunities, and whether you'll thrive in their specific team environment. They'll discuss the team's current projects, technical challenges, mentorship approach, and answer your detailed questions about what the first few months would look like. This is your final opportunity to understand the team deeply and ask strategic questions.
Tips & Advice
Prepare specific, thoughtful questions about the team's current projects, their tech stack choices and why they chose them, how they onboard and mentor new engineers, what success looks like in the first 3-6 months, and the team's biggest technical challenges or learning opportunities. Ask about the team's collaboration style, how they handle code reviews, and what the day-to-day work looks like. Show genuine curiosity about the team's work and the problems they're solving. Discuss your interest in frontend development and specific areas you're excited to learn in this role. Show humility about what you don't know and eagerness to grow. Ask about career growth opportunities, learning resources available, and how the company supports professional development. Listen carefully to how the hiring manager describes the team, role, and company—this is valuable information for assessing fit. Be authentic and let your genuine interest show while remaining professional. If asked directly about salary, defer gracefully to HR or provide a realistic range based on your research and level. Reaffirm your enthusiasm for the role and team at the end.
Focus Topics
Technical Stack and Technologies You'll Learn
Learning about the team's technology choices (frameworks like React/Vue/Angular, JavaScript features used, build tools, testing frameworks, styling approaches), why certain choices were made, and which technologies will be part of your learning journey.
Practice Interview
Study Questions
Team Dynamics, Culture, and Working Style
Asking about team composition and size, communication style and collaboration patterns, how the team handles disagreements and code reviews, mentorship approach for junior engineers, and team culture and values.
Practice Interview
Study Questions
Growth, Learning, and Mentorship Opportunities
Asking about mentorship structure for new hires, learning resources available (conferences, courses, training budget), how the team supports skill development, opportunities to work with different technologies, and career progression expectations.
Practice Interview
Study Questions
Role Understanding and Role-Specific Fit
Demonstrating clear understanding of the specific role's responsibilities from the job description, asking targeted questions about typical day-to-day work, team structure, current projects, and technical priorities. Assessing whether the role aligns with your career goals and learning interests.
Practice Interview
Study Questions
Frequently Asked Frontend Developer Interview Questions
You need to explain a distributed cache invalidation flow to a customer's architects using a component diagram, a sequence diagram, and a data-flow diagram. Which diagram would you start with, what would you show in each, and why does that order help comprehension?
Sample Answer
Direct answer
Start with the component diagram. It establishes what pieces exist and who owns each one, before anything about behavior or payloads makes sense; architects can't reason about "what happens when" until they know "what's here."
Structured elaboration
1. Component diagram (what exists). Purpose: boundaries and ownership. Show: application services, cache cluster nodes, the source-of-truth database, an invalidation service, and a message broker. Leave off: exact protocol, message schema, and timing, those belong later.
2. Sequence diagram (what happens, in order). Purpose: the actual interaction for one invalidation event. Show: a write to the database, the database acknowledging it, an event published to the invalidation service, that service publishing an evict message on the broker, the broker fanning out to cache nodes, and one failure path (broker unavailable: what serves stale data, and for how long). Leave off: byte-level payload detail and retention settings, that's the next diagram's job.
3. Data-flow diagram (what exactly, and how stale). Purpose: payloads and guarantees. Show: the invalidation message's schema (key, version, timestamp), time-to-live, message size, and the one metric architects will actually watch, invalidation latency or staleness window. Leave off: anything already covered by the component-level framing.
Why this order helps comprehension: each diagram answers the question the previous one raised. Component diagram: "what is the invalidation service." Sequence diagram: "how does it know to fire." Data-flow diagram: "how stale can a read get before this evicts it." Reversing the order, starting with the sequence diagram, forces you to define every box mid-sentence instead of pointing at one the audience has already seen.
Worked example
The component diagram you'd draw first:
flowchart LR
App[Application] -->|write| DB[(Database)]
App -->|read| Cache[(Cache Cluster)]
DB -->|change event| Invalidator[Invalidation Service]
Invalidator -->|publish evict msg| Broker[[Message Broker]]
Broker -->|fan out| Cache
Cache -->|miss, reload| DB
Narrated: "The application writes to the database. That write triggers a change event to the invalidation service, which publishes an evict message on the broker. The broker fans that message out to every cache node, and the next read that misses reloads from the database."
Translating the core idea for the architects: the jargon term is "cache coherence." Plain version: "keeping the cache from serving an answer that's gone stale since the database changed." Analogy: it's like a library's card catalog. When a book gets re-shelved, someone has to walk over and update the card, or the next person who checks the card gets sent to the wrong shelf. Where the analogy breaks: no single librarian updates every card at once across a building, the fan-out to many cache nodes in parallel, possibly across regions, is exactly what makes this hard in practice, and that's the detail worth naming once the audience has the basic picture.
Trade-offs & pitfalls
The common wrong turn is leading with the sequence diagram because it feels more "technical," which forces you to define the invalidation service, the broker, and the cache cluster mid-sentence instead of pointing at boxes the audience already recognizes. A second pitfall: putting the failure path (broker down) in the component diagram instead of the sequence diagram, error paths are behavior over time and belong where the audience is already reasoning about timing. A third: overloading the data-flow diagram with architectural detail that duplicates the first diagram instead of adding new information (payload size, TTL, staleness), which makes the customer conversation feel repetitive rather than cumulative.
Tell me about a time you worked closely with a UX/UI designer to implement a pixel-accurate component. Describe the design handoff process, how you resolved ambiguous specifications, how you ensured responsive behavior and accessibility, and what the final outcome or improvements were.
Sample Answer
Situation & Task
I was the frontend engineer on a feature to build a pixel-accurate card component from a Figma prototype for a responsive dashboard. The designer expected exact spacing, typography, and interactive states across breakpoints.
Action
- Design handoff: we used Figma with named design tokens (colors, spacing, type) and the Inspect panel. I exported an annotated spec sheet and a short Loom walkthrough highlighting states and breakpoints.
- Resolve ambiguity: I scheduled a 30‑min groom with the designer to clarify hover/focus behavior, truncation rules, and iconography. Where decisions were missing, I built two small Storybook variants and asked for a quick A/B preference.
- Implementation: semantic HTML, CSS Grid/Flex for layout, clamp() for fluid type, and container queries for component-level responsiveness. Reusable CSS variables mapped to design tokens.
- Accessibility: ensured correct heading/order, keyboard focus styles, ARIA labels for interactive controls, and verified color contrast with Axe and manual keyboard testing.
Result
Delivered the component in Storybook, matched design pixel-for-pixel, reduced front-end QA issues by 60%, and passed automated a11y checks. The design team reused the same tokens across three other components, speeding future handoffs.
Compare the four core built-in container/data types available in most high-level languages (for example Python's list, tuple, set, and dict): describe their mutability, ordering guarantees, typical time complexity for lookup/insert/delete, and when you would reach for each one.
Sample Answer
Direct answer
The four core built-in containers split along two axes: mutability (can you change it after creation?) and whether elements need to be ordered/duplicable versus unique/hashable. A list is a mutable ordered sequence, a tuple is an immutable ordered sequence, a set is a mutable unordered collection of unique hashable elements, and a dict is a mutable unordered mapping of unique hashable keys to values.
Structured elaboration
| Type | Mutable | Ordered | Typical lookup | Typical insert/delete | Use it when |
|---|---|---|---|---|---|
| list | yes | yes (insertion order) | O(n) by value, O(1) by index | O(1) amortized at the end, O(n) at the front/middle | you need an ordered, changeable sequence |
| tuple | no | yes | O(n) by value, O(1) by index | not applicable (immutable) | a fixed-size record, or anything you want to use as a dict key/set member |
| set | yes | no | O(1) average, O(n) worst case | O(1) average, O(n) worst case | fast membership tests, de-duplication |
| dict | yes | yes (insertion order, guaranteed since Python 3.7) | O(1) average, O(n) worst case | O(1) average, O(n) worst case | key-to-value lookup |
The O(1)-average / O(n)-worst-case split for set/dict comes from hashing: normally a hash lookup goes straight to (approximately) the right bucket, but if many keys collide into the same bucket, resolving the collision degenerates toward a linear scan. list/tuple index access is O(1) because the underlying storage is one contiguous block, computing an offset from the index is arithmetic, not a search; searching a list BY VALUE (x in my_list) is O(n) because there's no shortcut, every element may need to be checked.
Worked example
Hashability is the concrete reason tuples, not lists, can be dict keys or set members: {(1, 2): 'a point'} works because a tuple's contents can't change after creation, so its hash value is stable for its lifetime; {[1, 2]: 'a point'} raises TypeError: unhashable type: 'list' because a list's contents CAN change, so Python refuses to let it serve as a hash key at all (verified: t = (1, 2, 3) then t[0] = 99 raises TypeError: 'tuple' object does not support item assignment; {1, 2, 2, 3} == {1, 2, 3}, confirming a set silently drops the duplicate 2).
Trade-offs & pitfalls
The most common mistake is choosing list by default and doing repeated x in my_list membership checks in a hot path, that's O(n) per check and O(n*m) over m checks; switching to a set for membership-only use cases is one of the cheapest performance wins available. The second is using a mutable default in a spot that implicitly needs hashability (trying to use a list as a dict key, or storing lists inside a set) and hitting a TypeError that a tuple would have avoided entirely.
Describe the browser JavaScript event loop. Explain the difference between macrotasks and microtasks and predict the order of outputs for this sequence: console.log('start'); setTimeout(() => console.log('timeout'), 0); Promise.resolve().then(() => console.log('promise')); console.log('end'). Explain why the outputs appear in that order.
Sample Answer
Brief explanation of the event loop
The browser JavaScript event loop runs a single-threaded call stack and coordinates asynchronous work by pulling tasks from queues. After the current call stack empties, the event loop processes microtasks (higher priority) then one macrotask, then repeats.
Macrotasks vs Microtasks
- Macrotasks (task queue): setTimeout, setInterval, I/O, rendering events. Processed one per event loop tick.
- Microtasks (microtask queue): Promise callbacks (.then/.catch/.finally), MutationObserver. Run immediately after the current stack finishes and before the next macrotask.
Predicting the output
Code:
console.log('start');
setTimeout(() => console.log('timeout'), 0);
Promise.resolve().then(() => console.log('promise'));
console.log('end');
Order of outputs:
- start
- end
- promise
- timeout
Why
- 'start' and 'end' run synchronously on the call stack.
- The Promise .then callback is queued as a microtask and runs after the stack empties (before any macrotask).
- setTimeout callback is a macrotask and runs on a later tick, so it prints last.
Your work depends on another team delivering something you need, like an API or a data feed, before you can finish yours. What do you put in place up front so that dependency doesn't quietly become a blocker?
Sample Answer
Direct answer
Before your work depends on it, put a written interface contract in place (the shape of the data or API, error cases, and versioning), a single named owner on each side, and an SLA (service level agreement: the vendor's contractual uptime/response commitment) for questions and changes with a defined escalation path. Then build against a mock or stub (a fake stand-in for the real API that returns data matching the agreed contract, so your team can build and test without waiting on the real thing) that matches that contract, so a late dependency delays true integration, but doesn't block your team's progress.
Framework
Before you start building. Agree the contract explicitly (schema, error handling, versioning), name one owner per side rather than 'the team', and set an SLA for response time and change turnaround, with an escalation path if it slips.
While you wait. Build and test against a mock or stub that matches the agreed contract, so your team keeps moving. Pair it with automated contract tests, so if the mock and the real dependency drift apart, you find out at build time instead of at release.
Internal-team dependency vs external vendor dependency. The mechanics differ once the other side is a vendor rather than a team you can walk over to.
| Aspect | Internal team dependency | External vendor dependency |
|---|---|---|
| Contract | API or data schema agreed directly, renegotiable quickly | Formal SLA in a vendor agreement, slower to change |
| Availability guarantee | Informal or team-level expectation | Contractual uptime percentage with penalties or credits |
| Mitigation | Mocks, shared roadmap, escalate to a shared manager | Caching and fallback paths, plus a compensation or credit clause |
| Escalation | Peer-to-peer or shared manager | Vendor account manager, procurement, or legal |
Worked example
Situation: a product depends on a vendor-managed API (for example a payments or identity provider). The vendor's contract commits to 99.5% availability, but the product's own reliability target requires 99.95%.
Quantifying the gap: a year has 8,760 hours. At 99.5% availability, permitted downtime is 0.5% of 8,760 = 43.8 hours per year. At 99.95%, permitted downtime is 0.05% of 8,760 = 4.38 hours per year. The vendor's contract therefore permits about 43.8 minus 4.38 = 39.42 hours per year more downtime than the product can actually tolerate.
Action: negotiated for a higher committed SLA where possible; where the vendor would not move the number, negotiated a compensation or credit clause tied to a downtime threshold, documented in writing. Regardless of the contract terms, added caching on the read path so a short vendor blip doesn't cascade immediately, and a fallback path that degrades the feature gracefully instead of erroring during an outage window.
Result: the contract negotiation raises the ceiling on paper, but the caching and fallback layer is what actually protects users during the gap between what the vendor promises and what the product needs, since a credit clause compensates you after an outage, it doesn't prevent one.
Trade-offs and pitfalls
- Mocks and stubs only help if kept in sync with the real contract. A stale mock creates a different kind of surprise at integration time.
- Vendor SLA credits are usually a small fraction of the real cost of downtime (lost trust, lost usage). Treat them as compensation, not as risk mitigation on their own, and pair them with technical fallbacks.
- Applying heavy contract-and-SLA process to a short, low-risk internal dependency slows down partners who need speed more than ceremony. Calibrate the rigor to the risk and duration of the dependency, not the same weight for every one.
Explain the microtask queue and macrotask (task) queue differences. List APIs that schedule microtasks (e.g., Promise.then, queueMicrotask, MutationObserver) and macrotasks (e.g., setTimeout, setInterval, I/O callbacks). Explain the practical consequences for UI responsiveness and ordering in a browser.
Sample Answer
Brief definition
- Event loop processes a repeating cycle: take a macrotask (task) from the macrotask queue, run it to completion, then run all pending microtasks, then render (if needed), then repeat.
- Microtasks run immediately after the current task and before rendering; macrotasks are the higher-level tasks scheduled between ticks.
Common APIs
- Microtasks: Promise.then / .catch / .finally, queueMicrotask(), MutationObserver callbacks, async/await continuations (via promises).
- Macrotasks: setTimeout, setInterval, setImmediate (Node), requestAnimationFrame (special—runs before repaint), I/O callbacks, DOM events (user input handlers usually run as macrotasks).
Practical consequences for UI & ordering
- Ordering: A microtask scheduled inside a task runs before any later macrotasks. Example: setTimeout(fn, 0) will run after Promise.then queued inside the same task.
- Rendering: Microtasks run before the browser repaints. If you queue many or long-running microtasks, you block rendering and delay UI updates (jank). Keep microtasks short.
- Responsiveness: Use microtasks for quick state updates/cleanup that must happen before painting (e.g., finishing promise-based state changes). Use macrotasks for deferred work that can wait until after paint or should allow user input processing.
- Tip: Use requestAnimationFrame for DOM reads/writes tied to animation, and avoid heavy synchronous loops in either queue.
You inherit a business-critical system with no usable documentation and nobody left who built it, and you are expected to be making safe changes within a couple of weeks. How do you build a working understanding of it, and how do you avoid breaking things while you are still partly guessing?
Sample Answer
Direct answer
With no usable documentation and nobody left who built it, I stop trying to read my way to understanding and start reconstructing behavior empirically: instrument it, watch real inputs and outputs, and make the smallest reversible change first specifically to test whether my mental model is right, rather than trusting a theory I have not checked. I avoid breaking things by treating every early change as a hypothesis test done somewhere safe, not a production edit, until the model has proven itself on several small, low-risk moves.
Structured elaboration
- Read what the system actually does before trusting anything written or remembered about it: logs, real request and response pairs, database contents, since these reflect the system's actual behavior, not someone's outdated description of it.
- Instrument first: add logging or observability around the parts you are least sure about before changing anything, so the next real event teaches you something.
- Reconstruct behavior from inputs and outputs the way you would reverse-engineer a black box: form a hypothesis about what a given input should produce, check it against real examples, and revise.
- Get a safe place to experiment before touching anything live, a copy of the data, a staging environment, or a way to run a change against real traffic without it taking effect, so early wrong hypotheses cost nothing.
- Make the smallest reversible change first, a tiny, easily undone edit that specifically tests one part of your mental model, before attempting the actual fix or improvement requested.
- Recover dependencies and lineage explicitly when nothing describes them; undocumented systems are often more entangled with their neighbors than they appear.
- The point at which larger changes become safe is when the model has correctly predicted several real, non-trivial cases in a row, not simply when you have read enough to feel confident.
Worked example
I inherited a legacy billing-reconciliation service with no documentation and no remaining team member who had built it, expected to make a safe fix within two weeks because it was silently miscounting a category of refunds. I started by reading real inputs and outputs, pulling actual transaction records and comparing them against what the service reported, rather than reading the code top to bottom first. I added logging around the specific refund-handling path, since that was the area least understood and most relevant to the reported problem, and waited for real traffic to pass through it rather than guessing from the code alone. I formed a hypothesis about how the service classified a certain refund type, based on the logs, and tested it against a known historical case with a manually verified correct answer; the hypothesis was wrong on the first try, which pointed to an undocumented currency-rounding step. Before changing anything real, I set up a way to replay real historical transactions against a modified copy of the service in a non-production environment, and confirmed the fix produced the correct classification across a batch of known cases before touching the live path. I made the smallest possible change to production first, and watched it against real traffic for a day before considering the fix complete.
Trade-offs and pitfalls
- Trusting outdated documentation, when some exists but is stale, can be worse than having none, since it actively misleads instead of leaving you appropriately uncertain; verifying against real behavior catches this either way.
- Skipping the safe-environment step to save time, and testing hypotheses directly against production, turns every wrong guess into a live incident instead of a cheap lesson.
- Declaring the system "understood" after one successful fix overstates what is actually known; the honest scope is understanding the specific path that was touched, with the rest genuinely unknown until it is tested the same way.
Explain the purpose of semantic HTML elements such as <header>, <nav>, <main>, <article>, <section>, <aside>, and <footer>. For each element, describe when to use it, how it affects the document outline and screen-reader navigation, and provide a short HTML example showing a typical page layout that demonstrates correct usage.
Sample Answer
Purpose (brief)
Semantic HTML elements provide meaningful structure to content so browsers, search engines, and assistive tech (screen readers) can understand page regions, improving accessibility, SEO, and maintainability.
Elements — when to use, outline & screen-reader impact
-
header
- Use: top of page or section for branding, headings, global controls.
- Outline: represents introductory region; can appear multiple times (per section/article).
- Screen readers: announced as a landmark; helps jump to page intro.
-
nav
- Use: groups primary navigation links.
- Outline: landmark for site/section navigation.
- Screen readers: listed as "navigation" landmark allowing quick access.
-
main
- Use: primary unique page content (one per page).
- Outline: main landmark; excludes repeated content like sidebars.
- Screen readers: quick jump target to main content.
-
article
- Use: self-contained composition (blog post, comment).
- Outline: forms its own sub-outline; can contain header/footer.
- Screen readers: treated as independent piece; announcer can navigate articles.
-
section
- Use: thematic grouping inside content with a heading.
- Outline: creates a section in document outline when headed.
- Screen readers: less explicit than article but useful for structure.
-
aside
- Use: tangential content (sidebars, pull quotes).
- Outline: secondary to surrounding content.
- Screen readers: labeled as "complementary" landmark.
-
footer
- Use: page or section footer (copyright, links).
- Outline: closing region for its nearest section/article.
- Screen readers: navigable footer landmark.
Example layout
<!doctype html>
<html lang="en">
<body>
<header>
<h1>Site Title</h1>
</header>
<nav aria-label="Main navigation">
<ul><li><a href="/">Home</a></li></ul>
</nav>
<main>
<article>
<header><h2>Blog Post</h2></header>
<section><h3>Introduction</h3><p>...</p></section>
<section><h3>Details</h3><p>...</p></section>
<footer>Posted on…</footer>
</article>
<aside aria-label="Related">Related links</aside>
</main>
<footer>© Company</footer>
</body>
</html>
Use headings inside sections/articles and at most one main per page to maximize usable outline and screen-reader navigation.
A product manager reports 'the page feels slow' for your web app. As a frontend developer, outline how you would decompose this vague complaint into measurable metrics and concrete engineering tasks. Specify which browser metrics you'd collect, how you'd segment users, and how you'd map high-level metrics to actionable fixes.
Sample Answer
High-level approach
Start by converting "feels slow" into measurable signals, then segment users and map each signal to specific fixes with priority and acceptance criteria.
Key browser metrics to collect
- Core Web Vitals: Largest Contentful Paint (LCP) — perceived load time target <2.5s
- First Contentful Paint (FCP) — target <1s
- Interaction to Next Paint / INP (or FID) — responsiveness target <200ms
- Cumulative Layout Shift (CLS) — visual stability target <0.1
- Time to First Byte (TTFB) — backend latency
- Total Blocking Time (TBT) — main-thread blocking
- Resource-level timings (transfer size, start/end) and Long Tasks
User segmentation
- Device type (mobile vs desktop), CPU class, RAM
- Network (4G/3G, throttled vs unthrottled) and geographic region / CDN edge
- New vs returning (cold cache vs warm cache)
- Entry pages and user flows (landing, checkout, dashboard)
- Browser versions / OS
Mapping metrics → engineering tasks
- High TTFB → investigate server, CDN, API endpoints; add caching, edge functions; measurable: median TTFB <200ms
- High LCP (large image/script) → optimize images, use responsive formats, lazy-load non-critical, preconnect/preload fonts; measurable: 75th LCP <2.5s
- High FCP but low LCP → reduce critical JS/CSS, inline critical CSS, defer non-critical scripts
- High TBT / long tasks → split bundles, web workers, reduce JS execution, memoize heavy computations; measurable: TBT <200ms
- High CLS → reserve image/iframe dimensions, avoid async layout-shifting inserts
- Poor mobile metrics → root-cause on CPU/network; prioritize code-splitting and runtime optimizations
Instrumentation & workflow
- Implement RUM (e.g., web-vitals + analytics) and sample-size targets, capture stack traces/resource waterfall for slow sessions.
- Run synthetic tests (Lighthouse, WebPageTest) under throttling to reproduce.
- Triage by volume + user impact, ship incremental fixes behind A/B or feature flags, monitor metric deltas and rollback if needed.
This makes "feels slow" concrete, prioritized, and verifiable.
What should you be aware of about your own communication style when you're regularly working with colleagues or stakeholders from a different cultural or regional background than yours?
Sample Answer
Direct answer
Be aware that things like directness, comfort with silence, and preference for written versus verbal communication vary genuinely across cultures, and that your own default style is one option among several, not a neutral baseline everyone else should be measured against.
Structured elaboration
- Directness: some cultures favor stating disagreement or bad news plainly and quickly; others favor a more indirect, cushioned approach where the same message is conveyed through context and softer language. Reading directness through your own culture's lens can make a direct colleague seem blunt, or an indirect one seem evasive, when neither is the case.
- Comfort with silence: in some cultural norms, a pause in conversation is comfortable and even expected before responding; in others, silence reads as awkward and gets filled quickly. Misreading a thoughtful pause as disengagement, or a quick reply as impulsive, can lead to mismatched expectations.
- Written versus verbal preference: some cultures and individuals prefer to have important points confirmed in writing before treating them as final; others treat a verbal agreement as fully binding. Assuming your own preference is universal can lead to real misunderstandings about what was actually agreed.
- Hierarchy and formality: norms around how directly you can question someone more senior, or how much deference formal titles and structure require, vary meaningfully and affect how comfortable someone is pushing back openly in a meeting.
- The core mindset: treat these as genuine differences in communication norms, not deficiencies to be corrected; the goal is adapting your own style enough to communicate effectively, not judging others by your own default as though it were the objectively correct one.
Worked example
In a cross-regional team, a colleague's response to a proposal was a polite "that's an interesting idea, we could consider it," which a colleague from a more direct-communication background took as mild positive interest, when it was actually intended as a soft no. Recognizing this pattern, rather than assuming your own culture's directness norm applies universally, means following up explicitly to check: "when you say we could consider it, does that mean you'd like to move forward, or are there concerns I should hear about directly?"
Trade-offs and pitfalls
- It's easy to overcorrect into stereotyping (assuming every person from a given background communicates identically); these are general tendencies, not fixed rules for any individual, and you should still read the specific person in front of you.
- Adapting your style too far in either direction can feel inauthentic; the goal is genuine flexibility and attentiveness, not performing a caricature of another culture's norms.
- The safest general habit, regardless of the specific cultural mix, is to confirm important points explicitly rather than assuming a shared interpretation, since that catches a mismatch whatever its underlying cause.
Recommended Additional Resources
- LeetCode: Practice JavaScript problems starting with Easy level and progressing to Medium (leetcode.com)
- Frontend Interview Handbook: Comprehensive guide to frontend interviews with curated questions and answers (frontendinterviewhandbook.com)
- MDN Web Docs: Authoritative reference for HTML, CSS, JavaScript fundamentals and best practices
- CSS-Tricks: In-depth articles and guides on CSS, flexbox, grid, and responsive design techniques
- You Don't Know JS: Series of books for deep understanding of JavaScript concepts (available free online at github.com/getify/You-Dont-Know-JS)
- Cracking the Coding Interview by Gayle Laakmann McDowell: Popular book with interview preparation strategies and problem-solving approaches
- GreatFrontEnd: Platform specifically designed for frontend interview practice with UI components and coding challenges
- JavaScript.info: Interactive JavaScript tutorial covering fundamentals and advanced concepts with visual explanations
- Khan Academy JavaScript Course: Free comprehensive introduction to JavaScript programming basics
- Web.dev by Google: Official Google resource for modern web development best practices and performance optimization
- GitHub: Version control practice and platform for showcasing your projects to employers
- Codepen and Replit: Online platforms for quick prototyping and sharing small frontend projects
Search Results
Top 35+ UI Developer Interview Questions and Answers for 2026
Basic UI Developer Interview Questions · 1. What exactly is the role of a UI developer? · 2. What's the difference between a UI developer and a UX developer? · 3.
50+ Essential Vue Interview Questions & Answers (Easy to Advanced)
Use this list of Vue interview questions and answers to prepare for your upcoming meeting with a tech recruiter or lead front-end engineer!
Introduction | The Official Front End Interview Handbook 2025
Complete frontend developer interview guide: JavaScript coding questions, UI components, system design, quiz prep & expert tips from ex FAANG engineers.
Top Frontend Developer Interview Questions and Answers - Intellipaat
1. Define HTML. How does front-end development employ it? Simply put, Hypertext Markup Language (HTML) is a markup language that is utilized for creating web ...
Google Software Engineer Early Career Interview Questions [2024]
How would you design Google's database for web indexing? What approach would you take when designing a task scheduling system? How would you design Google Home ...
Top 10 Angular Developer Interview Questions - Full Scale
2. How long have you been coding Angular as the primary language? 3. What is the difference between AngularJS and Angular? 4. Explain data binding. Which form ...
This interview preparation guide was generated using AI-powered research from the sources listed above. While we strive for accuracy, we recommend verifying critical information from official company sources.
Want to create your own tailored preparation guide using our deep research?
Get Started for FreeInterview-Ready Courses
Visual-first, interactive, structured learning paths
Browse Frontend Developer jobs
AI-enriched listings across hundreds of company career pages
Explore Jobs