big

NOOP.NL | The Creative Networker

100 Interview Questions for Software Developers

13/01/2009

These questions are simply starting points for interesting discussions in job interviews.

Interview Questions

Hiring smart software developers is not easy. If you’re not careful you might end up hiring a bunch of moronic mandrills, like I did last year. And you don’t want that. Trust me. Stand-up meetings are very hard to do in a tree.

The key is to ask challenging questions that enable you to distinguish the smart software developers from the moronic mandrills. And to help you with that, I decided to publish my private list of 100 interview questions for software developers.

This list covers most of the knowledge areas as defined by the Software Engineering Body of Knowledge. Of course, if you’re just looking for brilliant programmers, you may want to limit the topics to Construction, Algorithms, Data Structures and Testing. And if you’re looking for architects, you can just consider the questions under the headings Requirements, Functional Design and Technical Design.

But whatever you do, keep this in mind:
For most of the questions in this list there are no right and wrong answers
!

My questions are simply starting points for interesting discussions. For example: there is a question about reasons to use static methods vs. singletons. If this triggers your candidate to start a tirade againt both static methods and singletons, there’s a good chance you’re dealing with a smart software developer! But if the candidate can produce nothing more than a blank stare and this sound, then he might very well be a moronic mandrill. Likewise, there are many correct ways to find out whether a number is a power of 2. But if the candidate suggests using the mod operator, well… you know what I mean. (And if you don’t, no problem. Fancy a banana?)


Management 3.0Do you seek more advice for Software Developers, Team Leaders & Development Managers? 

Get the book!


Management 3.0

Leading Agile Developers, Developing Agile Leaders


Requirements

  1. Can you name a number of non-functional (or quality) requirements?
  2. What is your advice when a customer wants high performance, high usability and high security?
  3. Can you name a number of different techniques for specifying requirements? What works best in which case?
  4. What is requirements tracing? What is backward tracing vs. forward tracing?
  5. Which tools do you like to use for keeping track of requirements?
  6. How do you treat changing requirements? Are they good or bad? Why?
  7. How do you search and find requirements? What are possible sources?
  8. How do you prioritize requirements? Do you know different techniques?
  9. Can you name the responsibilities of the user, the customer and the developer in the requirements process?
  10. What do you do with requirements that are incomplete or incomprehensible?

Functional Design

  1. What are metaphors used for in functional design? Can you name some successful examples?
  2. How can you reduce the user’s perception of waiting when some functions take a lot of time?
  3. Which controls would you use when a user must select multiple items from a big list, in a minimal amount of space?
  4. Can you name different measures to guarantee correctness of data entry?
  5. Can you name different techniques for prototyping an application?
  6. Can you name examples of how an application can anticipate user behavior?
  7. Can you name different ways of designing access to a large and complex list of features?
  8. How would you design editing twenty fields for a list of 10 items? And editing 3 fields for a list of 1000 items?
  9. What is the problem of using different colors when highlighting pieces of a text?
  10. Can you name some limitations of a web environment vs. a Windows environment?

Technical Design

  1. What do low coupling and high cohesion mean? What does the principle of encapsulation mean?
  2. How do you manage conflicts in a web application when different people are editing the same data?
  3. Do you know about design patterns? Which design patterns have you used, and in what situations?
  4. Do you know what a stateless business layer is? Where do long-running transactions fit into that picture?
  5. What kinds of diagrams have you used in designing parts of an architecture, or a technical design?
  6. Can you name the different tiers and responsibilities in an N-tier architecture?
  7. Can you name different measures to guarantee correctness and robustness of data in an architecture?
  8. Can you name any differences between object-oriented design and component-based design?
  9. How would you model user authorization, user profiles and permissions in a database?
  10. How would you model the animal kingdom (with species and their behavior) as a class system?

Construction

  1. How do you make sure that your code can handle different kinds of error situations?
  2. Can you explain what Test-Driven Development is? Can you name some principles of Extreme Programming?
  3. What do you care about most when reviewing somebody else’s code?
  4. When do you use an abstract class and when do you use an interface?
  5. Apart from the IDE, which other favorite tools do you use that you think are essential to you?
  6. How do you make sure that your code is both safe and fast?
  7. When do you use polymorphism and when do you use delegates?
  8. When would you use a class with static members and when would you use a Singleton class?
  9. Can you name examples of anticipating changing requirements in your code?
  10. Can you describe the process you use for writing a piece of code, from requirements to delivery?

Algorithms

  1. How do you find out if a number is a power of 2? And how do you know if it is an odd number?
  2. How do you find the middle item in a linked list?
  3. How would you change the format of all the phone numbers in 10,000 static html web pages?
  4. Can you name an example of a recursive solution that you created?
  5. Which is faster: finding an item in a hashtable or in a sorted list?
  6. What is the last thing you learned about algorithms from a book, magazine or web site?
  7. How would you write a function to reverse a string? And can you do that without a temporary string?
  8. What type of language do you prefer for writing complex algorithms?
  9. In an array with integers between 1 and 1,000,000 one value is in the array twice. How do you determine which one?
  10. Do you know about the Traveling Salesman Problem?

Management 3.0Do you seek more advice for Software Developers, Team Leaders & Development Managers? 

Get the book!


Management 3.0

Leading Agile Developers, Developing Agile Leaders


Data Structures

  1. How would you implement the structure of the London underground in a computer’s memory?
  2. How would you store the value of a color in a database, as efficiently as possible?
  3. What is the difference between a queue and a stack?
  4. What is the difference between storing data on the heap vs. on the stack?
  5. How would you store a vector in N dimensions in a datatable?
  6. What type of language do you prefer for writing complex data structures?
  7. What is the number 21 in binary format? And in hex?
  8. What is the last thing you learned about data structures from a book, magazine or web site?
  9. How would you store the results of a soccer/football competition (with teams and scores) in an XML document?
  10. Can you name some different text file formats for storing unicode characters?

Testing

  1. Do you know what a regression test is? How do you verify that new changes have not broken existing features?
  2. How can you implement unit testing when there are dependencies between a business layer and a data layer?
  3. Which tools are essential to you for testing the quality of your code?
  4. What types of problems have you encountered most often in your products after deployment?
  5. Do you know what code coverage is? What types of code coverage are there?
  6. Do you know the difference between functional testing and exploratory testing? How would you test a web site?
  7. What is the difference between a test suite, a test case and a test plan? How would you organize testing?
  8. What kind of tests would you include for a smoke test of an ecommerce web site?
  9. What can you do reduce the chance that a customer finds things that he doesn’t like during acceptance testing?
  10. Can you tell me something that you have learned about testing and quality assurance in the last year?

Maintenance

  1. What kind of tools are important to you for monitoring a product during maintenance?
  2. What is important when updating a product that is in production and is being used?
  3. How do you find an error in a large file with code that you cannot step through?
  4. How can you make sure that changes in code will not affect any other parts of the product?
  5. How do you create technical documentation for your products?
  6. What measures have you taken to make your software products more easily maintainable?
  7. How can you debug a system in a production environment, while it is being used?
  8. Do you know what load balancing is? Can you name different types of load balancing?
  9. Can you name reasons why maintenance of software is the biggest/most expensive part of an application’s life cycle?
  10. What is the difference between re-engineering and reverse engineering?

Configuration Management

  1. Do you know what a baseline is in configuration management? How do you freeze an important moment in a project?
  2. Which items do you normally place under version control?
  3. How can you make sure that team members know who changed what in a software project?
  4. Do you know the differences between tags and branches? When do you use which?
  5. How would you manage changes to technical documentation, like the architecture of a product?
  6. Which tools do you need to manage the state of all digital information in a project? Which tools do you like best?
  7. How do you deal with changes that a customer wants in a released product?
  8. Are there differences in managing versions and releases?
  9. What is the difference between managing changes in text files vs. managing changes in binary files?
  10. How would you treat simultaneous development of multiple RfC’s or increments and maintenance issues?

Management 3.0Do you seek more advice for Software Developers, Team Leaders & Development Managers? 

Get the book!


Management 3.0

Leading Agile Developers, Developing Agile Leaders


Project Management

  1. How many of the three variables scope, time and cost can be fixed by the customer?
  2. Who should make estimates for the effort of a project? Who is allowed to set the deadline?
  3. Do you prefer minimization of the number of releases or minimization of the amount of work-in-progress?
  4. Which kind of diagrams do you use to track progress in a project?
  5. What is the difference between an iteration and an increment?
  6. Can you explain the practice of risk management? How should risks be managed?
  7. Do you prefer a work breakdown structure or a rolling wave planning?
  8. What do you need to be able to determine if a project is on time and within budget?
  9. Can you name some differences between DSDM, Prince2 and Scrum?
  10. How do you agree on scope and time with the customer, when the customer wants too much?

(image: Arran ET)


Wait! Don't stop reading now. I have some more interesting lists for you:

This article is written by on in Top Lists. Jurgen Appelo is at Happy Melly. Connect with Jurgen Appelo on .

This article was posted in:

This article was tagged with:


  • http://profile.typepad.com/philk10 philk

    Nice to see there were some questions about testing in the list. How do the candidates fare with these questions – good answers or a blank stare ?

  • dude

    These are questions for software _engineers_. Your average web app (or similar) developer will find much of this useless.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    Dude, not all categories are applicable to developers. That’s true.
    But if your developers have no knowledge of construction, algorithms, data structures and testing, then what are you paying them for? Gaming?

  • lowell

    @Dude.
    It’s actually the inverse, you should be finding most of it useful. Unless of course, your idea of development is installing Drupal or WordPress and then stringing in a bunch of plugins.
    Let me guess, PHP?

  • A Bridge

    @Dude
    Troll much?

  • Ozzy

    Definitely some good questions in there and definitely ones that would be pertinent whether you’re looking for a software engineer, developer, tester, whatever. But, there are also several which are a bit too subjective in my opinion; though I suppose the test is to see how they handle it, isn’t it.
    @lowell
    How annoyingly condescending. There is a lot of great PHP code out there, just as there is hack C++, Java, etc. code out there.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    @Ozzy: I don’t know which questions you are referring to, but yes, there’s probably some subjective stuff in there.
    Sometimes candidates give me answers that are completely different from what I had expected. The convincing ones get extra points for that.

  • http://spreadingfunkyness.com funkyboy

    I’d add some questions about design:
    - where is the best place to put a menu?
    - which is a good combination of colors?
    and the like.

  • Angelo

    Nice set of questions. Not technical, but definitely a good starting point to having an effective interview session.
    I have not yet found an interviewee who’d ask me questions of this sort.. Probably if I applied to Jurgen, he’d be asking me.
    =)

  • http://www.pmhut.com PM Hut

    The Project Management Questions are very interesting and some of them are advanced stuff.
    I did publish a long while ago a huge list of interview questions for Project Managers, you can check it here: http://www.pmhut.com/300-project-manager-interview-questions

  • http://BOS.opatan.com Nasser Ghanemzadeh

    -How they are supposed to answer the questions? written (paper or whiteboard) or spoken?
    -How many questions of each field do you usually ask?

  • http://www.noop.nl Jurgen Appelo

    @Nasser: I always do the questions verbally, but they can use a bit of paper (if they want).
    And usually I ask about 10 or 12 questions, from 3 or four categories. It depends on what kind of person we’re looking for.

  • http://www.laozizhu.com laozizhu

    当然,全部是我个人的答案,不代表别人。地址
    http://www.laozizhu.com/program.jsp?typeId=104
    或者到Google搜索“软件开发者面试百问答案” 也可以。
    ————————————————–
    老紫竹研究室,分享软件开发的快乐与收获

  • MoronicMandrill1

    I would like both a banana and an explanation of why using mod to identify odd/even number is bad.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    @MoronicMandrill1: I did not ask to identify odd/even numbers. I asked to identify powers of 2. That is different.
    For example: 100 is an even number, but it’s not a power of 2. 64 and 128 are powers of 2.

  • Isun

    Maybe by judging if(x == x&-x) is enough……

  • http://www.basilv.com/psd/ Basil Vandegriend

    If like me you are a software developer wondering where are the questions for developers to ask interviewers like Jurgen :) then check out my article 100 Interview Questions to Ask Employers.
    @Jurgen, this article was a great resource. Thanks! (And now I know how much effort goes into writing a 100-item list article!)

  • http://www.sblsoftware.com/ SBL Software Development

    The questions are very much helpful for the Software developers and utilisers
    “Regards,
    SBL – software solutions company
    http://www.sblsoftware.com

  • http://profile.typepad.com/Stellathomas Stellathomas

    Hiring smart software developers is not easy. If you’re not careful you might end up hiring a bunch of moronic mandrills, like I did last year. And you don’t want that. Trust me. Stand-up meetings are very hard to do in a tree. The key is to ask challenging questions that enable you to distinguish the smart software developers from the moronic mandrills. And to help you with that, I decided to publish my private list of 100 interview questions for software developers.
    ——————–
    Stellathomas
    Cv interview questions

  • http://bloginblock.com flattener

    It seems that “Software Developer” has become synonym for the “Web Application Software Developer”. Software used to be more then just web application software. But since we are descending rapidly into idiocracy (see this movie: http://www.imdb.com/title/tt0387808/) very soon even these interview questions will be too much to handle. I guess everything is relative. Oh I forgot to tell you that before web there was nothing: no software, no hardware, no internet, and only after web has appeared from singularity software was invented.

  • BG

    these questions suck – they are too open-ended

  • BG

    if someone were to ask me these questions during an interview, i’d leave

  • BF

    I like these open ended questions as they will open the door for a discussion. I hate interviews that stick with a script. The interviews that start with some open ended questions that cause the interviewee to think are best!

  • RobbyeRob

    thanks for the blog, even for the humorous interaction during the comments…

  • Jane

    Interesting… though a lot of those questions seem to boil down to “do you know the meaning I ascribe to ?”, and quite a few make assumptions about the language in use. “When would you use a class with static members and when would you use a Singleton class?” is a difficult question if you’re using Cold Fusion and SQL, with added Javascript.

  • http://www.x.com xx

    Wow – an “I’m smarter then you are” interview. What are you so insecure about Jurgen? No wonder you have problems hiring the right people. Who would want to work with you?

  • http://www.myspace.com/tridestilados code monkey 3rd world

    Why such stupid managers make our code monkey lifes so painful?
    Think about it…
    Beijo na bunda de todos voces!!!!
    code Monkey 3rd world

  • Johnny

    “…like I did last year…”
    This statement kind-of invalidates the value of your questions. Unless you developed them after the “moronic mandrills” incident.

  • Brent Singleton

    “If you’re not careful you might end up hiring a bunch of moronic mandrills, like I did last year. And you don’t want that. Trust me. Stand-up meetings are very hard to do in a tree.”
    Responsible for hiring not one (1), but a ‘bunch’; in a single year. Hum…
    Perhaps a case of the old adage ‘takes one to know one’?
    Also, by implying the actual hiring said moronic mandrills, does that not also imply not being careful? Sounds like executive management material to me.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    Wow, there are quite a number of people seriously lacking some sense of humor.
    And guys, if you don’t like these questions, you’re free to publish your own!

  • Kaye

    A curious collection, but the fact that you have this list to share indicates to me that you had this or a similar list when you interviewed the “bunch of moronic mandrills” that you subsequently hired.
    The fact that you hired them does not speak highly of your interviewing methodology, your ability to evaluate answers during an interview, or your ability to evaluate people during an interview.
    Assuming that the “bunch of moronic mandrills” have been terminated, perhaps you should consider terminating the interviewer as well.
    Just some food for thought.

  • Pradeep

    U are right Jurgen……
    Thanks for sharing this type of question to us…

  • BitFlipper

    Yeah, some peole classify VBA as programming… And I concure the “flattener”. There is more embedded software than there are for web or pc. Embedded software is never recognized as software, althought you must know hardware signals, timing critical etc to write a software and will cost millions if you had a single bug and almost impossible to update (unlike “click here to update new version”). What kindda of embedded software I am talking about, you drive one everyday… there are at least millions of code running your car and you are oblivous to it. You know why? cause it works….
    Good questions, and will use in interviews… I like the RM and CM

  • http://geekswithblogs.net/jcdickinson Jonathan Dickinson

    Great post, some really interesting ideas.
    Firstly: wasn’t XP a precursor to other modern management/development paradigms? From my research, XP has been largely regarded as poor idea (but I may have a biased subset of the information) – would it be a better idea to ask about the other paradigms?
    Secondly: would you hire a university student who got all of the questions ‘right’? Do you have any methods to separate talented programmers from book junkies? Just because a programmer knows what the difference between a queue and a stack is, doesn’t mean he would use them efficiently. Maybe some more ‘dark art’ questions would be helpful here; like “Explain why and when you would use a lock-free queue.”
    Lastly: are any of your questions geared toward finding developers that can adapt to new/changing technologies quickly? Maybe “What programming languages do you know, even if only a small amount?” If they rattle off a list that doesn’t consist of any ‘modern’ languages: like C#, Groovy, Ruby or Python you can be pretty sure that when changes happen they will be far behind.

  • http://geekswithblogs.net/jcdickinson Jonathan Dickinson

    You hit the nail on the head! Honestly!

  • http://profile.typepad.com/6p01127978cdf328a4 lordsdg

    Algorithms
    1. How do you find out if a number is a power of 2? And how do you know if it is an odd number?
    ———————————————————-
    Answer : (Using Java)
    —-
    package algorithmpractice;
    public class Main {
    public boolean isSqareRootOfTwo(int arg) {
    int mod = 0;
    boolean status = true;
    if ((arg % 2) != 0) {
    System.out.println(“The Supplied number is An Odd Number Don’t Proceed Further”);
    return false;
    } else {
    do {
    System.out.println(“arg : ” + arg);
    mod = arg % 2;
    System.out.println(“mod : ” + mod);
    if (mod != 0) {
    status = false;
    break;
    }
    arg = arg / 2;
    } while (arg > 1); //Breaks out as soon as the Mod becomes non zero
    }
    return status;
    }
    public static void main(String[] args) {
    Main m = new Main();
    boolean check = m.isSqareRootOfTwo(100);
    System.out.println((check) ? “The Argument is a Sqare of Two” : “The Argument is Not a Square of Two”);
    }
    }
    ——————————————–
    ** What do you think about this Jurgen Appelo
    will you hire me If I gave you this answer ?

  • http://geekswithblogs.net/jcdickinson Jonathan Dickinson

    Great twist!

  • http://geekswithblogs.net/jcdickinson Jonathan Dickinson

    Wrong. You get the bits inside the number, if one, and only one, is ‘true’ you have a perfect square.
    C#:
    static bool IsPerfectSquare(int test)
    {
    int x = 1;
    bool isPerfectSquare = false;
    while (x <= test)
    {
    if ((test & x) == x)
    {
    if (isPerfectSquare)
    return false;
    else
    isPerfectSquare = true;
    }
    // Mult x by 2.
    x = checked(x << 1);
    }
    return isPerfectSquare;
    }
    Furthermore, for fixed-length primitives (Int16, Int32, Int64) a LUT or HashTable may be faster than a procedural approach.

  • http://profile.typepad.com/6p01127978cdf328a4 lordsdg

    yes but this proves that we can also do it using the % operator. But your approach is more thorough.Thanks for the snippet. :-)

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    @Kaye, @Brent, @Johnny: I made this list of questions half a year ago. Why do you all assume that I used these questions when I hired the so-called ‘moronic mandrills’? That was more than one year ago.
    You are all seriously lacking in logical thinking. And would therefore not qualify when you applied for a job with me.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    Why do you interpret this as a “smarter than you are” interview? I *explicitly* wrote that there are no implied good answers. Sometimes developers have far better answers than I could think of. And I love that. Those are the best interviews.
    Your comment sounds like you’re insecure yourself.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    @Jonathan: XP is the method with the best-know collection of good practices for developers. I would disagree that XP has been largely regarded as a poor idea.
    Yes I would like to hire a university student who got all questions right. But these questions are just one part of an interview. They also have to work on some case examples, and they will be interviewed by peers.
    And I agree with your last point. I wouldn’t hire someone who didn’t know anything about (some) newer technologies.

  • http://www.myspace.com/tridestilados code monkey 3rd world

    “Wow, there are quite a number of people seriously lacking some sense of humor.”
    It’s not the case. Your jokes aren’t funny at all, not to say bad taste.

  • cor412@hotmail.com

    Agreed. I have been a database and applications designer and programmer for over 25 years. Half of these question I barely understand. And I can only answer about half of the ones I do.
    Go find someone else to play your parlor games.
    Ken

  • http://blog.neatcode.com.br Alberto Chvaicer

    BG,
    If you don’t liked, just don’t use it. Simple.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    So? Did you also email the authors of the Design Patterns book to tell them their book doesn’t apply to you?
    Lots of people found this list useful (see other comments).
    Go find someone else to bother with your whining.

  • http://walxytech.com Kassim Adewale

    100 Interview Questions for Software Developers:
    In case of software development, I will advice you that if care is not taken, you will end up employing fresh graduates that can’t code, but can answer your questions, because most of these logical questions will still be fresh in their memory.
    Simple, let them show you their stuff, then give them code to write, being able to answer lot of these questions won’t write code for your company.
    If you want to talk, go to CNN, if you want to dramatize, go to Hollywood, if you want to develop app, then write codes, don’t talk or dramatize.
    If MS was doing these, they will be dead long ago!

  • http://www.australiaworks.com.au AustraliaWorks

    hi Jurgen! thanks for the article, and your questions, it was a great read! anyway this isnt exactly software specific, but if you have a moment please also check this list i compiled of the 50 most commonly asked interview questions, why they are asked, any hidden motives and exactly how to answer the questions!
    50 most common interview questions and answers

  • Christian Rattat

    Nice questions which many of them can be memorized easily. And memorizing is what most students cope with perfectly. Sure this is good to have some questions in the beginning. I prefer reducing topics and individually going into details. I’m not interested in memorized answers. I rather let applicants demonstrating how they solve a complex problem to see how they think and organize. This is where I see there most important abilities. If somebody asked me how to find out if a number is power of 2 my answer was “typing in this question in google and see the anser – and I would fire everybody who starts thinking about such a problem longer than 2 minutes”, that’s it. What does it help if somebody knows this but cannot even show you how Dijkstra’s algorithm works and you are a manufacturer of navigation systems? Or what does it help if somebody knows n-tier design, XP, test driven developmen, agile, and and and but he’s not able to tell you how to manage a database with 500 terabytes data and you are dealing with weather simulations?
    These questions might be good to filter out bunch of idiots who don’t prepare for an interview but it does not help you to see an expert for your certain business.

  • Anonymous

    Using mod is VERY slow. On a Core 2 processor, a single core can only do 1 integer division per 17 clock cycles, and it 80 cycles for a P4! By comparison, a Core 2 or Pentium 4 can do as many as 3 bitwise ands per core per clock. For integers, you only have to check if the lowest value bit is turned on, and most languages should have a bitwise and. In C++ the syntax would simply be “if( x & 1 )” as opposed to “if( x % 2)” for a mod statement.
    Given that they both have a constant speed for a set number type, it’s not the worst mistake in building the program. I took two programs that were O=72*N*M and rewrote it to one program that is O=M. My iterations weren’t as fast, but it still ran in half an hour instead of a day or more. The kicker is that the results of the old program weren’t even correct.

  • Jesse

    I should think most people who find this useful are people who have no idea about software development or are inflexible purists.
    It all depends on how frequently knowledge is used.
    For example alot of the requirements questions might be implemented once every 6 months when necessary and then only the components necessary for a project (Horses for courses) will be applied.
    I have been doing this for years and being called upon to perform numerous aspects of the development life-cycle. When i switch between tasks I will usually only brush up on what i need (or what i consider necessary for the project, while other aspects i might go years without requiring).
    if you want someone who can rattle these answers off like a trained seal then advertise for a university student who spends their days committing these concepts to memory. This is opposed to someone who knows how to follow a good methodology and apply logical development concepts.
    If you want to measure other aspects you would test a realistic scenario. For example with a developer you might hand them a specification and get them to implement a simple system (possibly before the interview). Then evaluate their code and approach possibly getting them to take you through their decisions in the interview

  • http://geshan.blogspot.com Geshan Manandhar

    Amazing set of questions you have got there. But if you could give a set of answers as well it would be of great help. Thank you for all these questions.

  • http://www.bigbg.com William gates

    I think you live in a fantasy world if you think anyone would pass all these sections. Good luck finding someone.

  • Jarod

    These questions are mostly nonsense and would do nothing to make a candidate feel welcomed. Most of the questions are akin to programming trivia rather than designed to check a candidate’s specific abilities. I find people who make lists of questions like these are simply trying to take advantage of a captive and submissive audience in order to feel superior to the candidate, thus attempting to establish dominance from the start of the working relationship.

  • LordSDG

    How about this one ?. Superb huh ?.
    -
    private boolean checkIfSqareOfTwo(int num) {
    return (num>0)? (num & (num-1))==0 :false;
    }
    - Now this is what I call a real software solution for a problem.

  • Flamingo

    I am hoping not to get these fooling games at the interviews. I hate it when they ask these questions and none is being used when we write softwares! These are only for people who like to intimidate others at the interviews. Give them a break, dude!

  • http://www.mytechinterviews.com Aswin

    Hey Guys,
    If you are looking for solutions to some of these problems and also many more interview questions for software developers, check out http://www.mytechinterviews.com.
    I agree that the questions posted here are not for all software developers but most of the questions are answerable and if it doesn’t apply to you, you can still read the answer and increase your knowledge
    Aswin

  • Dan

    x & 1 may be a faster way to test, but x % 2 is greatly clearer. And clarity is far more important than speed in the vast majority of tasks.

  • Dan

    Perfect square, power of two, what’s the difference anyway?
    In any case, this is linear time in the number of bits. There’s a better solution – one that’s logarithmic in the number of bits.

  • http://s2solutions.us/wordpress Seth Strong

    I think this is a sign of informally trained developers. Continued education in a professional manner will bring up many of these subjects. That being said, I don’t have the best answers memorized on this list. I think questions you don’t know are great places for you to show you have knowledge that you can extract new understanding from.
    All of those categories on the list are meaningful and if you don’t understand them, then there are likely gaps in your understanding of programming. That doesn’t make you a bad person. What the interviewer is looking for is evidence that you know what you’re talking about and it’s your job to supply the evidence. These aren’t bad questions.

  • G

    I guess I won’t be hiring you, then. I expect a candidate with a rigorous understanding of his/her craft, not someone who gets by with simply what they need to know. That kind of thing is fine until something important or disastrous comes into play. I have seen those types of devs fall to pieces all too easily. Nice questions mate – very useful. Thank you.

  • Ali

    Any one wanna share Answers of below Questions ?

  • Khurram Sahahzad

    thanks
    these are really useful and excellent for interview as
    well as for test but now i would like to get answers of these
    above questions please help me

  • can

    Hi
    The questions are very useful but it would be goog to learn the correct answers.
    how can I find the answers of those questions?
    Thanks alot.

  • oldmanklc

    So how many of these questions would you expect someone to get right? Do you expect different results for a “junior” position vs. a “senior software engineer?”
    I know I can answer some of these off the top of my head. The traveling salesman problem… yeah, I’ve “heard of it” but I honestly had to look it up to remember what it was.

  • http://none.com personal

    u r a nerd

  • http://www.youtube.com Richard

    It so hard

  • Massimo Brillante

    I think that you are a moronic mandrill yourself… I am very sure that you do not know how to answer these questions.. from what source did you copy it… a smart developer is the person that although does not know the solution for the given problem is smart enough to know how to find it without re-inventng the wheel… is not your knowledge that count but how good you are in finding information..
    take a banana yourself chimp…

  • martin

    I’m a 16 year veteran of the Games industry. I am very impressed with this list. I have found interviewing clients over the years the best is to give them this kind of list, but let them chose the questions to ask. No one should ever be rejected by not knowing a cool trick, or being unlucky in the questions asked. Interview them to find out what they know, and what they bring to the table, not what you know. But basic questions about dev, source control, etc.. are quite important.

  • http://www.it-malaysia.com Mark Vedel

    I know that you write “For most of the questions in this list there are no right and wrong answers!”, but do you or has anyone made a document that describes what would be good and less good responses. I would be very interested to know.

  • Rivald

    Sample answer for all above question pls..Jurgen appelo u are the best :)

  • http://softwareinterviewq.blogspot.com/ bipin

    hi,
    grt stuff

  • http://profile.typepad.com/csprestoninc CSPrestonInc

    This is a great list of questions to judge basic technical knowledge. This is only a small fraction of the larger interview process to ensure you get quality candidates on board. I actually put together a blog outlining interview strategies:
    http://www.customsoftwarebypreston.com/software-developer-interview
    Thanks,
    Brett

  • davyplan

    A lot of these questions are very usefull though I think great care should be taken deciding which questions to use, as other have said not all of them will apply.
    I think it’s also very important to understand the difference between ability/skills and academic discussion. There must be loads of developers for example that may not know or use the term regression testing but they all do it. So to continue that as a simple example of a test of ability lets take two candidates.
    Candidate 1 has studied development at university and studied various principles of regression testing and can quote verbatim known articles etc.
    Candidate 2 is self taught, has learned through experience or otherwise the issues involved in testing and re-testing after software changes and perhaps developed their own methods of handling these issues. But mention the word regression and they may not have a clue what you are talking about.
    Which is the better candidate??
    A good list but to be used with caution.
    Thanks
    Davyplan

  • Ziad

    These are all very good questions. It might not be applicable to people that are not software engineers that do front end web development. People that understand create all the “magic” that other developers programming in high level languages depend on to do their work.
    When interviewing at any big software company expect questions like this. I have interviewed at lots of very big companies (google, microsoft, adobe, etc) and all they ask are algorithm questions. They are very much harder than these though :)

  • http://izlooite.blogspot.com KMan

    Though, its late, or probably very late; its never too late, does it? (0:
    Checkout: Top 10 answers to top 10 Project Management questions that a senior software developer must know
    http://izlooite.blogspot.com/2011/02/top-10-answers-to-top-10-project.html

  • rohan singh

    these que are really goooooooood for soft engering

  • Austen

    Nice questions.
    Helped me prepare for my interview tomorrow. My first real development job since school.
    I just feel the author was somewhat a bully. Don’t like his attitude in presenting the questions. Got me intimidated until I went through the questions and found I could have a go at most of them.
    Thanks anyway.

  • http://www.cygnismedia.com/web-application/ Web Application Developer

    Thanks for these questioner share thank you so much :)

  • Masinde Andrew

    When i show you my systems, you will run out of questions.

  • Matt

    Lol PHP sucks!!!!

  • sukriti

    vry gud collctn ………
    suprlikd…..
    sukriti

  • miles

    These questions are overwhelming if asked on the fly. There are always going to be people who remember the rote answer for each from college, though not always are they the the best problem solvers you can find. If you’re a software engineer depending on the company you are in you may slowly move away from different aspects, requirements gathering as an example may fall on another group and you may get the dear in headlights when confronted with this long lost trivia question. If you get a problem solver who also answers every question to your liking you may have hit the jackpot but you also may have spent overly long passing over candidates that could have done a more than satisfactory job. I’d like to see an answer key based on these questions of what the acceptable answers are. Maybe in a few years i’ll be able to rattle off each answer perfectly, but I expect the specific answers to slowly fade over time. Time will tell, worst case I will just brush off my textbooks and prepare for the onslaught of jeopardy questions that most interviews entail….

  • Sergey

    Thanks a lot! Very interesting questions.
    However, the question with power of 2 is a bit vague and can be hacked very easily:
    Q: “How do you find out if a number is a power of 2?”
    A: Any number > 0 can be represented as a power of 2 :)
    For example, 3 = 2 ^ log2(3); 0.5 = 2 ^ log2(0.5)

  • DenverDeveloper

    We all hate questions we can’t answer. I have been a Developer (web, desktop, middleware and database) for 15 years. I can’t answer all of them. I think this is a good exercise BUT, some idiots who just know theory with a lot of certs might ace tests like these. That’s always a problem though…
    When I hire I try to look at good character, attitude, quick learner and prior real experience. These aren’t bad questions but I would take the results with a grain of salt.

  • Paul Moore

    If I was asked how to implement a linked list, I think I would walk out of the interview. What relevance has this to implementing robust, well-commented, tested software? STL anybody?

  • Anicho

    I have been a web develoepr for 3 years now and I know most of this stuff to get to the top you gotta quite simple just know.

  • http://www.devonjames.com Colleen Aylward

    Love this comment… :)

  • http://profile.typepad.com/svetlinnakov Svetlin Nakov

    Nice job. Really good list of interview questions for software engineers. One thing I think can also be added is a set of directions how to prepare for the interview, how to research the company, the position, etc. This resource might be interesting: http://www.nakov.com/blog/2011/09/29/guidelines-for-successfully-passing-a-software-engineering-job-interview/. This presentation explains the basics of interview passing in a software development company

  • http://www.aremconsultants.com Lyle

    As far as I remember, there is a Dutch proverb which says that if you get off to a good start on a task, you feel like you’ve completed half the work already. Your list is a useful starting point and I’m glad you compiled it… if you’ll excuse the pun ;-)
    Lyle

  • Iftach

    A very good article. As you said, the key point is to start a discussion using your questions.
    Thank you for sharing.

  • http://www.extron.com Mike S

    Anyone who has been in the business for more than a few years has encountered many of these problems in one form or another. If you don’t remember what has worked and what hasn’t then I’ll pass on your application and go on to the next. I don’t care about getting syntax perfect or knowing spelling of library methods, but you need to be able to speak intelligently about these concepts.
    At my office, I don’t get all day to give a candidate a complex “real world” problem and grade his answers. I can get 90% of my answers from asking canned questions on select topics… like these.

  • V

    These are great questions. I have been a software developer for 2 years now and I understand and can answer most of them. Granted, I work in a very small company so I literally do or have done almost everything on the list at some point. These are great questions to weed out the people who literally sit and write controllers for 25 years and know nothing else about software dev.

  • Bobman

    I found this list very useful for interviewing candidates. If I was interviewing, I would find this list doubly-useful; they would allow me to brush up on answers that would come up in an interview.
    For those that complain, “I don’t know the answers to these questions and don’t need to”, I’d have to say, “then you won’t make a good showing in an interview, now will you?”

  • http://www.customsoftwarebypreston.com Brett Miller

    This is a great list of questions to initiate intelligent discussion around software development…
    But it’s only a small fraction of the larger interview process to ensure you get quality candidates on board. I actually put together a blog outlining interview strategies:
    http://www.customsoftwarebypreston.com/software-developer-interview
    Thanks,
    Brett

  • http://www.archipax.com Edward Buatois

    I love this list. Other people left great comments – ditto.

  • SeniorSoftwareDeveloper

    Without giving the answers, how do you expect hiring managers to know how an interviewee did? LOL

  • Jim C.

    Hiring smart developers is not easy because senior developers are often great developers with no teaching skills at all and no desire to learn how to teach or mentor. THIS IS NOT THEIR FAULT. This is because organizational reward systems reward production output but not much of anything else. Consequently little motivation to do anything else. This has been my experience, in any case.

  • Jim C.

    Seriously, not even a pat on the back is given to these guys. If they come up with a bad aft training program for bringing newbs up to speed at Mach 5 they will instead be in deep excrement for not producing code like a maniac during that dev cycle. On occasions when I’ve seen places where they did try to have real training and/or mentoring, it’s not been done in any kind of organized and it’s informal enough that it can easily be dismissed when inconvenient.

  • George

    You’re saying that these are just starting points for interesting discussions and that they help to distinguish smart software developers…
    Well, regarding algorithms and data structures, the questions are too simple to do that. I think any college student who had his course on algorithms and data structures would easily answer those.

  • test

    People always like to raise questions not the answers
    somebody try to answer.
    I bet the people who raise the questions might not know the answer.

  • http://interviewquestionsandanswers.biz/ tua022012

    Hi,
    Thanks very much for this comment. It help me to think about my ideals.
    Tks again and pls keep posting.

  • http://google.com mansoorsamoo@hotmail.com

    i am a poor boy and i really like computer studies and computer courses so you people please help me can you teach me online through internet please contact me at mansoor.samoo7@gmail.com

  • http://gcgiglobal.com John Johnson

    I’m a Project Manager for multiple web development projects and I always have a hard time when interviewing new team members. I found the list useful as a staring point. For each interview I would select some questions from your list depending on the job requirements. If I was looking for a QA expert or a .net coder the questions would vary. I don’t think anyone could answer all these questions 100%, each software programmer is specialized in different areas, language and aspects of the project life cycle. I would never expect one sole employee to be able to perform all parts of the cycle on their own. Having that said. Thank you for the list.

  • Craig

    I have been a database and applications designer and programmer for… less than 25 but more than 15 years. :) If you maintain the new hotness for long enough, it becomes a legacy app using 10 year old methodologies before you know it. I could answer a bunch of these questions but a lot of them gave me new things to Google, too. Ken, if I were you I’d Google the stuff you didn’t understand rather than post snide comments. The worst that happens is the young whippersnappers teach you how to snap whippers.

  • Dr. Anonymous

    I had some experience in interviewing software engineering using theoretical questions and got really bad results…
    Some of them were really good … in theory.. and only in theory…
    I think the questions must include coding and solving real problems, showing abilities to design (not just listing names of existing design patterns) and to analyze…

  • mohsen bolhassani

    I found these questions extremely important in the software architecture and design. It would be great to know the answers from your perspective. How can I get the answers?

  • Steve

    That’s exactly why you can’t answer these questions. Cause the things you studied were 25 years old. LOL.
    And after 25 years you’re still programming? I programmed for 4 years and now I have people doing that for me because I don’t mind admitting that those new grads are sharper than me. Except it takes 50k to hire them and they 10 times more for me.

  • Kelly

    No wonder you hired a bunch of “moronic mandrills”, you seem to be a natural leader of the pack. That comment is truly offensive and I can’t help wonder how your “tribe” felt about reading it. You are a perfect example of a workplace bully.

  • Student

    As a student, I can’t say I know the answer to all of these questions. As far as I can tell they seem to be quite dependant on experience. I can’t see using some of these solutions in real-world situations. Oh well, if this is what the industry demands, so be it. Time to hit the books!

  • kelechiuche84@yahoo.co.uk

    from my own point of view this is really helpful. i just graduated from electronic engineering and am going for an interview for a software developer job. this question as kept me awake all week and honestly i have learned more stuff than i knew about software considering my background as an electronic engineer. honestly i think it is a great compilation.

  • programmmer

    Screw this. Dont work for people like this. lot of things are unneccessary. and WAST OF TIME-

  • Joe Siczpak

    Exactly.
    I recently had an interview where the Software Dev Mgr had already decided to hire me, but the lisping technical bully asked an esoteric question and expected me to jump to the board and code it up perfectly… while both he and his cohort corrected every line.
    Then they dinged me on “not knowing enough about agile”, when the job description had said nothing about it, and the manager had already told me that they were merely “working toward agile”.

  • Saad

    These questions are very useful ,, how could i get the Answers ?
    BR,,

  • http://www.cinealerts.com Krishna

    Very Nice Article. It helps to improve my recruiting quality.

  • prince peach

    Ook!
    Well, I just found out that I know nothing about requirements and functional design. Need to code myself a personal project with these two topix in mind. Thanks George, erm, Jurgen, for compiling this list.
    On the other hand, I have five fingers, and also, I was not that bad in answering the other questions. That just made my day.
    Ook!

  • Brian

    I do agree that the above list is fairly comprehensive, and is certainly useful in ascertaining an individuals overall ability to communicate their level of skill. However, it’s been my experience that not all people interview well, and their inability to adequately answer those questions isn’t necessarily a determinate of their actual ability to develop software.
    A lack of knowledge and/or the proper way of doing something doesn’t make someone a moronic mandrill. For the author, and those who agree, I would question your ability to properly lead. As leaders it’s not our job to belittle or impugn those trusted in our charge, but rather to provide them with that which they need to excel. The contempt that you show to those with less knowledge than yourself ultimately is a reflection on your own ignorance with regards to proper leadership. Because you’ve never had anyone show you a better way does that say the same about you with regards to leadership?
    Something to think about before you publicly display your frustrations.

  • Hope

    I’ve been a software developer for well over 20 years and the bulk of these questions seem geared toward understanding corporate policy rather than being able to take a destination objective and then determining if they can construct the path of software logic required to reach it. If you asked me these questions, I would probably have a lot of blank stares because you’d be speaking a foreign language to me until you rephrased them. All the employers I’ve worked for over the years would tell you that you would be a fool if you didn’t hire me but the way you’ve structured these questions, you would end up not hiring me.
    A lot of these questions are dangerous to have on the Internet because HR departments will find them and then use them without vetting them with relevancy in mind for their business.
    Here’s how you find a really good programmer: Someone who grew up as a kid around computers and developing software, taught themselves what they know, got berated by their peers at school for being a nerd, but forged ahead and continued developing computer programs anyway knowing that their future lies ahead. Everything else follows naturally and most programmers of this nature won’t be able to answer half of your questions but they’ll be willing to learn if you’re willing to teach. This is something that can’t be taught and can’t really be learned either because it depends on so many factors that simply can’t be reproduced consistently. This sort of person is rare to come by.
    As a result, your questions are going to exclude the best and brightest. You’ll get a bunch of corporate drones, but if it works for you, then I guess that’s okay. If you want the best programmers, you’ll occasionally need to put aside these questions and ask about the person’s history – especially if they seem like the entrepreneurial type of person.

    • C. Bess

      I concur.

  • Joel

    mm… not convinced at all about how good of a hire I’d get from someone who can answer those questions properly.
    You were targeting software developers right? not just another who-move-my-cheese project manager…
    Remembering such high-level details on such broad scope is not useful at all to get things done in any shop I’ve been. That’s what books and the Internet are for…
    Hopefully, with such questions, you are only looking for excuses to engage a smart candidate. I’d pick one or two out of the lot and move on to more technical stuff. You know, like what developers do with most of their days…

  • Bill Asch

    Nice list, thanks! One thing that might be a neat addition (all these years later) would be some questions around collaboration. I’ve read a number of things on your blog and it’s clear you get Agile [and embrace it]. Collaboration within a team is so key to what a Developer does that it’s almost equal to the above stuff. That being said, I appreciate how much time it took you to put this together and MY wish list is not YOUR problem. ;-)

  • http://www.TechProceed.com Snehal Masne

    Thank you so much Jugen for these efforts. This would certainly help us. Keep it up! Bless you :-)

  • Osman Dagdelen

    In Joe’s case, the symptom is nymphomania (not sex addiction!). In Von Trier’s case, the symptom is his gratuitous melancholia, his nihilism.http://youjizz.ws/

  • Serge

    I can’t answer properly most of those questions. Sometime because I don’t remember (no idea what use I had for recursion lately), sometime because I don’t feel it’s relevant (heap/stack… I don’t care to remember), sometime because I don’t get the wording, and sometime because I just don’t know. If you ask those question without providing some clues when stared blank, you’ll end up with people with great theoretical knowledge but you just might miss the ones who’ll make your day when they say “In theory you can’t, but I’ve found a trick.” instead of a blunt “Books said no!”.

  • randy miner

    “If you’re not careful you might end up hiring a bunch of moronic
    mandrills, like I did last year. ” Wow Jurgen, how arrogant this sounds. Before even considering a quest to hire “rockstar” software engineers, the first task must be to hire a “rockstar” manager to replace you. In my experience, there are very few “moronic mandrills” who make it beyond the first 3 years out of college before changing careers or… cough, cough… going into management. 99% of experienced software engineers out there are more than up the the task.