Skip to main content

Quince

๐Ÿš€ My Quince Frontend Engineer Interview Experience (2025) | Software Development Engineer 3

Position: Software Development Engineer 3 [Frontend]
Location: Bangalore
Compensation: ๐Ÿ’ฐ 40-42 LPA Fixed + 40 LPA Esops
Tech Stack: JavaScript, HTML, CSS, VanillaJS, ReactJS


๐Ÿข About Quince

Quince is a fast-growing e-commerce platform focused on providing luxury-quality essentials at radically lower prices by cutting out middlemen. Their tech team is lean, and their hiring process aims to filter top performersโ€”but as youโ€™ll see in this article, even well-prepared candidates can hit roadblocks.


๐Ÿงฉ Round 1 โ€“ BarRaiser Round

This was a highly structured and concept-heavy round where the interviewer focused on a deep understanding of web fundamentals, frontend performance, and clean problem-solving. Letโ€™s break it down ๐Ÿ‘‡

๐Ÿ”น Topics Covered

โšก Core Web Vitals (LCP, FCP, CLS)

These are Googleโ€™s UX-focused performance metrics:

  • LCP (Largest Contentful Paint): Measures loading performance. Should occur within 2.5s.
  • FCP (First Contentful Paint): Measures the time from page load to when the first DOM content is rendered.
  • CLS (Cumulative Layout Shift): Measures visual stability. Avoid layout shifts caused by images, fonts, etc.

โœ… How to improve:

  • Use proper width and height on images.
  • Avoid using document.write.
  • Use lazy loading.
  • Minify JS and CSS.
  • Serve static assets with a CDN.

๐Ÿง  Critical Rendering Path (CRP)

This is what happens behind the scenes when you type a URL and hit enter:

  1. DNS Lookup โ€“ Resolves the domain to IP.
  2. TCP Connection โ€“ Handshake with the server.
  3. HTTP Request/Response โ€“ HTML is downloaded.
  4. Parsing HTML โ†’ Builds the DOM
  5. Parsing CSS โ†’ Builds the CSSOM
  6. JS Execution โ€“ Blocks rendering unless async or defer used.
  7. Render Tree Creation โ†’ Layout โ†’ Paint

โœ… Optimization Tip: Move critical CSS inline, defer non-critical JS, compress images, and preconnect important resources.


๐Ÿš€ Performance Optimization Techniques

  • Debounce and throttle expensive event handlers
  • Reduce DOM depth and complexity
  • Use requestIdleCallback or requestAnimationFrame when appropriate
  • Avoid inline styles and long-running JS tasks
  • Avoid memory leaks (event listeners, timers not cleared)

๐Ÿ”น Problem Solving

1๏ธโƒฃ Union & Intersection of Two Sorted Arrays

const a = [1, 3, 4, 6, 7];
const b = [2, 3, 4, 5];

// Union
const union = [...new Set([...a, ...b])].sort((x, y) => x - y); // [1,2,3,4,5,6,7]

// Intersection
const intersection = a.filter((val) => b.includes(val)); // [3, 4]

Problem Statement

2๏ธโƒฃ Find the Election Winner (Frequency + Order)

const votes = ['a', 'a', 'b', 'b', 'a', 'b', 'c'];

function findWinner(votes) {
  const map = new Map(); // ๐Ÿ—บ๏ธ To store frequency of each candidate

  // ๐Ÿงฎ Count votes for each candidate
  for (let v of votes) {
    map.set(v, (map.get(v) || 0) + 1); // ๐Ÿงพ If already exists, increment count; else set to 1
  }

  let maxVotes = 0; // ๐Ÿ”ข Track highest vote count
  let winner = "";  // ๐Ÿ† Store current winner

  // ๐Ÿ” Loop through original votes array to maintain first appearance priority
  for (let v of votes) {
    if (map.get(v) > maxVotes) {
      maxVotes = map.get(v); // โœ… Update maxVotes if current is higher
      winner = v;            // ๐Ÿฅ‡ Update winner accordingly
    }
  }

  return winner; // ๐ŸŽฏ Return final winner
}

console.log(findWinner(votes)); // 'a' ๐Ÿ—ณ๏ธ

Problem Statement

๐Ÿ’ก JS Note: Use Map for preserving insertion order with count frequency logic.

3๏ธโƒฃ JavaScript Object Comparison

let obj1 = {};
let obj2 = {};

console.log(obj1 == obj2);   // false โŒ
console.log(obj1 === obj2);  // false โŒ

Code Block

โš ๏ธ Even though both are empty objects, in JavaScript objects are compared by reference, not by value.
const obj3 = obj1;
console.log(obj1 === obj3);  // true โœ…

Code Block

4๏ธโƒฃ JavaScript Execution Order (Event Loop)

console.log("a"); // ๐Ÿ”น 1st: Synchronous โ†’ prints immediately

setTimeout(() => console.log("b")); // ๐Ÿ•“ Macro task โ†’ pushed to the task queue

new Promise((resolve) => {
  console.log("e"); // ๐Ÿ”น 2nd: Synchronous โ†’ prints immediately
  resolve("c");     // โœ… Promise resolved
}).then(console.log); // ๐Ÿ”ธ Microtask โ†’ added to microtask queue

console.log("d"); // ๐Ÿ”น 3rd: Synchronous โ†’ prints immediately

Code Block

โœ… Output:

a  // sync
e  // sync inside promise
d  // sync
c  // microtask (resolved promise)
b  // macrotask (setTimeout)
๐Ÿง  JS Note:
  • Synchronous code runs first
  • Then microtasks (.then, MutationObserver)
  • Then macrotasks (setTimeout, setInterval)
Priority: Sync > Microtasks > Macrotasks

โœ… Result: Cleared the Round Successfully

The BarRaiser round tested not just coding, but also how well you understand browser internals, JS runtime behavior, and performance best practices.


๐Ÿ’ป Round 2 โ€“ Machine Coding

๐Ÿ’ก Task: Build a basic app that fetches API data and handles edge cases like failure or empty responses.

โš™๏ธ My Solution:

  • Used Redux to manage API data
  • Wrote a fully structured, modular, scalable app
  • Added loader and error states
  • Followed production-level patterns instead of just local state
๐Ÿง  Tip: Don't over-engineer if the round doesn't demand it. Sometimes, simple solutions are better received.

โŒ The Harsh Reality โ€“ Rejected After Clearing Everything

Unfortunately, despite solving everything correctly, I was rejected. Here's why I believe this happened:

  • ๐Ÿ‘จโ€๐Ÿ’ป The interviewer was a fresh graduate and seemed uninterested
  • ๐Ÿšซ No video was turned on during the entire round
  • ๐Ÿ—ฃ๏ธ Zero engagementโ€”felt like speaking into a void
  • ๐Ÿ’” No feedback, no discussionโ€”just a rejection mail

I reached out to HR with feedback, but received no acknowledgment. But if I could have cleared that round, then only the one round would have been left, one of my friends cracked the offer for a similar role, and his HM round looks like below:

๐Ÿง‘โ€๐Ÿ’ผ Round 3 โ€“ Hiring Manager Discussion

๐Ÿงฉ Topics Covered:

  • โœ… General discussion on recent projects, product ownership, and real-world frontend challenges
  • โœ… Live coding task: mapLimit function to control concurrency in async operations
  • โœ… Bonus: Implemented a caching layer to prevent redundant API calls

๐ŸŽฏ Takeaway โ€“ Interview Red Flags to Watch Out For:

  • ๐Ÿšฉ No video on? Might signal disinterest
  • ๐Ÿšฉ No follow-up questions or engagement? Be cautious
  • ๐Ÿšฉ Overqualified interviewer mismatch? You might not get the review you deserve
๐Ÿ’ก Never join a company that doesn't respect your time during interviews. If theyโ€™re careless now, what can you expect after joining?

๐Ÿ“Œ Final Thoughts

This experience with Quince reminded me that performance alone isnโ€™t enough. Interviewers must be aligned, respectful, and invested. Otherwise, candidates are left in the dark, no matter how prepared they are.

๐Ÿ™Œ Shoutout to all those going through similar rejectionsโ€”you are not alone.


Hey there from LearnYard! ๐Ÿ‘‹

Glad to see you exploring the free content from our course! Weโ€™ve shared 10 valuable articles at no cost to help you get a real feel of whatโ€™s inside.

If youโ€™ve found these helpful, weโ€™d love to know! ๐Ÿ’ฌ
Share your thoughts or key takeaways on LinkedIn, Twitter, or Instagram โ€” and donโ€™t forget to tag Gourav Hammad & Mohammad Fraz. Weโ€™ll personally respond to your post!

Thanks for being part of the LearnYard journey. Keep learning, keep growing! ๐Ÿš€


Loved the free content? Want access to the full course โ€” for free? ๐Ÿ’ธ

Hereโ€™s how: share the course with your friends using your affiliate link (youโ€™ll find it on your profile or home page), and earn 20% commission on each sale.

Just 4โ€“5 sales and youโ€™ll recover the full course price of โ‚น999/- ๐Ÿ”
So why wait? Start sharing, start earning, and unlock the rest of the course effortlessly! ๐Ÿ› ๏ธ๐Ÿ“ˆ


๐Ÿ“ข Hashtags for Visibility

#FrontendInterview #ReactJSTips #HiringReality #QuinceInterview #FrontendDeveloper #TechRejection #BarRaiserExperience #MachineCodingRound #CrackTheInterview #InterviewTips #SoftwareEngineerLife #TechHiring #CodeNewbie #FrontendMasters #Quince #SDE3 #QuinceFrontend #LearnYard