Summary
I experienced an on-campus interview opportunity at CDAC, which involved an offline MCQ exam followed by two technical rounds. Despite not receiving an offer, I gained valuable insights into my weak points and used the experience for future success.
Full Experience
I participated in an on-campus interview opportunity at CDAC. The process began with an offline MCQ exam covering various subjects like DBMS, OOPs, programming, Python, and JavaScript, all at a basic level.
First Technical Interview
This was my initial interview. The interviewer focused on my development experience, asking about REST APIs. We then discussed DBMS and delved deeply into OS concepts, particularly multithreading. Following this, we explored the differences between linear and non-linear data structures, moving into graphs and trees. She questioned me on tree traversal, graph traversal, their differences, and implementation details. I also explained Dijkstra's Algorithm thoroughly. Finally, questions on Stack and Queue were posed, followed by the Two Sum and Three Sum problems. I was shortlisted for the second round after this.
Second Round (Technical + HR)
In this round, the discussion centered around operating system concepts such as Race Condition vs. Deadlock vs. Starvation, and Aging. We had a deep discussion on Error vs. Exception. I was also asked about Semaphores and challenged to write multithreading code, a topic I hadn't studied at the time. Unfortunately, I was not shortlisted after this round.
This was my first interview experience where I didn't receive an offer, but I learned a significant amount. I identified my weak points, which I subsequently addressed, helping me to succeed in my next two interviews. It reinforced the idea that rejections shouldn't be feared; instead, they should be used as opportunities to improve.
Interview Questions (9)
Explain what REST API is, its principles, and how it is used in development.
Explain the differences between various tree traversal and graph traversal algorithms (e.g., BFS, DFS for both). Discuss their implementation details.
Explain Dijkstra's shortest path algorithm, its working, time complexity, and use cases.
Explain the concepts of Race Condition, Deadlock, and Starvation in concurrent programming/operating systems. Discuss their causes, effects, and potential solutions.
Explain the concept of Aging in operating systems, particularly in the context of CPU scheduling algorithms, and how it addresses starvation.
Discuss the fundamental differences between Errors and Exceptions in programming languages (e.g., Java), when each occurs, and how they are handled.
Explain what Semaphores are and write code to demonstrate their use in managing access to shared resources in a multithreaded environment to prevent race conditions.