At this point of time I was final Year Computer Science Student from Tier 3 College in Mumbai. I had some experience in competitive programming and a few open source contribution. I had been to a few hackathons. One of my seniors referred me for the opening for Software Engineer position.
Round 1: Online Round
The online round was conducted on hackerearth it was a 2 hour coding test consisting of 3 questions
- 100 points: Design a reverse proxy for the given scenario. You will be given n servers and their IP addresses, m endpoints the reverse proxy has a list of IPs for each endpoints. Every request that comes to an endpoint goes in round robin fashion to this IP address.You also get special type of hits to the reverse proxy from the server monitor which says that
- a particular server has gone down and can’t take any request
- a particular server is up now and can’t take any request
Once a server comes back up it should be added to end of the queue in round robin corresponding to each of endpoints it is responsible for.
At the end of q queries give out list of requests received by each servers.
- 50 points: Given an array of numbers return 1 is the array is spirally sorted or 0 in case it is not spirally sorted. For an array to be spirally sorted its values must be in ascending order when arranged in following order 0, n-1, 1, n-2, 2, n-3……
- 50 points: Given a list of words return 1 and 0 for each word depending on whether they have at max n repetition of a single character in them
I was able to score a complete 200 in this round but people who had scored 120 points were also considered based on the screening done by HR using the resume and profile.
The shortlisted candidates from around Mumbai where called onsite for the further rounds and the people from other cities had the round conducted online on video call.
Since I was in Mumbai I was called onsite. We were informed to bring our own laptops for the machine coding rounds.
Round 2: Machine Coding Round – I
This was a 2 hours round, with the following problem statement. At the end of the allotted time you had give a demo and explain your implementation.
This problem requires you to implement a log watching solution (similar to the tail -f command in UNIX). However, in this case, the log file is hosted on a remote machine (same machine as your server code). The log file is in append-only mode.
You have to implement the following:
1. A server side program to monitor the given log file and capable of streaming updates that happen in it. This will run on the same machine as the log file. You may implement the server in any programming language.
2. A web based client (accessible via URL like http://localhost/log) that prints the updates in the file as and when they happen and NOT upon page refresh. The page should be loaded once and it should keep getting updated in real-time. The user sees the last 10 lines in the file when he lands on the page.
The server should push updates to the clients as we have to be as real time as possible.
The server should not retransmit the entire file every time. It should only send the updates.
The server should be able to handle multiple clients at the same time.
The web page should not stay in loading state post the first load and it should not reload thereafter as well.
You may not use off-the-shelf libraries or tools that provide tail-like functionalities.
We will be evaluating you for code quality, testability, modularity, corner cases, etc.
You could carry out the task in any language of your choice and take help of internet. I used node.js, express.js for this task and completed all the functionality, but I couldn’t get the most efficient implementation that could have been possible.
I made use of fs watch method for live updates and sockets for transferring data to the client.
Round 3: Machine Coding Round – II
This was again a 2 hours round, with the following problem statement. At the end of the allotted time you had give a demo and explain your implementation.
In this problem, you have to build a small knowledge base about the top N movies listed on IMDb Charts and provide a mechanism to query the same.
Your program should accept N as an input parameter and do the following:
Fetch the list of top N movies from the IMDb website and build an in-memory knowledge base comprising of
the names of movies
the names of the cast of each movie
This should be built at runtime and stored in a suitable data-structure of your choice.
Provide a query interface (command line would do) to query this knowledge base by actor’s name. For a given actor and a number M (< N), it should return the top M movies they have acted in.
You may attempt this problem in any language and libraries of your choice. You can not use any external API for fetching movies from IMDb.
For example, if N=3, then the program should parse the first 3 movies’ individual pages from IMDb Charts and build the knowledge base of the cast (there are about 15-20 names per page). Upon querying for “Morgan Freeman” and M=1, you should return “The Shawshank Redemption”.
I performed this task using python building a simple CLI interface and using beautiful soup and requests.
After this round, there was elimination carried out and only people who had performed well in both the tasks nearing completion of maximum functionality where selected for the next round.
Round 4: Engineering Manager Round
- How did you find the last n lines of log file ? and if given more time how would you do it efficiently ?
- Among the internships listed in your resume, which project was most interesting ? some followup questions on that project
- Things that you learn’t during this internship and mistakes you made during it
- How would you count the frequency of words in a very huge file ?(map reduce)
Round 5: Director Of Engineering Round
- Walk me through your resume
- What one thing did you enjoyed the most in the college?
- What do you do on weekends ?
- What all parameter would you consider when you decide to use your piece of code into production environment ?
- Some situation based behavioural questions
- Difference between http and https, What are http headers, http status codes and http user agent ?
- What are a few open source organisations you know or have contributed to ?
After these 2 rounds there was further elimination carried out and the selected people where sent for HR round.
Round 6: HR Round
- How was your entire day ? What do you think of our interview process
- Why BrowserStack ?
- What is the value proposition of BrowserStack ?
- How many contribution do you have on Github ? Do you enjoy Open Source ?
- What is your Codechef rating ? Do you like competitive programming ?
- Among the projects listed which is the most interesting project that you have done and why ?
After this round we were told, that that was it for the day and the results would be announced in a day or two.
Within 2 days I received a call from the HR saying they would like to extend an offer.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course. In case you are prepared, test your skills using TCS, Wipro, Amazon and Microsoft Test Serieses.