I just finished my OCI VO last week. Four rounds. I'm writing up the questions for whoever comes after me.
The process: after the recruiter chat, about a week later they scheduled a phone screen, and once I passed that they scheduled the VO, which is split over two days. Every round starts with ten-odd minutes of BQ, and they don't tell you beforehand which round covers what, you only find out when you're in there. Ridiculous.
The phone screen was "simplify expression": an expression with plus and minus signs and parentheses, and you remove the parentheses and simplify it. I got it done, and after writing it I made up a few cases of my own and ran them.
VO round 1 was coding. You're given a sorted list of request timestamps and have to return the number of dropped requests. There are three limits: at most 3 per second, at most 20 per 10 seconds, and at most 60 per 60 seconds. The catch is that dropped requests still count against the later quotas. I didn't notice that at first, and only found out when my numbers didn't match on the test cases. The interviewer had me explain the naive approach first, then how to optimize it, and finally analyze time and space complexity.
Round 2 was LLD, which is really just OOD. Write a Logger whose constructor takes a list of handlers, and log(message) has to pass the message through all the handlers in order. There are two handlers to implement, a TruncateHandler and a StoreHandler. The latter doesn't print anything, it stores the message in an internal list. This round didn't require running code, it was mostly a discussion of how to design the interfaces.
Round 3 was SD, tiny url, nothing special, though I got asked about tradeoffs quite a lot.
Round 4 was HM. It was supposed to be SD, but it was basically digging through my resume. They asked about oncall and my hardest project, with lots of follow-ups.
Overall the question difficulty was normal. I got the feeling OCI cares a lot about BQ and tradeoff discussions.
Discussion
Loading comments…