I went through the following rounds at BrowserStack as mentioned below where each round was an elimination round.
Round 1 (Coding Test):
Online HackerEarth test which had 3 questions for 2 hours which was for 200 marks. The questions were of the Easy / Medium level.
All of the below rounds were onsite.
Round 2 (Machine Coding-1):
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 the 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.
Round 3 (Machine Coding-2):
You have to implement a simple stateless web service that allows one to interact with two web-browsers: Google Chrome and Mozilla Firefox.
The service should support the following endpoints:
|GET||/start||browser, url||Starts <browser> which has the <url> open inside it.|
|GET||/stop||browser||Kills the <browser>.|
|GET||/cleanup||browser||Deletes all the browsing session information such as history, cache, cookies, downloads, saved passwords, etc for <browser>|
|GET||/geturl||browser||Returns the current active tab’s URL. Assume the <browser> has exactly one window and multiple tabs.|
<browser> = chrome/firefox
<url> = Any valid URL like: http://www.browserstack.com
Example usage of endpoints:
- http://<server>/start?browser=<browser>&url=<url> should start the desired browser and open the URL in the same browser instance.
- http://<server>/geturl?browser=<browser> should get the current active tab URL for the given browser
- http://<server>/stop?browser=<browser> should stop the given browser if it is running
- http://<server>/cleanup?browser=<browser> should clean up the browsing session for the given browser if has been stopped.
Points to note:
- Browsers have to be started/stopped on the server’s end. i.e. if the server is running on machine A and a request to /start is made from machine B, the browser should start on machine A. For purpose of this assignment, assume machines A and B to be the same, i.e. your own machine.
- Any tool or library that relies on the Selenium (WebDriver) protocol should not be a dependency on the service.
- Service does not need to be OS independent, i.e. if you have a Windows machine, it is expected that the service runs properly in Windows but it is not expected that it runs properly across all operating systems. That said, if you provide an OS-independent implementation, you will get bonus points.
- Remember to take a backup before hitting /cleanup in order to avoid erasure of your data.
Round 4 (Technical Round-1 with the Engineering Manager):
1) Your favorite internship project.
2) Questions on a personal project and what if we do a change how will you handle it.
3) Strengths and Weaknesses.
4) Gave a problem to bring all zeros at the start of an array had to solve it in O(n) time and O(1) space.
5) Gave a Data Structure design problem where we can query everything in O(1) time.
6) Huge file handling like we have 1 TB of the file and you have to count occurrences of words with limited RAM say you have only 8 GB of RAM. How will you process it?
Round 5 (Technical Round-2 with the Director of Engineering):
1) About projects.
2) Failed project.
3) HTTP vs HTTPS.
4) HTTP error codes.
5) What is User-Agent in HTTP header?
6) What will you do if your manager asked you to use C++ and you prefer Python?
7) If you are given a problem and your manager is too busy and you have to solve it independently then how will you deal with it?
8) What are the points that you will take into consideration if you have to deploy a system into production?
9) What kind of logs will you send out while building your system so it is helpful in monitoring in the future?
10) Database scaling.
Round 6 (HR Interview):
1) Explain work done at one internship.
2) How did you come to know about BrowserStack?
3) Why BrowserStack?
4) Do you use GitHub?
5) Do you participate in Competitive Coding competitions?
6) Anyone project you think you were failing but you envisaged and succeeded in it?
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.