Thursday, April 7, 2011

Interview Questions for Software Developers

Interviews are hard. You should not just aimlessly ask questions. You need to have a plan. You need to concentrate on these five areas: Personality fit, software engineering skills, specific technical requirements of the job, a passion for software development, and a history of getting jobs done.

  1. Questions to ask prospective software developers

    1. Personality Fit, Warm up and General Background
      1. Tell us a little bit about yourself.
      2. Why are you leaving your current job?
      3. What would you like to do?
      4. What do you like about your current/former job? What don't you like?
      5. How would you rate your current/former management?
      6. What motivates you?
      7. Would you like to be the team leader or team member?
      8. Tell me about a conflict at a previous job and how you resolved it.
      9. (Summary personality item: Think to yourself, "Would I want to spend four hours driving in a car with this person I am interviewing?")

    2. Software Engineering Skills
      1. What is Object Oriented Design? What are the benefits and drawbacks?
      2. What is the Agile software philosophy?
      3. What is the Lean software philosophy?
      4. Have you looked at "Domain Driven Design"?
      5. What are the benefits of Dependency Injection?
      6. Have you heard of the SOLID principles?
      7. What is the role of interfaces in design?
      8. What books have you read on software engineering that you thought were good?
      9. What are the really important aspects of software development?
      10. Tell me about your philosophy of database design. Database tools?
      11. What are important aspects of GUI design?
      12. What Object Relational Mapping tools have you used?
      13. Tell me about the Model-View-Controller pattern and why it's important?
      14. What is Test Driven Development and Design? Why is it important?
      15. What is the difference between a mock and a stub?
      16. Describe some of the software patterns you have used?
      17. Have you heard the term YAGNI? What does it mean?
      18. How do you design scalable applications?
      19. What is continuous integration?
      20. What is the REST architecture pattern?
      21. How would you design a solution to the following problem....
      22. What metrics, like cyclomatic complexity, do you think are important to track in code?
    3. Specific Technical Requirements
      1. General
        1. What software have you used for bug tracking and version control?
        2. What do you use for unit testing? GUI testing?
        3. Describe an interesting class you have designed.
        4. Have you been doing code reviews? What was the format?
        5. When and how do you optimize code?
        6. Describe your favorite build environment.
      2. Technical Questions for Web Developers
        1. What is SQL injection?
        2. What is the difference between GET and POST in web forms? How do you decide which to use?
        3. Tell me about HTTP.
        4. What is Service Oriented Architecture? Advantages and Disadvantages?
        5. What JavaScript libraries have you used?
        6. What is the advantage of using CSS? What are some of the irritating limitations of CSS?
      3. Technical Questions for C# Developers
        1. What's the difference between public, private, protected and internal modifiers.
        2. What's the differnece between static and non-static methods?
        3. How have you used Reflection?

    4. Passion for Software Development
      1. What are some influential software books you've read lately?
      2. What are your favorite technical web sites and blogs?
      3. Are you doing any interesting personal web projects?
      4. What do you like about software?
    5. A History Of Getting Jobs Done
      1. Tell me about your last project.
      2. Tell me about your part in the release of some important software.

      Even if you are not going to hire the person, you should be kind and encouraging. The universe is a vast unpredictable place. You may meet them at a professional society event. You may be looking for a job one day and interviewing with this person trying to get a job at their company. Stranger things have happened.

  2. Questions to ask prospective employers
    1. What is your software process?
    2. Tell me about your version control.
    3. What is your build process?
    4. Do you do continuous integration?
    5. Tell me about your bug tracking system.
    6. How is unit testing done? How is system testing done?
    7. Tell me about your Quality Assurance.
    8. How many hours per week do people usually work?
    9. What motivates your employees?
    10. Why is there an opening?
    11. What are your distinct advantages in the marketplace?
    12. How much training per year do you offer?
    13. Do you have a Wiki to share developer knowledge?
  3. Questions to ask possible future coworkers at a prospective employer
    1. How many training courses did you go to last year?
    2. How many hours per week do people usually work? How many hours do you work?
    3. What is the best thing you like about about working here?
    4. What is the worst thing about about working here?
    5. Why did the last person leave?
  4. Salary Research Sites

    A Sample Resume in Word from my friend Martin at

  5. Recommended book for interviewees:
    Click to read reviews or buy Programming Interviews Exposed: Secrets to Landing Your Next Job
    by John Mongan

No comments:

Post a Comment