Ask HN: What are your favorite code problems to give while interviewing? - yankoff
======
istvan__
This is a great topic.

I like to split my interview to the following steps:

\- introduction, small talk about the company or the candidate \- level 1
write a function that flips a bit that is represented as a single digit
integer: (0 -> 1, 1 -> 0) flip two variables (int) without a third one: (a,b
-> b,a)

\- level 2 what is the runtime complexity of a nested loop (assuming n == m)
lease write a function that returns the list of numbers (in a string
representation) that are permutation of N digits, where digits are 0..9. (1 ->
0..9, 2 -> 00 01....98 99 etc.) please explain recursion

\- level 3 99% of the candidates do not make it to here I guess I should just
make them flip that binary tree over the phone. :)

This is basics I think, so most of the software engineers should be able to
solve these, even with a little hint.

On the top of these artificial tasks I usually ask them what is the biggest
system they contributed code to, what was the contribution. What tools are
they using. What is the favorite language and why. How do you to performance
profiling for your code. What was the last problem that you solved in
production, what was the problem and what is the solution.

And few others.

~~~
siscia
How do you flip two variable without a third one ?

~~~
pdiddy
Another way is to just use subtraction:

    
    
      x = x + y
      y = x - y
      x = x - y
    

I originally learned about this while preparing for some interviews.

The funny thing, I find, is that in Python you can simply do this:

    
    
      x, y = 5, 10
      x, y = y, x
    

I was asked this question in an interview and I responded that you can do
this. His response: "Python is weird."

------
MalcolmDiggs
I like to give some broken code and ask them to fix it...or give a Class
that's missing a function or two and ask them to fill in what seems to be
missing.

I tend to like those types of problems more than the "blank page" kind...I've
found it to be a closer approximation of the everyday tasks they'll be
encountering on the job.

~~~
panorama
This is my favorite as well. Sure you'll be joining to write code from
scratch, but day-to-day, you'll most likely be reviewing other people's code,
hunting down bugs in other people's code, and so forth.

I'm a huge fan of "What can you fix or improve upon in this given code
snippet?"

------
hoare
i guess if i say invert a binary tree i will be hunted down?:D

~~~
yankoff
a good thing is that now probably everybody knows how to solve it ;)

------
cweagans
The kind that they can solve at a computer with a real code editor.

------
kwc98
I like to describe a problem that we are currently experiencing or one that we
had in the past to see the troubleshooting logic in play. I love explaining
something that is not quite optimal in production and see if this person could
help.

