Top Tech Transition Enroll now

Real Interview Experiences

Learn what to expect, straight from candidates who've been through it at top tech companies.

1218 interviews303 companies395 offers
Loading experiences…

Browse by company

Browse by role

← Back to all experiences

Nooks Software Engineer Interview Experience

Nooks · Entry level

ResultRejected
Timespan3 weeks
DifficultyMedium
Rounds2

Interview process

Remeber to speak up about what you are doing while solving the technical questions. Besides that it's not too bad.

Interview rounds · 2

  1. 1

    Recruiter screen

    1. Q1. Why Nooks?
    2. Q2. Why do you want to work at a startup?
    3. Q3. What do you know about our company?
    4. Q4. Felt more like an intro/pitch of what they do than a recruiter screen
  2. 2

    Technical round

    1. Q1. Merge Intervals
      How they answered

      I copied the description of the question, so this is the correct answer to that question based on AI. I also got the right answer, but perhaps I didn't speak enough during the interview.

      from typing import List, Tuple

      from collections import defaultdict

      class ConsensusError(Exception):

      """Raised when consensus cannot be reached"""

      pass

      Segment = Tuple[float, float, str]

      LABELS = {"human", "silence", "machine"}

      def find_consensus(

      *labelers: List[Segment],

      ) -> List[Segment]:

      """

      Combine the labels from different labelers into a single

      consensus labeling, or raise a ConsensusError.

      """

      # Find every boundary where any labeler changes

      boundaries = set()

      for segments in labelers:

      for start, end, label in segments:

      boundaries.add(start)

      boundaries.add(end)

      boundaries = sorted(boundaries)

      # positions[j] tracks which segment labeler j is currently on

      positions = [0] * len(labelers)

      result = []

      # Look at every interval between consecutive boundaries

      for i in range(len(boundaries) - 1):

      start = boundaries[i]

      end = boundaries[i + 1]

      counts = defaultdict(int)

      # Get the vote from each labeler

      for j in range(len(labelers)):

      segments = labelers[j]

      # Move forward if this labeler's current segment

      # has already ended

      while (

      positions[j] < len(segments) - 1

      and segments[positions[j]][1] <= start

      ):

      positions[j] += 1

      # Get this labeler's current label

      label = segments[positions[j]][2]

      counts[label] += 1

      # IMPORTANT:

      # We are now OUTSIDE the labeler loop.

      # All 3 votes have been collected.

      consensus_label = None

      # Part 1: 2 out of 3 labelers must agree

      for label, votes in counts.items():

      if votes >= 2:

      consensus_label = label

      break

      # If nobody has at least 2 votes, consensus fails

      if consensus_label is None:

      raise ConsensusError(

      f"No consensus from {start} to {end}"

      )

      # Merge adjacent intervals with the same consensus

      if result and result[-1][2] == consensus_label:

      result[-1] = (

      result[-1][0],

      end,

      consensus_label

      )

      else:

      result.append(

      (start, end, consensus_label)

      )

      return result

Tips from the candidate

See the code. That's the question they asked me. Besides that the recruiter screen was free. I think future rounds would've had some AI enabled coding but I didn't pass the screen.

Company culture

Seemed very laid back. The senior recruiter who interviewed me had a full tatoo sleeve.

Details

CompanyNooks
RoleSoftware Engineer
LevelEntry level
LocationUnited States
InterviewedAug 2026
Questions asked5