I'm putting together some practice interview questions for a friend who lost his job. I thought it'd be useful to crowd-source some questions from you, Dear Reader.
These questions should be more software design focused, less technical trivia like my previous two lists of interview questions:
- What Great .NET Developers Ought To Know (More .NET Interview Questions)
- ASP.NET Interview Questions (7 years ago, can you believe it?)
Here's what I have so far.
- What is SOLID?
- Why is the Single Responsibility Principle important?
- What is Inversion of Control? How does that relate to dependency injection?
- How does a 3 tier application differ from a 2 tier one?
- Why are interfaces important?
- What is the Repository pattern? The Factory Pattern? Why are patterns important?
- What are some examples of anti-patterns?
- Who are the Gang of Four? Why should you care?
- How do the MVP, MVC, and MVVM patterns relate? When are they appropriate?
- Explain the concept of Separation of Concerns and it's pros and cons.
- Name three primary attributes of object-oriented design. Describe what they mean and why they're important.
- Describe a pattern that is NOT the Factory Pattern? How is it used and when?
- You have just been put in charge of a legacy code project with maintainability problems. What kind of things would you look to improve to get the project on a stable footing?
- Show me a portfolio of all the applications you worked on, and tell me how you contributed to design them.
- What are some alternate ways to store data other than a relational database? Why would you do that, and what are the trade-offs?
- Explain the concept of convention over configuration, and talk about an example of convention over configuration you have seen in the wild.
- Explain the differences between stateless and stateful systems, and impacts of state on parallelism.
- Discuss the differences between Mocks and Stubs/Fakes and where you might use them (answers aren't that important here, just the discussion that would ensue).
- Discuss the concept of YAGNI and explain something you did recently that adhered to this practice.
- Explain what is meant by a sandbox, why you would use one, and identify examples of sandboxes in the wild.
- What's the difference between Locking and Lockless concurrency models?
- What kinds of problems can you hit with locking model? And a lockless model?
- What trade offs do you have for resource contention?
- How might a task-based model differ from a threaded model?
- What's the difference between asynchrony and concurrency?
- Are you still writing code? Do you love it?
- You've just been assigned to a project in a new technology how would you get started?
- How does the addition of Service Orientation change systems? When is it appropriate to use?
Your thoughts? I'll add good questions from the comments throughout the day.
© 2011 Scott Hanselman. All rights reserved.