Zomato Interview Experience (4+ years Experienced )
There were three rounds out of which two were system design based and third one was engineering manager round.
Questions asked in first round are as follows:
- Explain complete architecture of current project
- Explain about one challenge that you faced while developing any feature and how did you solve that problem.
- Difference between SQL and NoSQL databases.
- What is sharding.
- Since I have worked on Elastic search, design elastic search cluster, given number of active shards, number of instances and number of replicas.
- How is data actually stored in elastic search?
- Design rate limiter specific to client. Given max R requests recieved from client in T sec, how do design your system. How to handle failure scenario when more requests are recieved? I explained this with the help of queue and doing binary search based on timestamp to get number of requests when a new incoming request was recieved.
Questions asked in second round were somewhat similar to that of first round and are listed as below:
- Again explanation about current project and a feature that recently worked upon.
- Benefits of storing data in elastic search as compared to DBs.
- What is indexing and how is it implemented internally.
- Given two DBs A and B and one table T ( Columns C1, C2)in both DBs, C1 was primary key in them and C2 was another indexed column in DB B. Select query will run on both DBs i.e Select C2 from T where C1=X. Which DB will serve faster data?
- One follow up question, another select query is given say, Select * from T where C1=X and C2=Y. Which DB will serve faster data?
- Given two clouds Azure and AWS and we need to store data on AWS as backup. Read and write op will be done on Azure only. How will you manage this syncing of data?
a)First solution, asnyc update AWS backup and maintain a queue for all write requests. When a worker thread is free, start writing data on AWS.
b) What if many requests come at one time that queue can’t handle? Then write a cron job schedular that will trigger a lambda on hourly basis to sync data between these two clouds.
- Given a log file consisting of all requests log recieved on one single day, how will you calculate max number of requests/sec and max number of active concurrent users.
a) Solution to first problem that I provided : read data from log file and sort data based on timstamp. After sorting, group data based on second interval say 12:00-12:01 and then count max size of these groups.
b) For second problem, we will again sort data and then for every login, do count++ and for evry logout, do count–. If count> max, then update max_Concurrent_users.
Third round was mainly around discussion of current project.
My Personal Notes arrow_drop_up
Please Login to comment...