Summary
I successfully interviewed for a Software Developer Intern position at Hummingbird Web Solutions and received an offer. The process spanned multiple rounds, including discussions on core computer science concepts, data structures and algorithms, and system design challenges.
Full Experience
My interview journey for the Software Developer Intern role at Hummingbird Web Solutions commenced with a Telephonic Round. This initial discussion, lasting about 15 minutes, primarily focused on foundational architectural concepts such as Client-Server Architecture, Event-Driven Architecture, and Server-Side Rendering. We also had a brief thought exercise on selecting an appropriate architecture for a stock management system.
Next, I advanced to an Online Interview. This hour-long round covered a broad range of technical topics. It began with a question on "What is a Kernel?", followed by a deep dive into the nuances of TCP and UDP in streaming contexts, and a discussion on WebSockets. I was then presented with three DSA questions, specifically mentioning "0/1 Matrix" and "Coins Change II". The round concluded with a High-Level Design (HLD) challenge focused on the caching mechanisms for large-scale applications like WhatsApp and Instagram.
The second Online Interview Round, also lasting an hour, continued to assess my technical depth. It started with questions related to Git, specifically differentiating between `git fork` and `git clone`, and explaining merge conflicts. We then explored Docker containers and their operational principles. A significant part of this round was a comprehensive System Design question, tasking me to design a system for user code submission in a contest environment, similar to LeetCode, detailing how Docker could be utilized for execution and Redis sorted sets for leaderboard functionality. Basic questions concerning AWS services such as Lambda and RDS were also part of this round.
Finally, I proceeded to the HR Round. This was a fairly standard discussion, encompassing topics around internships, my adaptability to new technologies, and general career aspirations.
I am delighted to share that the verdict was positive, and I received an offer!
Interview Questions (12)
Discuss Client-Server Architecture, Event-Driven Architecture, Server-Side Rendering. Additionally, propose and justify an architecture suitable for building a stock management system.
Explain what a Kernel is, its primary functions, and its role within an operating system.
Compare and contrast TCP and UDP protocols, specifically discussing their suitability and implications when used for streaming applications.
Describe what WebSockets are, how they work, and in what scenarios they are typically used.
You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money. Return the number of combinations that make up that amount. If that amount of money cannot be made up by any combination of the coins, return 0. You may assume that you have an infinite number of each kind of coin.
Design a high-level caching strategy for massively scaled applications like WhatsApp and Instagram. Discuss the various types of caches, invalidation strategies, and typical architectural considerations.
Explain the fundamental differences between the git fork operation and the git clone command, detailing when and why each would be used.
Describe what Git merge conflicts are, the common scenarios that lead to them, and the steps involved in resolving them effectively.
Elaborate on the core working principles of Docker containers, including concepts like images, containers, layers, and the Docker daemon.
Design a system for a coding contest platform where users submit code for evaluation. Focus on leveraging Docker for isolated code execution environments and implementing a real-time leaderboard using Redis sorted sets.
Answer basic conceptual and operational questions regarding AWS Lambda (serverless compute service) and AWS RDS (managed relational database service).