Interview questions - the difference between IT and large software companies
Shachar left me a comment in my post Interview Question #5 - Binary permutations and I at first to answer as a comment but then thought that I will be a great post by it self (you will be the judge of that).
Let me tell you a personal story. I was one of the first people that interviewed for a developer positing at Microsoft Herzeliya, long before any large recruitments.
So I went there, confident that I be able to pass the interview and start my career at Microsoft. The confidence was based on my experience in various IT companies doing various technology focused roles. And I was quite good or at least that what my colleagues and managers told me.
The interview day was consistent of two interviews.
The first interview was on how would I implement virtual memory (!!!). WTF ? Fortunately I took the course in operating systems a year or two ago as part of my CS degree, so I knew the answer to that one, although I felt very uncomfortable and unconfident from this point forward. The second question in the first interview was - how would I implement DNS, same luck here, I took a networking course and had a vague idea about the implementation.
The second interview was algorithmic in nature - I had to implement stack and queue + some questions on this - this was relatively no difficult. The second question in the second interview blown my mind: Find the shortest route between start point and end point in a rectangular space. In that space can be one or more polygonal shapes they are the obstacles.
If anyone has an answer to the question above - it will be appreciated, because I don't know the answer !!!
My point is this - there are two kinds of interviews (can be more but I mean for .NET developers):
1) IT companies
2) Large software companies such as Microsoft, Amazon, Google, etc.
The IT companies deals with software integration - most of the time you think on how to integrate a technology X in your organization the best way (and have fun doing that), or how do implement functionality Y using technology A, B or C.
However, the software companies are usually the ones providing the the technologies and thus they need something else - the need knowledge in operating systems, networks and algorithms! At IT interview you will be asked what are the pro's and con's in store procedures vs. queries, and at Oracle you will be asked - what kind of optimization can you do to a query that will reduce the memory footprint (made that one up).
Final thought on the matter - I think that developers that do know how the OS is working and how do various algorithms perform and what are they limitations and when to use recursion (and when no to use it) are considered better by the IT organization they working for - and there quite a lot of those people - some of them writing blogs at this very blogging host!