Grace and Nolen's Software Engineering Mock Interview

A unit-conversion graph illustrates how Jane Street interviewers discuss design, code, errors and communication with a candidate.

NoNolen게스트 · Jane Street
채널
Jane Street
게시일
2023년 2월 27일
영상
37:24
읽기
5분
슬라이드
3
원문
영어
YouTube에서 열기
스크롤하면 영상이 오른쪽 아래로 작아져 계속 재생됩니다. 자막은 읽기 언어를 따릅니다.
읽기 언어2개 언어로 읽을 수 있음
이 글은 아직 한국어 번역이 없어 영어 원문으로 표시합니다.
요약

30초 요약

Jane Street engineers Grace and Nolen conduct a mock software engineering interview using a retired unit-conversion question. Nolen designs and walks through a graph-based search, catches a missing reverse conversion, and the pair explain how they assess communication, clarity and problem solving.

  1. 1Unit conversion as a graphFacts connect units with conversion factors; queries ask for a path from a source unit to a target or a not-convertible result.
  2. 2Explain the design before codingNolen describes nodes, weighted edges and graph traversal, and checks with Grace that his plan is understandable.
  3. 3Breadth-first search with stateEach queued node carries the current converted amount, while a visited set prevents repeated exploration.
  4. 4The missing reverse edgeWalking through examples reveals that each fact must also supply a reciprocal conversion to support the reverse direction.
  5. 5A holistic interviewThe recap values problem solving alongside communication, readable code, design judgment, carefulness, and response to feedback.

핵심 정리

  1. Clarify the expected input and whether preprocessing can be separated from queries.
  2. Unit conversions can be modeled as graph edges with multipliers and searched from source to destination.
  3. Reverse conversions require reciprocal edges when facts are supplied in only one direction.
  4. Walking through a concrete example can expose missing lookups and incorrect assumptions.
  5. The interviewers emphasize clear, correct code and communication rather than clever optimization by default.
  6. Practice should include writing code, explaining choices, and working under realistic time constraints.
전문

챕터별로 다듬은 전문 읽기

원본 자막만 보기
01

Interview setup

Grace and Nolen introduce the mock interview. Grace explains the shared editor, language choice, and emphasis on readable code.

Grace and Nolen are software engineers at Jane Street. They created a mock interview to make the process less mysterious, followed by a recap of what they look for and how candidates can prepare. Grace plays the interviewer and Nolen the candidate; some advice is specific to Jane Street.

Grace explains that they will work in a shared editor. Nolen may use the language he knows best, and they will not run the code during the interview. She asks for real code but does not expect perfect punctuation or memorization of every standard-library API; they can agree on a reasonable interface.

Grace says she values clear, correct and readable code over immediately producing the most optimized solution. She can ask for a faster version later if needed. She also leaves time at the end for the candidate's questions.

02

The unit-conversion problem

Nolen clarifies the interface and models conversion facts as a graph. He chooses a straightforward traversal before attempting optimization.

The problem is to answer unit-conversion queries using a list of facts. Examples include one meter equaling 3.28 feet and one foot equaling 12 inches, as well as hour-to-minute and minute-to-second facts. Facts arrive as string–float–string tuples and queries as amount–source-unit–target-unit tuples; parsing text is not required.

Example conversion facts and queries
슬라이드 1 / 3Example conversion facts and queriesThe shared editor shows length and time facts, including a query between incompatible units.

Nolen asks whether to separate preprocessing from query answering. Grace invites him to choose, and he prefers building a representation once so multiple queries can use it. He recognizes disconnected groups of units: length conversions form one graph and time conversions another.

Nolen explains the graph model: units are nodes and a conversion fact is an edge annotated with its multiplier. To answer a query, start at the source, traverse toward the destination and multiply the amount by the factors along the path. If the destination is unreachable, return that the units are not convertible.

His initial representation is a dictionary from unit names to graph nodes, with edges carrying a multiplier and a neighboring node. He recalls that union-find might offer a more clever alternative but does not remember the details, so he asks whether to proceed with the straightforward approach. Grace agrees.

03

Implementing the search

Nolen builds node and edge structures, then develops a breadth-first search that carries a converted amount and a visited set. Grace asks questions and points out small errors.

Nolen sketches Edge and Node classes to make the representation explicit. He then starts a preprocessing function that loops through facts, creates nodes for unit names not yet present, and connects the appropriate nodes. He notes that he may simplify the Python later after getting the structure down.

Building the graph
슬라이드 2 / 3Building the graphThe draft defines node and edge classes and starts preprocessing the conversion facts.

Moving to query handling, Nolen considers collecting multipliers and combining them at the end, then changes his mind: carrying the current amount and multiplying it along each edge may be clearer. Grace asks about the change, and he explains his reasoning instead of silently moving on.

Nolen proposes a queue containing a unit and the amount expressed in it. For each outgoing edge, enqueue the neighboring unit with the amount multiplied by the edge factor. A visited set prevents repeatedly exploring the same nodes.

He chooses breadth-first search because it finds a shorter path in number of edges, which he hopes will reduce accumulated floating-point rounding from multiplying many factors. Grace confirms that the approach is a BFS carrying additional state for each queued item.

While writing the code, Nolen revisits the Node class and adds an edge list. Grace points out that the sketched Edge class is not yet being used, and Nolen fixes that. He initializes the queue with the starting node and amount so the main loop can handle the initial state consistently.

Nolen does not remember the exact Python queue API, so Grace permits him to assume a reasonable one. In the loop he removes a node and amount, returns the amount if it is the destination, and otherwise explores its edges. Grace spots that he has reversed the tuple order, which he corrects.

Searching with a queue
슬라이드 3 / 3Searching with a queueThe evolving query code initializes a queue with the starting unit and amount.

The traversal multiplies the current amount by each edge's factor before enqueuing its destination. Nolen notices that marking nodes only after they are removed can put the same node in the queue multiple times, so he adjusts when nodes enter the visited set. If the queue is exhausted, he returns None.

04

Walking through and correcting the solution

A concrete example reveals missing node lookups and the need for reciprocal edges. The pair finish the mock interview without executing the code.

Grace asks Nolen to walk through an example. He first notices that the query function has not looked up its source and target in the preprocessed facts. He adds checks for unknown units and retrieves the corresponding nodes before tracing the algorithm.

For two meters to inches, the queue starts with meters and amount 2. Following the meter-to-foot edge multiplies by 3.28, giving 6.56 feet; following the foot-to-inch edge multiplies by 12, yielding 78.72 inches. The walkthrough checks both the state and the control flow.

The walkthrough exposes another issue: the graph currently records only the direction supplied in each fact. It can convert meters to inches but may fail in the reverse direction. Nolen adds a reverse edge with reciprocal multiplier, so a foot-to-inch fact also supplies inches-to-feet conversion.

Nolen concludes that with reverse edges the same traversal can answer the reverse query as well. Grace ends the mock interview; because Nolen already works at Jane Street, they skip the usual candidate questions and move to a recap. The exercise was discussed rather than executed in the shared editor.

05

What interviewers look for

The engineers discuss communication, clear and correct code, and how to practice in a realistic interview setting.

In the recap, Grace and Nolen say the main goal is to understand what it is like to work with a candidate. Solving the problem matters, but it is not the only criterion: they also look for communication, code clarity, design intuition, carefulness, response to feedback, relevant expertise, and general problem solving.

They caution against interpreting ‘think aloud’ as an obligation to narrate every line. Communication helps interviewer and candidate stay aligned so the interviewer can understand the plan and assist when needed. Clarifying the specification or talking through an approach before implementing it can be more useful than exhaustive commentary.

Thinking aloud can itself be difficult, and candidates can say they want a moment to think silently. The speakers also emphasize clear, correct code: control flow, useful helper functions, and good names make it easier for others to work in a large shared codebase.

Unless optimization is part of the question, a straightforward solution is generally preferable to a clever one. Their strongest advice is practice: use a timer, implement the solution yourself, and explain your thinking as you would to an interviewer, rather than merely reading a solution and assuming you could have produced it.

같은 채널의 다른 글

1:48:29EN
JSJane Street· 2026년 10월 16일How AI Is Changing Programming: John Krazit and Ron MinskyRon Minsky, John Krazit · Jane StreetJane Street’s AI tooling lead and the Signals and Threads host examine agent infrastructure, security, code review and the changing experience of writing software.코딩 에이전트Developer productivity평가(Evals)+2
1:36:37EN
JSJane Street· 2026년 9월 23일Aaron Bauer on Teaching Software Engineering in the Age of AIRon Minsky, Aaron Bauer · Jane StreetHow learning goals, active practice and editor design shape engineering education when models can generate the code.AI in EducationSoftware engineeringEducation+2
슬라이드 9장1:05:45EN
JSJane Street· 2026년 9월 11일Cyrus Omar on Live Programming and a Computational Commons for Humans and AICyrus OmarA demonstration of Hazel shows how immediate feedback, structured collaboration and carefully scoped permissions could support people and AI agents working together.Programming LanguagesHuman-AI Collaboration개발 워크플로와 테스트+2
1:25:00EN
JSJane Street· 2026년 9월 2일Eric Mannes on Turning Messy External Data Into Trading ResearchRon, Eric Mannes · Jane StreetFrom commodity futures and an Excel risk system to point-in-time datasets and AI, Eric Mannes explains the domain knowledge behind data engineering at Jane Street.Data quality & curation개발 워크플로와 테스트Investing+2
슬라이드 7장1:16:29EN
JSJane Street· 2026년 8월 26일Grant Sanderson and Alok Puranik: Positional Encodings Through Group TheoryGrant Sanderson, Alok Puranik · 3Blue1BrownStarting with assumptions about attention, they derive matrix exponentials and connect rotations, decay and Jordan blocks to RoPE and ALiBi.Transformers & attentionMathematics머신러닝 기초+1
27:39EN
JSJane Street· 2026년 8월 21일3Blue1Brown and Jane Street on Trading, Machine Learning and CultureGrant Sanderson, Nitya, In Young, Craig, Alok · 3Blue1BrownGrant Sanderson talks with Jane Street colleagues about market making, shared compute, research and the paths that brought them to the firm.Machine LearningFintechCompany Culture+2