Last Updated:.

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. Make sure candidate knows the requirements of the job, then ask, "Can you do this job?"
      10. (Summary personality item: Think to yourself, "If we hire this person, would I want to spend four hours driving in a car with them?")
    2. Software Engineering Skills
      1. What is Object Oriented Design (OOD)?

        Two answers here are good. This is a SOLID response from Michael Feathers.

        1. S – Single-Responsibility Principle
        2. O – Open-Closed Principle
        3. L – Liskov Substitution Principle
        4. I – Interface Segregation Principle
        5. D – Dependency Inversion Principle

        Classically, Object-Oriented philosophy was defined by three attributes:

        1. Message Passing - the same message passed to different objects can result in the objects doing object-specific functions. For example a "calculate_area" message sent to a rectangle and triangle use different formulas.
        2. Inheritance - objects receive fields and methods from parents.
        3. Encapsulation - objects and methods are hidden from the outside world and only accessed through public helper methods.
      2. What are the benefits and drawbacks of Object-Oriented Design (OOD)?
      3. What is the Agile software philosophy?
      4. What is the Lean software philosophy?
      5. Have you looked at "Domain Driven Design"?
      6. What are the benefits of Dependency Injection?
      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 (CI)?
      20. What is Continuous Delivery? (CD)
      21. What is the REST architecture pattern?
      22. How would you design a solution to the following problem....
      23. 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. How have you used branching? Branch by release or feature?
        3. What do you use for unit testing? GUI testing?
        4. Describe an interesting class you have designed.
        5. Have you been doing code reviews? What was the format?
        6. When and how do you optimize code?
        7. 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. What is the difference between PUT, PATCH and POST? How do you decide which to use?
        4. Tell me about HTTP. What are the seven HTTP verbs?
        5. What happens behind the scenes when you enter a URL in the browser?
        6. What is Service Oriented Architecture? Advantages and Disadvantages?
        7. What JavaScript libraries have you used?
        8. What are some of the irritating limitations of CSS?
      3. Very Basic Questions about SQL for Developers
        1. What is the difference between an inner and outer join?
        2. What's the difference between a clustered index and non-cluster index?
        3. What are some aggregate functions?
        4. What does it mean to "normalize" a database?
        5. What is a view and when should you use one?
      4. Technical Questions for C# Developers
        1. What's the difference between public, private, protected, internal and protected internal modifiers.
        2. What's the difference between static and non-static methods?
        3. What is Serializing?
        4. What's the difference between struct and a class?
        5. Difference between an abstract object and an interface?
        6. Tell me about threading.
        7. What LINQ operators have you used?
      5. Common Whiteboard Exercises
        1. Sort an array of ints. Sort an array of T.
        2. Reverse a string programmatically. Now do it recursively.
        3. Reverse a singularly and/or doubly linked list.
        4. Print the Fibonacci numbers from 1 to n.
        5. Write a method to give the nth Fibonacci number recursively.
    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

    You want to be learning and moving ahead in your career. When looking at opportunities you need to find companies that are doing software right and so can boost your abilities. You need to look at these areas and make sure the future employer is doing a good job: Software Methodology (process ), Testing, Building and deploying, and personal fit.

    1. Software Process
      1. Which methodology do you use: Waterfall, Scrum, Kanban, XP, other?
      2. Do you have daily standups? retrospectives? How is the sprint start meeting run? How is estimating done?
      3. Peer programming?
      4. What tools to you use for issue tracking? Jira?
      5. Tell me about your version control. Branch by release, feature, personal branching?
      6. Tell me about your Quality Assurance.
      1. Testing
      2. Do you do Test Driven Development?
      3. What framework do you use for Unit testing?
      4. What do you use for a mocking framework?
      5. How do you measure code coverage and do you have standards for percentage?
    2. Build / Deploy
      1. What is your build process?
      2. What tools do you use for Continuous Integration?
      3. What tools for Continuous Delivery? How frequent are releases?
    3. General
      1. What version of C#/Java/Python are you on?
      2. Is the job mostly adding features to existing code, or new greenfield development?
      3. How many hours per week do people usually work? When was the last time you worked on the weekend?
      4. What motivates your employees?
      5. Why is there an opening?
      6. What are your distinct advantages in the marketplace?
      7. Is your company making money?

        It's always more fun to work at companies making lots of money.

      8. How do your encourage education in your people and how do developers knowledge?
  3. Hints for taking programming tests

    These days the interview process typically involves coding a small problem in a whiteboard environment like or through Skype. Here's my hints on taking the tests:

    1. Make sure you understand the problem first. Give sample input and output to make sure you comprehend the task.
    2. Talk, talk, talk. As you are thinking through different options on a solution, talk out loud about the things you are considering.
    3. Think about overflow and underflow conditions. For example, ask the problem presenter if the number of items may be greater than 2 billion, in which case you need to use 'long' instead of 'int'.
    4. When writing methods, be sure to check the validity of incoming arguments. Is an array null, or an incoming count variable negative?
    5. When doing recursion, make sure you include the trivial case.
  4. 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. On a level of 1 to 10, how stressful is it working here?
    4. What is the best thing you like about about working here?
    5. What is the worst thing about about working here?
    6. Why did the last person leave?
  5. Questions to ask references over the phone

    Start by describing the role "Pat" is expected to do in the new job.

    1. What was your professional relationship with Pat?
    2. How were their communication skills?
    3. What three words would describe Pat?
    4. Did you see any growth in them during this time?
    5. How did they work with other people?
    6. Did you ever see them resolve a conflict?
    7. How is their attention to detail?
    8. How did they react to negative feedback?
    9. Based on my earlier description, do you think Pat would do well in this job?
    10. Any other comments?
  6. Salary and Research Sites
  7. C# Interview Question Sites
  8. Recommended book for interviewees:
    Click to read reviews or buy Programming Interviews Exposed: Secrets to Landing Your Next Job
    by John Mongan
Go to Home page. Kindly report errors, typos, or misspellings here.