Round 1: Recruiter Phone Screen
Questions: Typical chit-chat with recruiter and asking about my past experience and why Brex. Ask the recruiter for tips on the process so that you know how to stand out and succeed.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 2: Technical Phone Screen
Questions:
Implement a TaskScheduler
system in an iterative way.
Milestone 1: Add Task
- Add task (assume no concept of dependency)
- Complete task
- Get next task
Milestone 2: Introduce prerequisite task
- Extend your Task Scheduler to support adding tasks while specifying prerequisites
Milestone 3: Completion plan
- Given an added task, identify a valid sequence of tasks to complete prior to finishing the given task
# scheduler = TaskScheduler() # coffee_task = Task("Brew some coffee") # print(f"coffee task: {coffee_task}") # scheduler.add_task(coffee_task) # next_task = scheduler.get_next_task() # Should be coffee_task # print(f"next task: {next_task}") # scheduler.complete_task(next_task) # print(f"completed next task: {next_task}") # scheduler = TaskScheduler() # coffee_task = Task("Brew some coffee") # scheduler.add_task(coffee_task) # toast_task = Task("Make a toast") # scheduler.add_task(toast_task) # brainstorm_task = Task("Brainstorm project ideas", [coffee_task, toast_task]) # scheduler.add_task(brainstorm_task) # print(scheduler.get_all_tasks()) # next_task = scheduler.get_next_task() # Should be coffee_task or toast_task # print(f"first task: {next_task}") # scheduler.complete_task(next_task) # print(f"first task update: {next_task}") # next_task = scheduler.get_next_task() # Should be coffee_task or toast_task # print(f"second task: {next_task}") # print(f"brainstorm task state: {brainstorm_task}") # scheduler.complete_task(next_task) # print(f"second task update: {next_task}") # next_task = scheduler.get_next_task() # Should be brainstorm_task # print(f"third task: {next_task}") # scheduler.complete_task(next_task) # print(f"third task update: {next_task}") scheduler = TaskScheduler() yoga_task = Task("Do morning yoga") scheduler.add_task(yoga_task) coffee_task = Task("Brew some coffee", [yoga_task]) scheduler.add_task(coffee_task) toast_task = Task("Make a toast", [yoga_task]) scheduler.add_task(toast_task) brainstorm_task = Task("Brainstorm project ideas", [coffee_task, toast_task]) scheduler.add_task(brainstorm_task) # Should be [yoga_task, coffee_task, toast_task, brainstorm_task] or [yoga_task, toast_task, coffee_task, brainstorm_task] plan = scheduler.get_completion_plan_for(brainstorm_task) print(f"completion plan: {plan}")
I was able to solve in full and interviewer was very chill.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 3: Debugging
Questions: You are debugging a holiday calculator application: Context You have an application that takes in a date (Y-m-d format) along with a num_days (in business days) parameter and your goal is to calculate estimated delivery date. You will be working with the year of 2020.
The pieces are:
- Tester file
- Estimator: object that contains property of holidays
- Holiday: Object to represent a holiday
- Rule: Holidays can be absolute day (eg: New Years day is on Jan 1st), relative day (eg: christmas = christmas eve + 1), or day of week (eg: 3rd thursday of Nov)
- helper: contains utilities to calculate day of week number (you need to figure out the numbering system because that’s part of the interview), month from a string like "January"
NOTE: The estimator skips over holidays, weekends because those DO NOT count as business days! You can also assume the calendar itself is working.
You have 5 unit tests that are failing. Your goal is to get them to pass. The bugfixes are small 1-2 line changes. DO NOT do any big refactor or alter the unit test in any way!
Candidate's Approach
I clearly walked through the business context of the problem before diving into code. I used a systematic method to add print/log statements to see how the data was flowing from function to function in order to diagnose the failing unit test. I debugged one test at a time and verified backwards compatibility. I was able to get all 5 unit tests to pass in the nick of time!
Interviewer's Feedback
The interviewer gave me a strong yes rating for my approach and behaviors during this round.
Round 4: System Design
Questions: Your goal is to design a system where you had to support points accumulation and redemption functionality when a consumer makes transactions on Brex card (think like credit card points). There is an existing transaction authorization service given to you and you can consume the transaction data via API request or event stream.
Candidate's Approach
This part went okay in my opinion and I leveraged the interviewer a lot for collaboration.
Interviewer's Feedback
No feedback provided.
Round 5: Hiring Manager Round
Questions: Typical Hiring Manager round for Growth team. Be prepared to talk about why Brex, a project you’re most proud of, critical feedback you received, disagreement, etc. typical behavioral interview questions.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Status
I completed all the rounds and fingers crossed for an offer.