Technical Round 1:
- An easy Coding Problem which I don't recall now.
- Questions on concepts of Rest APIs, HTTP v/s HTTPS, and some similar web tech related questions.
Technical Round 2:
- Coding Problem: Find the first common node in two intersecting linkedlists.
Same as https://leetcode.com/problems/intersection-of-two-linked-lists/.
I had a little bug in my code initially in handling the no intersection case, but I was able to identify and correct it myself so the interviewer liked that.
- Then there were many questions on varying topics:
- Threads and processes
- Difference between concurrency and parallelism
- Network Architecture layers
- Different error codes on internet, what those codes mean, etc.
- He also asked me if I have experience of Concurrent programming, Functional programming, Design Patterns. To which I clearly said NO.
PS: I wasn't expecting anything much after this round since I immediately NO to some questions. When I was interviewing with the company I wasn't sure if I really want to join them thus I gave all interviews with somewhat casual attitude. That is also the reason I could easily say no to those questions.
Technical Round 3:
- Coding Problem: A dictionary based problem.
Design a dictionary to search words with exactly one character modified of the original word given.
Implement buildDict and search functions.
I proposed two solutions -
i) Using hashmap to store the words
ii) Using Trie to store the words (for space optimisation)
To save time, I coded the Hashmap solution (with the interviewer's consent). I designed the class and implemented above 2 functions.
- He asked me many follow up questions on the coding problem. If there is such a system existing what would you do to handle very large number of users? How would you handle large number of incoming search requests? and so on.
- Then we also discussed some System Design concepts like Horizontal Scaling, Load balancers, etc. (mostly in regards to scaling the above system)
- And some networking related questions.
My thoughts/tips on the process:
- There was a clarity on what the process looks like which was good, and the process was comparitively fast as well.
- There was no managerial round/interaction which I didn't like. All interviews were taken by young engineers and no leadership was involved, which I didn't like personally. I like managerial rounds because it gives an idea of senior leadership of the company which also helps in making a final decision on candidate's side to join the company or not.
- Sometimes you might have to clarify a question 2 or 3 times because the interviewers are often not fluent with English.
- A good understanding of CS fundamentals is also important.