Hey guys, I did Uber phone interview recently. I was asked a leetcode hard. I had 40 minutes and figuring out the algorithm took me 35 and wrote a pseudo code as I didn't have time to finish it.
What is the criteria usually for clearing the phone screen?
If it is working code, then I am screwed.
I pass 75%. 25% overall get through onsite. My bar varies by job title. I grade them to a job level. A sr eng can code the problem perfectly and fail the discussion phase miserably. Junior engineers will be evaluated based on how they think through the variations but aren't expected to have enough experience to consider all the different ways of solving it and how they might choose among the solution set. There's no wrong answer other than code that doesn't pass the unit tests I give them for the coding part. Failure of unit tests is about 95% in the first round. They get through the corner cases in the time alotted and they pass.
Asking people leetcode questions is not effective in figuring out if they can design a reliable system.
The other onsite people ask the trickier questions, but they all relate directly to our problem domains. If I'm not a code evaluator in the loop but am doing the algorithms loop part, I ask questions customized to their resume and don't force code. If they have done algorithm R&D before, it's pretty clear based on a short discussion if they know what they are doing. Reading algorithm books helps, probably leetcode, too, but I won't ask them to solve a particular problem if I'm in a deep dive portion. If it's a system design loop part, I do ask them what they want to change about the product and they have to design the solution as deeply as they can go in the time provided. It's a two-way conversation as I describe what microservices they can assume exist to keep directing them down to the lowest levels.