Yet Another .NET Interview Questions List
There are tons of blog posts on .NET interview questions out there on the ‘Net; here’s another list…just because I feel like it, okay :-P?
In general, when I am interviewing people, I don’t go for the obvious questions. Not only are they boring because I’ve answered them so many times, but most of them can be easily studied for. For most C#/.NET positions, there’s a pretty standard set of questions that you’ll encounter, most of which can be easily answered by simply reading Troelsen’s Pro C# (I know because I picked it up the first time I was burned after a phone screen – I recommend this book to all junior developers looking to move up the payscale).
I do incorporate a few “template” questions, but in general, I like to keep things away from fact based questions and geared towards open-ended questions (I want to see that a candidate has actually done more than just use a feature after looking it up on MSDN or whatever – I want to see that a developer has actually sat there and thought about the technology or feature or whatever).
Here are a few of my favorite questions for interviews; perhaps you’ll find them useful for your own interviews:
[ASP.NET] Discuss the strengths and weaknesses of ASP.NET, out of the box.
I ask this question because I want to see if a developer has thought really thought about ASP.NET as a framework. Developers who have can answer this pretty easily. Developers who just write the code and move on will give some really perplexing answers or flat out stumble on this one. I like this question because it’s completely open-ended and a developer is free to use anything in his/her past experience as a context. Some developers may compare and constrast it to other frameworks they’ve used (ASP, JSP, Python, Ruby, etc). Some will describe past frustrations or projects as points of reference for weaknesses. In general, I like this question because it shows whether an individual can discuss the technology intelligently.
[ASP.NET] What’s the difference between an HtmlControl and a WebControl?
What I’m looking to find out with this question is whether a candidate can show some restraint with regards to using web controls on a page where an HTML control would work just as well.
[ASP.NET] Can you describe any approaches or patterns to make ASP.NET web forms programming more manageable?
In the simplest case, I’d like to hear something like “In the past, I’ve implemented MVC” or any sort of presenter/controller-view style pattern or – at the least – “I’ve created a custom base class which inherits Page”, to show that the developer won’t be inclined to just throw a bunch of code in the codebehind and call it a day. One common answer is some variation of “I use an N-tier approach”, but I find this answer to be insufficient since an N-tier approach doesn’t mean much in terms of ensuring that your UI code is clean and well organized. Developers who mostly think of ASP.NET as drag-drop-fill in code will never be able to give any sort of satisfactory answer to this question.
[.NET] How many major versions of the .NET runtime have there been?
Okay, this one is kind of a “gotcha” question, I admit, but it is relevant for a couple of reasons. Developers who follow up on blogs and stay current will undoubtedly know that there is a new version of the runtime shipping with the next release of VS/.NET. Developers who have worked extensively with ASP.NET will also know that in IIS, you can only select from 1.x or 2.x versions of the runtime. I don’t think anyone has gotten this one right yet, even though I put a particular emphasis on “runtime” when reading the question.
[.NET] What access modifier does Microsoft recommend for constructors on abstract classes?
What I’m hoping for is to one day hear: “Well, according to Framework Design Guidelines…” (or something equivalent). The goal of the question is to see if a candidate understands some of the nuances of API and framework design, especially important for senior developer roles. There are other questions along this vein, one of my other favorites is…
[.NET] What does the following code statement imply?
Again, the goal is to see how well a candidate understands the implications of their design decisions and some basic C#. I won’t give up on a candidate if they get it wrong; I try to coax them the correct conclusion, but few candidates can right the course once they make up their mind on this one.
If they bring up ReadOnlyCollection, they get bonus points.
[.NET] Can you expose abstract classes in an ASMX or WCF service contract?
This question can, answered correctly, indicate an above average level of understanding of .NET web services but, more importantly, I think it offers a peek at whether a candidate embraces object oriented design principals. Candidates who have designed or worked with systems with rich object models will have undoubtedly encountered this problem (unless there were some specific interoperability scenarios which they had to design around).
[.NET] What is a custom attribute and how can you read one?
This question can reveal a lot about a candidate since there are some design scenarios that can be resolved pretty elegantly by taking advantage of custom attributes. In addition, a candidate that can answer this question necessarily has experience working with reflection. With regards to the second part, I’m not looking for specifics in terms of syntax and namespaces and classes, but rather a generic answer like “By using reflection” or something.
[.NET] What is the default() statement used for?
This is more of a textbook question, but candidates who have worked extensively with generics will be able to answer this with ease. Again, being able to answer this reveals a lot about a candidate, especially when considering one for a senior developer position since being able to leverage generics is a big part of writing a solid API or framework.
[.NET] Desribe your approach to exception handling.
Another open-ended question that allows a candidate to shine – or to flail. I’ve heard a wide range of responses to this one, but none that indicate that a developer has put any significant thought into one of the most important aspects of writing code on the .NET platform (especially framework level code). Most responses fall into the basic structural elements of exception handling (try-catch-finally), but I am looking forward to the day that someone gives a response which addresses it at a much higher level than that.
[GENERAL] What is object oriented programming?
I usually preface this by stating that I’m not looking for the bullet-list textbook definition of it; I’m looking for a candidate to provide a much deeper answer than that. There’s no “right” answer, but there are definitely bad answers or responses (I’ve heard some wacky ones) that reveal that a candidate hasn’t really thought deeply about just what it means to write good object oriented code. To me? Aside from the textbook stuff, OOP is about modeling complexity using structural interactions instead of straight-line, imperative logic.
This is just a small slice of my list, but they are perhaps the most important ones with regards to ASP.NET/C#, IMO. What do you think? Too abstract? Too high level? Too awesome 😉 ? Hopefully, you’ve found something useful in here, either as an interviewer or an interviewee.