Interviewing Cheat Sheet

  • strict warning: Non-static method view::load() should not be called statically in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/views.module on line 906.
  • strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 744.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 607.
  • strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 607.
  • strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 159.
Leeland's picture

1. General Questions

  • Why do you want to work at our company?
  • What are you good at? Bad at? Enjoy? Dislike?
  • How do you handle stress?
  • What are your favorite books/magazines/web sites?
  • What are your favorite tools? For example, if you start a new job, what tools must you install immediately?
  • Tell me about the worst bug from hell (e.g. intermittent crashing program) you faced and how you solved it.
  • Describe in detail a recent project you developed that you are proud of.

2. Trivia Questions

Some people feel these are a waste of time. I still ask them because they are cheap to ask and help me judge the applicant's personality and cultural fit with my team. Certainly, I have been shocked at how many highly experienced developers cannot answer any of these questions!

  • What is a wiki?
  • What is a Design Pattern?
  • What is a Code Smell?
  • What are agile methodologies? (for example, Extreme Programming)
  • What is Test Driven Development (TDD)?
  • What is xUnit? (e.g. SUnit, JUnit, cppunit, NUnit, ...)
  • Have you heard of Subversion?

3. Auditions

DeMarco and Lister, in their classic Peopleware book, recommend holding Interview Auditions. In the audition, the candidate gives a fifteen minute presentation on some aspect of their past work to an audience consisting of all the applicant's future co-workers. This helps ensure new hires are a good cultural fit with the team. Moreover, allowing all team members a say in whether to hire or not helps build team spirit and cohesion.

4. Role Playing Questions

I've never asked any of these but am toying with doing so. The idea is to play out a scenario with the interviewee to see how he reacts in inter-personal relationships in various (e.g. stressful) scenarios. Has anybody tried doing this? How did it go?

5. Developer Questions

  • Give some tips for writing code that is: testable, supportable, portable, efficient, maintainable, thread-safe, reentrant, exception-safe, secure (choose one or more from the above list that are most relevant to your team).
  • Perl: When do you use foreach versus grep versus map?
  • Perl: What is the difference between my versus local versus our?
  • Perl: What are your favourite CPAN modules?
  • Perl: How do you do try/catch in Perl?
  • Perl: What is a closure?
  • C: Have you written your own hash table in C? Sketch out how you did it.
  • C: Write a function reverse to reverse a string in-place.
  • Unix: What is the difference between kill pid and kill -9 pid? Under what circumstances might kill -9 fail to kill a process?
  • Unix: What is the difference between a wild-card and a regular expression? Write the wildcard ls *.c as a regular expression in ls | grep 'put your regular expression here'.

6. QA/Testing Questions

  • Suppose you are to test a new release of Linux or Perl. They must run on many different hardware platforms and combinations. They should be "backward compatible", i.e. all programs that worked with the previous version should continue to work with the new version. Given there are a computationally infeasible number of platform combinations and programs out there to test, how do you go about testing such a release?
  • By examining the bug database you can try to see which programmers produce fewer bugs and which testers find the most bugs. Is this a good idea? Why? Have you attempted this before? What happened?
  • How do you know when your product is ready for release?
  • You found a bug that you think important. The programmer is refusing to fix it. What do you do?
  • You have an intermittent crash. How do you go about isolating the crash and making it repeatable? Who should do this? Support? Tester? Programmer?
  • What is "Exploratory Testing"? When do you use it?
  • Write down the test cases for our drink machine.

Thread Slivers eBook at Amazon