I applied on a whim to a network-related infra role. A coordinator reached out afterward. They do have a recruiter, but I only got one on the line when I asked about salary and the RTO policy.
No exaggeration: this company runs 60-hour weeks as the baseline, and 80-100 hours isn't a dream scenario, it's normal. Basically Palo Alto RTO5.
Interview process
Originally the network team's hiring manager was in Ireland, and I straight-up asked if we could do the interview at 4am or 6am my time — first time I've run into that kind of scheduling. Then the night before the interview, I was told the headcount got cancelled. The next day the coordinator said they'd found me a slot with the supercompute team instead. Credit to the coordinator, they got a new interview scheduled right away and even sent over a quick tip beforehand:
"For the 15-minute video call, you can expect to discuss your background, experience, relevant technical knowledge, as well as a coding question."
I thought: it's only 15 minutes, that's barely enough time to cover background, let alone coding. Turned out it really was as unconventional as it sounds.
The interviewer gave almost no feedback the entire time. After a quick self-intro, he asked me to talk about my background. I started with my current company, and before I could even get to my previous company's experience, he cut me off and said "focus on recent." Then he asked what challenges the project had. I gave a short answer and he cut me off again, said that was enough, and threw a CoderPad at me to solve a problem.
It was a multithreading debugging question. I said I'd use Python; he said they use Go, but gave me the Python version anyway — though he didn't seem too happy about it.
Problem description:
The code was a multithreaded program depositing money into a bank account. It gave an account class:
account = BankAccount(0)
with ThreadPoolExecutor(max_workers=2) as executor:
futures = [
executor.submit(account.deposit, 500),
executor.submit(account.deposit, 700),
]
Code issues:
Bug #1: Race condition in deposit()
new_balance = self.balance + amount # Read
time.sleep(0.1) # Delay
self.balance = new_balance # Write
The problem:
- Two threads deposit at the same time
- Thread 1: reads balance = 0, computes new = 500
- Thread 2: reads balance = 0, computes new = 700
- Thread 1: writes 500
- Thread 2: writes 700
- Final balance = 700 (should be 1200!)
Classic race condition.
Bug #2: No thread safety mechanism
- No lock
- Multiple threads can access it at the same time
- Data corruption
Discussion
Loading comments…