I was watching several mocks and after gathering requirements, the candidate starts calculating bandwidth and data storage requirements. Should I follow that procedure? Or is it ok to handwave and assume “a lot of data”? And jump into high level design?
I generally ask about scale of the system and go from there. Bandwidth estimates are largely pointless arithmetic IMO. We know it needs to scale, but YMMV with interviewers
F
I went down this rabbit hole once. It was actually a system design question on a subject I was very familiar with. I got to the part early on about estimating how much capacity would be needed. I threw out like 15 different variables related to bandwidth that would measure how much capacity would be needed. The interviewer then asked me to do the math. Told him it would be easier with a calculator but he said no. Spent 85% of the interview doing this math on the white board. Finish just before the interview ended and he tells me the calculation he did on his computer show a different number. Fuck you shithead at google.
That's really a bullshit. Why such computation is important in the problem?
OTA delivery of an OS update and it needs to be distributed to all devices within X amount of time. So you create CDNs in different regions. However based on general internet speeds and quality in different parts of the world, you will need different amounts of capacity for sending the same amount of data. APAC is notorious for having lots of shitty internet, especially if that includes China. So bandwidth wise you can actually handle more pulls at once (though that can start running into other resource limitations). If you’re someone with a faster median of connections you will want to allow fewer simultaneous pulls per host. The last thing you want to happen is that your own resources get over utilized, causing even the best percentile of pulls to slow down to the worst speeds because then things just start backing up and you will have more and more simultaneous pulls going on because more people start trying to get the update than people are finishing getting the update. So you need to queue requests.
I see many candidates try to do dumb/simple math here. And many of them are even wrong: not a math but the dimensions and logics. Okay, most of them did computation. Good. But now what? They don't use these quantitative analysis in their design. Then what is the point? If you do reasonable computation (again I am not talking math), it is okay. But if you actually use the analysis on your design, this is really a strongly positive signal.
Can you give an example? I do math for qps to indicate scale of system and data retention size. Usually feel like it's useless since all interview Q are for big scale systems
I totally agree. I was just thinking about it too. I couldn't think of an answer to be honest. How the analysis can be used in the design besides making the system a distributed one? Could you please share some insights?
Tech Industry
Yesterday
1624
15 years age difference, need advice! 🙏
India
Yesterday
939
Why Worshipping Lord Ram Important in Hinduism?
Tech Industry
Yesterday
626
Blind is an antisemitic cesspool
Tech Industry
Yesterday
621
Programmers are the smartest people in the world
Tech Industry
Yesterday
485
Bay Area tech has now become WITCH
It’s never good to handwave or assume, if you want to skip it then ask