Latest Articles:
- Mac: You don't have access to / on this server
- Debugging cucumber scripts, cucumber and devise authentication
- Comment left on review for Feeble Paradox
- Heroic Failure on the 13th of November
- Ok, I'm not perfect and I still get angry - but still try to deal with it
- Tumbleweed Interview Candidates
- TDD is effective if you look at the right things
- Ballmer not the darling of the stock market
Archive
March 2010
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
September 2005
August 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
March 2000
Tag Cloud:
Stats:
- Entries = 358
- Notes = 35
General Links
Tumbleweed Interview Candidates
In my present role helping a team become more agile I was asked to help with some interviews. We must have talked to about ten people. The profile is relatively unusual: Object-oriented PHP with MVC and some Oracle PL/SQL. Unusual but a lot of people claim to have at least some of it.
I've helped conduct at least two interviews where you ask a straight question related to a claim on a CV e.g. claims about knowing Object-oriented design patterns, I get what I've come to call the tumbleweed response. As in what happens when someone makes an unfunny joke and there is silence. The idiom comes from the cowboy movie where the wind blows across the silent plains and makes the tumbleweed roll by; there is nothing there! (Reeves and Mortimer fans will know exactly what I mean).
So, if you are going to be interviewed by me, remember the following:
If you claim to have designed databases with hundreds of tables you should be able to explain what foreign keys and lookup tables are. Third normal form? It's a dying art. Look it up or don't make the claim.
If you claim to know PL/SQL then you know the difference between implicit & explicit cursors, probably what ref cursors are and what in, out and nocopy mean and why you would use them. Bonus question - what are PL/SQL tables (hint: nothing to do with database tables, it's a language construct, so don't start talking about database tables - it means you don't have a clue).
SQL: inner and outer joins, foreign keys etc. Why as well as what.
If you know J2EE or Java beyond having attended a one-day course tell me what might go wrong with singletons (have a read up about serialisation)? How and why do you implement an equals method (just look it up)? Bonus question - if you have read about trying to create enumerated types in Bloch's Effective Java are there any problems with it? Double bonus - tell me about synchronisation and the actual order statements can be executed when optimised that breaks it. It's a feature. I'm a bastard question: why haven't you read Effective Java? Do you know what POJO is, and why does it have so much meaty goodness?
If you claim to be well-versed in object-oriented techniques you sure as christmas is coming need to be able to tell me the difference between has-a and is-a relationships, and why they are needed. Plus the usual stuff about abstract classes, interfaces and so on. Maybe, as a bonus question, why dynamic languages don't need interface or abstract - or do they? I like people with opinions.
Ruby - what is duck typing? Can you explain what method_missing does? What does yield do? What's the difference between a string and a symbol? How do you pass a block to a function - why would you? What's a mixin and why do they taste so nice and chocolatey? Bonus: Why is the splat operator so handy?
Rails - how does an @ variable set in the controller appear in the view? What tools to you use to test model/view/controller code separately and together? Tell me why fat model, thin controller is a good guideline. (This question also works for PHP/J2EE and whatever framework you want).
(I will think up more RoR questions - readers feel free to chip in and I will add them).
Agile: What does YAGNI mean? What does PIE mean? What is TDD? Then, of course, why? Bonus: Demeter/Tight and loose coupling/...
Patterns: Describe MVC (why as well as what). Do you know what the conductor pattern is? If you claim to know patterns such as Factory or Singleton, then expect to be asked "what does a factory give you" (concrete class that implements a known interface, like a database connector or cross-platform representation of a GUI object) or "why would you use a singleton" (global data store, or even a factory!) Bonus question - what does "concrete class" mean? Expect why questions - anyone can implement someone else's pattern - why was it a good idea?
General Programming: How do you track production system bugs down (this is open ended - no right answer - but have some idea, please!) Why is refactoring old code generally a good idea? Or is it a bad idea? What's refactoring anyway?
I can't be bothered asking questions about XML but there are plenty - I leave that as an exercise for you, dear reader.
Some of these questions overlap, obviously.
Bottom line: If you claim to know something then expect to be asked about it - I will bone up on the web if I don't know to do you the courtesy of being able to shine - I want you to succeed, honest.
Bottom line: Don't make claims you can't back up. Don't waste my time.
Envoi: I don't know is a fine answer, don't be afraid of it. You get more respect for it. Just don't sit there watching the tumbleweed after claiming to be a world expert on something - it makes us all so embarrassed.