NYCPHP Meetup

NYPHP.org

[nycphp-talk] Questions to ask at a job interview?

David Krings ramons at gmx.net
Sun Jul 8 12:55:48 EDT 2007


Urb LeJeune wrote:
> I've been following this thread with interest. To a certain point I think
> you're going about this in the wrong way. Programming is about
> problem solving, it's about syntax, that's the easy part. I good
> problem solver can use a book to lean the syntax to code a solved
> problem. Someone who aces a programming test because they
> have memorized a manual is non necessarily a good problem
> solver.

I fully agree with that! I worked with many developers and the really 
good ones weren't the ones who knew the latest tricks, but who 
understood the business.

> Try this on a candidate.
> 
> Write an algorithm (not language specific code) to do the following:
> 
> Players is a variable holding the number of players in a single
> elimination tournament. If you loose a match, you're out. The
> winner is determined when there is no one left to play.
> 
> Output the value of Matches which is a variable containing the
> number of matches required in the tournament.
> 
> On problem that is non-trivial will have multiple solutions, we
> want the most efficient.
> 
> Resist the temptation to express the algorithm in PHP or any
> other programming language.

Huh? That is a mathematical, statistical problem of half-life periods. 
IMHO is not that useful unless providing the logic behind it is 
sufficient as an answer.
My objection is about asking for an "efficient solution". I think it is 
much more important to stay with Confucius on this: the way is the goal. 
I'd say that someone who gets this requests and asks for a pen and paper 
to draw a picture is already a good candidate.
Asking for an efficient algorithm and a mathematical approach is 
unfortunately in line how programming gets taught these days. No wonder 
why people rather get MBAs instead of science degrees. Who wants to get 
beaten with the math stick each and every time? Use math and logic if 
common sense fails. I met many engineers who where math experts, but too 
stupid to operate a screw driver. They could design complex machinery 
for a site, but didn't bother checking if the parts would fit through 
the doors. I studied EE and would have enjoyed it more (and probably be 
better at it) if it wasn't always about some integral to be solved first.

I created quite many scripts that are in no way efficient, but they all 
work and I got them to work reliably. When I look at them today I know 
at least a dozen ways on how to improve them and do the same with less, 
but at the core the path to finding the solution remains the same.

I also tried and dealt with many different programming languages and in 
general they are all very similar, excluding machine code and assembler 
(means 'real' programming). They all got their decision structures, they 
all got their output commands, they typically use pointers for files, 
database, etc., they generally all know about arrays. So yes, nailing 
someone on a specific programming language doesn't mean all that much. 
Although in this case knowledge of PHP is key and the more I look at 
that script the more I think it is a good choice. One doesn't even need 
to know anything about OOP in order to figure out what it does. Another 
option is to ask what the steps are to accomplish this data mining process.
One other intriguing problem I came across recently was this:
I have a set of several file folders. They are all numbered 
sequentially. I want to create three independent functions for adding 
one folder, deleting one folder, and moving a folder to a new position 
and each time end with consecutively numbered folders and have those who 
are not affected by the operation keep their names.
Writing the code was somewhat easy after I figured out what I need to do 
and in which order. In my case I also had to sync the changes with a 
database table, so I had to make sure that one thing worked before doing 
the other (I chose to first do the file system stuff, then change the db 
record, but the other way around is as good/bad).

> BTW, I personally think swapping the contents of two variables without a
> temporary variables proves nothing. It's a trick we learned if we studied
> assembly language. Tricks do not a good programmer make. When is
> the last time you used an XOR is a real program?

Exactly! I think that using the temp variable is a good solution even if 
it takes a few bytes more of memory. The days of 64kB RAM are over where 
that really mattered. As long as someone doesn't answer this:
$a = $b;
$b = $a;
it is not a lost cause (but some may even stop after the first line!).
Take my example from above with moving the position of one folder within 
the set of folders. Need to rename one folder first, then complete the 
sequence until the new position for the folder is reached, and then 
rename that folder. In case of two folders I have the same problem as 
asked with exchanging the variable values. So, how do I XOR folders in a 
file system? And how many XORs does it need to accomplish this for the 
likely case of having more than two folders?

IMHO, any test that has a direct practical approach is way better than 
some question about a nifty, but useless trick. In the end interviewing 
and hiring people isn't any different than learning programming. 
Practice makes perfect and one just has to be aware of the fact that not 
everything works out as intended.

David



More information about the talk mailing list