In the last post I outlined our criteria for evaluating programmers and architects, and how surprisingly difficult it is to find good candidates. Since the telecom and .com bubble burst in 2000 it appears many top notch people are choosing non-IT career paths. Below I outline the base set of questions that we ask in an interview. We cater interviews individually for each candidate so we can best understand their ability. While we are trying to fill a specific position we have a large enough IT staff to modify positions around candidate’s talents.
Also, if you ask the same question over and over again recruiters pick up on that and prepare candidates for specific questions. So we only use the below list as a reference point. Most of the questions we ask are not on the list below, but they may be related. When listening to the candidate it is not good to be thinking of the next question. We alleviate this by having two architects in every face-to-face interview which is based more on problem solving / case study style questions than do you know / can you explain style questions. In the one-on-one phone screens we do this list is helpful as a reference point to sharpen our focus on listening.
As a company focused on building web applications using Microsoft’s .Net / SQL Server platform are questions of course are focused on those domain areas.
Why be an Architect or Programmer?
- Do you understand what the position is that you are interviewing for? Or what type of position are you looking for?
- What about this position do you find most appealing and what if anything concerns you?
- Right now what would be your ideal job?
- What are your strengths and weaknesses?
Communication
- When a co-worker is wrong about a work issue, what is the best way to discuss the issue with him or her?
- Describe a decision you made that was unpopular and how you handled implementing it?
- Tell me about a situation where you worked effectively under pressure?
- What makes someone a good programmer?
Technical Questions
- We often ask the candidate what technology the feel most comfortable with and start with that technology or ask them to walk through a brief overview of their recent experience and begin with a technology the indicated they have used extensively
- If the interviewee gets stuck on a question we often ask them how they would go about figuring this out (what steps would you take?).
All Programmers
- Describe the difference between a thread and a process? Process vs AppDomain?
- What is a Windows Service and how does its lifecycle differ from a “standard” EXE?
- How many processes can listen on a single TCP/IP port and why?
Component Development
COM
- What is the purpose of COM? Why was it needed and what problems did it solve?
- Describe the .Net architecture?
- What does regasm do? Difference between regsvr32?
- What is DCOM? How do you create a DCOM object in VB6? How do you create a DCOM object in .Net?
- Explain Object Context.
- What are types of compatibility are available in VB6?
- Does VB6 support multiple inheritance? What about .Net?
.Net Framework
- Explain the use of virtual, sealed, override, and abstract
- How does the garbage collector in the .NET CLR manage object lifetime? What is the difference between Finalize() and Dispose()?
- How does impersonation work?
-
What is the difference between
- Delegates and events?
- Class and structure?
- Protected and internal
- Shadowing and override
- ArrayList and Hashtable
- Optimistic and pessimistic locking
- How do you enable and disable connection pooling?
- How do you implement Database Transaction Coordinator in .Net?
-
Describe an example where you used
- A struct?
- Overloaded a constructor?
- Overloaded a method?
ASP.Net Development
High-level
- What ways can you get HTML content from a website at runtime?
- What happens when an ASPX page is requested from a browser? What about ASMX?
- How do you measure performance of an ASP.Net application?
- What code should be placed in the code behind? What should not?
- What different ways can you test an ASP.Net application?
- What are some of the best ways to optimize an ASP.Net application
- What is the MVC pattern?
- When should you use a web service and when should you use the GAC?
- Provide an example of a custom HttpHandler and a .Net implementation of an HttpHandler?
- Benefits and limitations of: Viewstate, Query Strings, Cookies, Hidden fields
Web Services & JavaScript
- In JavaScript how do you use xmlhttp posts?
- How do we do asynchronous processing using Ajax?
- What are the benefits and limitations of Ajax?
- How pass parameters to a web service from JavaScript?
- Explain what the Scriptmanager control does in Ajax?
- What is JSON? How does it compare to XML (advantages and disadvantages?)
- What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP? What is the difference between ASMX and WCF?
- How do you expose a web service to 3rd party companies?
- What are the steps to consume a web service exposed over the internet by another company?
- How do you secure a web service?
Events
- What are events? Do they have return types?
- How do you connect multiple events to a single event handler in ASP.NET web pages?
- How do you determine which web server control raised an event?
- How do you dynamically bind event handlers at run-time in ASP.NET web pages?
SQL Server Development
- Explain normalization? What type of normalization is best for what type of application?
- What is fill factor?
- What are the different transaction levels?
- What are the different types of locks? What is lock escalation? What are some of the locking hints?
- How do you determine when to add or remove a non-clustered index?
- How do you optimize a stored procedure?
- When have you used a temporary table in a stored procedure?
- If I execute an insert statement on a table with a trigger on it and the trigger fails, what happens to my insert statement?
- Provide an example of when you would decide to write a user defined function in T-SQL?
- Describe a good time to use a WHILE loop.
-
Describe a good level of normalization in a transactional database.
- We are looking for an explanation, not an answer like “3rd normal form” and clarify the question if necessary
- Can you describe a time when you needed to use a transaction?
Other
Here we let the candidate pick from the below choices and ask a few questions in that domain.
- SQL Reporting Services
- BizTalk
- SharePoint
- LDAP or Active Directory
- Windows Script Host & PowerShell
Architecture
- What new technology have you learned or used recently that allowed you to solve problems easier or differently?
- Good architecture is necessary to give programs enough structure to be able to grow large without collapsing into a puddle of confusion. What are some of the key tenets of application design?
-
Describe {interviewer selects from choices below} architecture, when is it useful, and why? Or have the candidate critique one of these types of architecture.
- Event Driven
- Object Oriented
- Services Oriented
- What is the difference between SOA and OO?
- What are the most important aspects of object oriented programming?
-
What technology are you most interested in?
- What are you doing with it?
- What problems will it help better solve
- What is scaffolding
- What is object-relational mapping
- What code should not be placed inside an object?
- What is the difference between a framework, an application, a platform, , and a service?
-
What is UML? What are advantages of using UML?
- How many types of diagrams are there in UML?
- What is the sequence of UML diagrams in a project?
- Give a brief explanation of all the Elements in activity diagrams?
- Describe the various components in a sequence diagram?
- Explain the different elements of a Use Case?
- Why are design patterns useful? What are the three categories of design patterns?
Case Study Questions
TBD, we typically craft these shortly before the interview; often based on recent challenges we have solved
-
It isn’t necessarily critical that they find the optimal solution, it is critical that they
- Show good listening skills
- Ask good follow-up questions
- Demonstrate good problem solving skills
Problem Solving
-
Describe one of the most difficult problems you have had to solve and how you solved it?
- Looking back how would you handle it now?
- What steps do perform when learning a new technology? What was the last technology you learned (and why)?
- Determine if is a quick thinker –> ask a couple off the wall questions
Motivation
-
What are you going to do over the next 6 months to make yourself a better programmer?
- Is their answer quantifiable / measurable?
- Some example answers: read good code (find how?), read books, follow blog(s), contribute to open source project, etc
- Give an example of a goal you reached and tell me how you achieved it?
- What is it that most motivates you?
- What accomplishment are you most proud of?
- Why did you leave your last job?
- What are you looking for at this point in your career and why?
- Where do you see yourself in five years?