Skip to main content
Back
United StatesRemotea month ago
N

Software Engineer Interview Experience

Nooks·Entry Level / L3
Result
Rejected
Interview date
2 months ago
Timespan
3 weeks
Difficulty
Moderate

Interview process

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

  • Recruiter screen
  • Technical interview

Interview rounds

5 questions across 2 rounds

Recruiter screen

4 questions

Specific questions asked

Why Nooks?

What do you know about our company?

Felt more like an intro/pitch of what they do than a recruiter screen

Technical interview

1 question

Specific questions asked

Merge Intervals

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

Interview tips

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.

Unlock more real interview experiences

Get full access with a membership, or share your experience to try it free.

formerly Exponent

Get updates in your inbox with the latest tips, job listings, and more.

Follow Us

Products
Courses
Interview Questions
Interview Experiences
Popular articles
Guides
Coaching
For Partners
Company
Exponent Labs, LLC © 2026
Terms of Service | Privacy