I have been part of several interviews in past while I was in the interview panel with my previous employer and while I was looking for a change. Then, I came across some of interviewers who throw really interesting problems to solve. Sharing my solutions and approach and expecting expert comments from people is the intension here in this section of my writings.
Some of the very interesting interviews I have been at
List is huge but not interesting.
Normally interviews revolve around the following
- C/C++ programming language
- Data Structures
- Operating System Concepts
- Network internals
- Your specialization!
C/C++ are great programming languages. C++ is C+OOPS. And for that reason, a C++ interview benchmarks your understanding about Object Oriented programming which is very basic to developing great software’s, If you break your programs well and write them organised or you write just one lengthy piece of code like an essay! When we talk about C programming, it is mostly around pointers which is a great asset of the language and thus power. Data structure tell how good and optimal programming you do. They are actual test of your problem solving skills. If you have good command on data structures and algorithms, you are sure to rock the interview. I remember once I used concept of sliding window protocol (networking) to solve a problem of string search!
Operating system concepts are discussed and thrown as problems relating to data structure and algorithms. OS is one place where some of the most complex and optimal algorithms are used to solve problems which otherwise are pretty difficult to solve. Another reason to talk about OS internals is to see if you really understand why a design decision is like that and not otherwise. Most student in college never argue or discuss any alternate options to solve a problem in OS, say Scheduling. Network internals are also discussed for the same reason as OS – Complex algorithms and optimal solutions to diverse problems.
I have come across several interview panels who would throw the same questions from the interview cook book which you will find common in 8 out of 10 interviews. I personally feel it as incompetency or disinterest of the interviewer. I remember a few interviews where I was expecting some real problems and when thrown the same old questions which actually do not have a defined answer but –“compiler dependent” results and interviewer is expecting me to throw him an answer that he knows and feels is correct! I just took it from him and slapped him with either two or more solutions to his problem or cut him halfway his statement with a solution. That was because I wanted him to end that trail of pathetic fresher interview questions. May be attitude, but with that most interviewers would go in shell.
Back to interview problems. There have been several interviews where I was sent spinning in thoughts asking myself – How would you do that? Those are the kind of challenges I really loved to face. Get a problem, find a solution and prove that yours is the best! And that too in a very short period.
There was one such interview at Symphony, Pune. I was being interviewed for a position of kernel developer. I had very little experience then with being interviewed but was full of confidence because the previous interview I was able to solve pretty complex problems. What went wrong is that I was well prepared with the deep OS concepts and all complex things I been working upon, but basics! Basics is one place people tend to skip. I just did the same mistake. When interview started I was asked OS and my work. I was spitting out things very confidently but suddenly one of the interviewer asked me a very basic question in C, A sudden switch from kernel internals to basic C caught me off guard. I was asked difference between
char *p = “Hello”;
char a = “Hello”;
And I was stumped. And then the rest of the interview I was in guilt and pressure and was waiting for them to just stop asking and kick me out. But that was a turning point. I really pushed myself hard to the basics and in a month I refreshed the basics so good that I never had to look back. C-Faq were great help. Even the basics became one of the prominent topics in my group discussions.
Having a group to discuss and share thoughts is good and beneficial. Brain storming is good and having a food for thought is must. Get good problems for yourself and raise your level. The more complex problems you solve, the stronger your brain evolves.
Few things that I learned from my experience with interviews are
Strong with programming and basics
Feed your brain with complex problems and find most optimum solutions
Teach yourself new languages and technologies and take yourself to level 2 or 3
Keep yourself up-to-date with the technology you are working upon
Learn about the competitive products and technologies in market
Talk, talk and talk technical. Buy problems, gift solutions, discuss optimization.
Take up lots of interviews and take each one seriously.