
My Most Interesting Interview Problem - MidsizeBlowfish
http://www.austinrochford.com/posts/2013-09-10-the-most-interesting-interview-problem.html
======
VladRussian2
in clear probability related context, the guy uses "uniformly distributed" and
"normally distributed" interchangeably. I usually fail interview with such
guys.

The most recent spectacular failure happened when interviewer asked about
sets, i described Java Set interface as an example (they are Java shop so i
thought the choice was right), looking dissatisfied he asked to talk about
"sets" in general, and got, lets say, really confused, when i tried to elicit
whether he means naive set theory - seeing that i didn't hit what he wanted, i
offered along the lines of Russel's theory of types, ... the guy got almost
angry and said "just sets in general", and i kind of supposed that we settled
on naive, though it sounded like he didn't like "naive"... he asked what we
can do with a set, like for example iterate over its elements, i noted that
that of course depends on the set's cardinality ... by look on his face at
that moment it was really clear that the interview is finished.

~~~
hnriot
It's not a good idea in an interview to antagonize your victims like this. The
goal is to find out what _they_ know, not be a forum for you to show off what
_you_ know. This is a very common mistake by interviewers.

~~~
VladRussian2
I was saying it as the one being interviewed. I conduct interviews
differently, in particular never give small problems, and mostly i just drill
down various items on their resume (sometimes in the areas lesser known to me,
so i'd learn something from the interview :) in the direction what they did,
how, what alternatives were considered and why that specific design/approach
was chosen over the alternatives, etc...

------
ryanbrunner
For a general-purpose developer interview question, I think this relies a
little too heavily on domain-specific knowledge to be generally useful.

Personally, while I was quite decent at algebra and geometry in university, my
skills have atrophied significantly, to the extent that I really didn't know
where to start with this problem. I don't think it represents what _most_
programmers do on a day-to-day basis, and someone with a strong math
background would probably be far more capable of answering this, despite not
necessarily being a better developer.

If this sort of thing represents what developers at your company would likely
be doing on a daily basis, I think it could be a relevant question. Otherwise,
I think a question like this is very likely to inadvertently screen out good
developers.

~~~
peacemaker
Completely agree. While I feel I could probably figure it out given time, in
an interview setting I would test badly at this question. Does that mean I'm a
terrible developer? I don't think so.

Interviews are tricky to get right. It's my opinion that interviews should aim
to prove that the candidate knows enough to do the day-to-day work, plus test
for good personality fit etc. After that, there should be a short probation
period to learn more about each other.

Honestly, my perfect interview (as a candidate) would be a quick chat about my
previous work experience, some one-on-one work with another developer to solve
a common problem the company faces and then a few drinks with the team to get
to know everyone.

------
quchen
For the interested, the easieat way of generating random points on a circle is
drawing (x,y) component-wise from a normal distribution and then normalizing
the vector. (And two independent Gaussian variables can be easily sampled
using the Box-Muller transformation.)

~~~
pfortuny
I'd rather take a random uniform distribution from 0 to pi and take it as the
arc-length.

Why is your construction 'uniform' on the circle?

~~~
ColinWright

        > Why is your construction 'uniform' on the circle?
    

That's a very good question, and the sort of thing that would need to be in a
comment somewhere. The answer is that the bi-normal distribution is
rotationally symmetrical, a fact that is not immediately obvious.

    
    
        > I'd rather take a random uniform distribution
        > from 0 to pi and take it as the arc-length.
    

That's a good solution for the simple one-dimensional circle in two
dimensional space, but does not generalize to higher dimensions. The technique
of drawing points from a normal distribution and normalizing works for any
dimension. That's the usual follow up question when the candidate gives your
(very good for the given question) solution.

How would you generate points distributed uniformly on the surface of a three
dimensional ball?

~~~
gibybo
For a ball, can't I just randomly generate two angles (0-2pi)?

~~~
mturmon
No, because the two angles can't easily be combined to make the resulting
point uniform on the sphere.

For instance, if you call one of the angles "latitude", and one "longitude",
then you will get too many samples near the poles -- think about how the lines
of constant longitude start out widely spaced on the equator, but then
converge at the poles. This would cause points to pile up at the poles.

Your proposal hits on the nub of why this problem is hard. It is, in general,
hard to generate a bunch of non-independent random variables with a prescribed
distribution. In this case, it's the angles that are not independent.

~~~
gibybo
Ah, of course, thanks.

~~~
andrewcooke
you can use longitude and z (height "up the axis") (it's uniform because a
ring of thickness dz at height z is of area 2pi * z * cos(lat) * dz/cos(lat)
(so the latitude cancels nicely - it's a trick used for equal area map
projections).

------
susi22
Q for the math guys:

Is this the closed form pdf of the angle distribution of one quarter of the
circle?

[http://www.wolframalpha.com/input/?i=1%2Fcos%28min%28x%2Cpi%...](http://www.wolframalpha.com/input/?i=1%2Fcos%28min%28x%2Cpi%2F2-x%29%29+%28x+from+0+to+pi%2F2%29)

 _1 /cos(min(x,pi/2-x))_

plus the normalization term to make \int(..) == 1:

[http://www.wolframalpha.com/input/?i=int+1%2Fcos(min(x%2Cpi%...](http://www.wolframalpha.com/input/?i=int+1%2Fcos\(min\(x%2Cpi%2F2-x\)\)+from+0+to+pi%2F2)

Constructed by arguing that the probability is directly proportional to the
length of the hypotenuse.

~~~
thomasahle
It looks alright to me, but you'll have to normalise it for it to be a pdf

~~~
susi22
Yes, that's what the second link is for to normalize it. Maybe I should've
made that clearer.

------
lpage
Bertrand's Paradox addresses a separate issue but illustrates how subtle
issues like this can be
[http://en.wikipedia.org/wiki/Bertrand_paradox_(probability)](http://en.wikipedia.org/wiki/Bertrand_paradox_\(probability\))
. The geometric interpretation that the OP offered in which he noted that the
map had to be area preserving is a nice way of visualizing why the given
implementation doesn't hold but that's just the start. As for the
implementation this is also a great example of when something is hard to do in
one coordinate system but trivial in another. Polar coordinates are the way to
go.

------
sopooneo
To me, the answer to the actual question is so obviously "no", that I was
almost confused. It's as though someone asked me, "which direction is the
floor?" Anything that easy must have a trick.

So I though maybe it was related to "points" meaning actual rasterized pixels
on the screen. The you get the slightly counter-intuitive result that the
diagonal line actual has the _same number of pixels_ as the vertical line, and
thus will produce the same density of points on the circumference. However,
this line of reasoning would require that we know the lines are far enough
apart that they don't overlap pixels.

------
fatman
What kind of job was this for? After stumbling through questions involving
trees, arrays and other data structures, I have come to the conclusion that
I'm a mathematician dressed up as a mediocre programmer.

~~~
MidsizeBlowfish
This interview was for a data scientist position. I am also a mathematician
masquerading as a programmer.

------
sologoub
What are the practical applications to something like this?

~~~
visualphoenix
Video game controllers.

DirectInput joystick data outputs a square range (0,0)->(65535,65535) which is
usually uniformly remapped to a circle to be used by the game. Then you have
to add in a dead zone to eliminate the noise from the controller around the
neutral position.

------
jaimebuelta
Should not be described as points on a circumference?

Doing it about points in a circle made me think of a different problem (which
is also interesting)

(Just to clarify, the circumference is the line that contains a circle. I
assume that won't be misnamed in a geometry problem of this kind)

~~~
gsteinb88
Canonically, a circle is the set of points equidistant from a given point (the
center of the circle). The set of points inside the circle is known as a disc.
Generalizing slightly, a circle is a 1-sphere and a disc is a ball in 2
dimensions.

So no, the post has it correct. In fact, circumference is the scalar value
corresponding to the length of the circle. This relies on significantly more
structure (i.e. having a metric) than the terms circle and disc.

