Ask HN: What are the best interview questions you've been asked? - tbanacek
======
cpt1138
A very senior guy comes in the room where I am with a very concentrated look
on his face and my resume in his hand. On my resume its mentioned that I have
a lot of experience bringing security relevant concepts to inexperienced
people.

So he describes a problem hes actually working through when he was
"interrupted" to come interview me. He was trying to terminate an SSL
connection, modify the stream (for video manipulation) and send it along to
the client. I explained public key and how what he wanted to do was called a
MitM attack and how he couldn't continue on the stream without the private key
of the server. We had a real conversation with me explaining (to a very smart
guy) so he could completely understand everything he "needed" to know to solve
the problem he was working on.

I got the job. It was the only interview I've had where I really felt they
were asking me something relevant to the work and the kind of work I would be
required to do. I ended up having to write Symbian OS code, which I had no
prior experience in.

TBH most of the comments so far are the interview questions I hate as they
have no relevance to anything I care about or will ever be asked to do.

~~~
daysforbeef
A very senior dev had to be explained he couldn't do a man-in-the-middle
attack on an encrypted stream without the server's private key? With all due
respect and I don't know much about security but something seems off, maybe
you haven't explained the whole story or maybe I'm getting something wrong.

~~~
jdc0589
senior means different things in different places. More and more developers
are considered "senior" just because of experience building basic web apps,
doesn't mean they have a deep understanding of http/s, public/private key
cyrpto, etc...

Not a good thing, but thats how it is some places.

~~~
flukus
This doesn't require a deep knowledge of https or public/private crypto
though. It requires a very basic knowledge of how encryption works. Although
to be fair, you can go a long way without that knowledge.

------
hijinks
For a sys admin, devops, sre or whatever you want to call us this week, I like
the following question for senior level people

What has been your biggest screw up to cause a production outage and what did
you take from that?

If they say they never caused an outage or give some answer that isn't a screw
up, I know one of two things

1) They arent senior level to be put in charge of handling major changes on
production

2) They are the type of person that tries to hide screw ups from the rest of
the team.

~~~
dsacco
I like this, but I want to follow up by asking what your idea of a "good"
answer is, what a "bad" idea is and how you would see through a bullshit
answer.

~~~
hijinks
For me a good answer is a story about a human screw up that took down
production and then the follow up is talking about steps they took to make
sure it never happened again.

The big thing I'm looking for is mistakes are good learning experiences for
people and if you make a mistake its time to reflect on the mistake to make
sure it never happens again.

So I want to hear how they made sure that mistake or anything like it won't
happen again.

------
harpocrates
Consider two directed acyclic graphs where each node has a hash that depends
on its value and its parent's hashes. Suppose you have a slow connection and
one of the graphs is remote, how do you figure out as efficiently as possible
which nodes both graphs have?

The trick is to sample random nodes from the remote graph. If you get back a
node that has the same hash as a node in your graph, you know that local and
remote have all the same ancestors of the node too. Otherwise, you know that
local doesn't have any of the children (on remote) of that node.

Turns out that is basically what mercurial does [1].

[1] [https://www.mercurial-
scm.org/repo/hg/file/tip/mercurial/set...](https://www.mercurial-
scm.org/repo/hg/file/tip/mercurial/setdiscovery.py)

------
matthewmacleod
"We're going to build Google Maps using these satellite images. How would you
do it?"

This is the sort of open, large architectural question that I love and think
really helps to understand a developer's skill set. It's great to be able to
start very broad, but focus down into detail like CPU caching and the possible
on-disk layout.

~~~
aaaazzzz
Any recommendations on sites where one can read about stuff like this? High
Scalability (highscalability.com) is one resource I'm aware of (for people who
are familiar with the site - any "must read" posts?). Thanks.

------
DamnYuppie
My personal favorite "How much will it take for you to join our team?"

~~~
gallerdude
Damn yuppie.

------
romanhn
It is both sad and unsurprising that we bash algo-centric interviews in every
other thread (rightly so) and yet so many of the answers here are focused on
abstract algorithmic questions. We really do this to ourselves.

------
bsvalley
Majority of the interview questions for software developers are retarded. It's
either too academic (reverse a linked list) or too specific (What is the
difference between StringBuffer and StringBuilder in Java?).

To answer your question - none.

~~~
joe563323
Being too specific is only bad unless you have not listed as your experience
in the domain.

But being too academic is actually good. The academic questions are constants
irrespective of the domain in which the coding is done.

~~~
bsvalley
Put it this way - If you ask academic questions to a senior engineer during an
interview, you might as well hire a college student. It will cost you less
money and the student might even be a better fit, based on your evaluation.

~~~
joe563323
No. That's not the intention. A senior who skill is superset of a college
student.

------
dagw
"Here are 4 projects we're currently working on and that you might be involved
with if you work here. On a scale from 1-5 how interested would you be to work
on them. Briefly explain your reasoning"

Or any variation on "here's a real problem we are actually having. Do you have
any ideas about how one might go about solving it?"

and bonus worst question:

"do you have kids/what does your family life look like?"

~~~
_rjlt
I'm pretty sure that last question is illegal in the USA

------
zem
one i really enjoyed solving: given an array of size (n - 1), containing all
but one of the numbers between 1 and n, find the missing number in linear time
and constant space.

~~~
logicallee
"All the integers between 1 and n should add up to (n(n+1) / 2) so just
iterate over the array keeping a running sum, then at the end subtract from
(n(n+1) / 2) to see the integer you are missing. It's constant space and
requires just a single sum you track.

But hey you know what, actually, fuck these requirements, they're pretty bad.

This is a stupid and wrong solution and the actual correct way to do it (which
is guaranteed to work) is to sort the list in-place (or into a copy, if you
need the original), then iterate through from the beginning, making sure it
starts with one, that every value is in there, and that it is missing one and
only one number. On the second missing number or if after sorting it does not
start with 1, or if any value is not an integer, or if any value is repeated,
then say that the array does not meet the promises, and you can even error
with the exact way in which it fails. This is much better and in-place sort is
pretty fast. Quicksort, which I will use, requires pointers and is not
actually constant space (despite being an in-space sort) but because it's
better and we should use it.

So, with all due respect, fuck the requirements, that is going to be our
solution. I realize it misses both your linear time and constant space
requirements, but I really feel these requirements are stupid and lead to a
brittle solution - this solution is better and is the one I stand by. Sorry.
:)"

How'd I do? Would I get the job? (Probably NOT.)

~~~
AnimalMuppet
If I were looking for a junior dev, probably not. Don't like your attitude,
son, and you're probably not a good fit.

But if I'm looking for a senior position, you're probably in. Senior people
_do_ push back on bad requirements, and they know when to do so, and why. If I
want experience and leadership, what you did is exactly what I'm looking for.

The difference is that the senior person is going to do it when they know that
the spec is a bad idea (and know _why_ it's a bad idea), and the junior person
is going to do it all the time because they're a show-off know-it-all and a
hothead...

~~~
logicallee
thanks :)

------
sidcool
I tend to ask about the technology and architectural choices candidates made
in their projects. If they were not involved in the decision making, what they
thought of it. What they could do differently. What's the testing strategy.
What challenges they enjoy.

------
sergiotapia
A paid-for ticket to solve from their real codebase. Best interview question
for me. No bull, no gotchas, just "Will you be able to do the work?"

------
transitorykris
One that I've been asked and now use routinely is:

"If you were to start on Monday, what do you feel most confident about, and
where will you need help?"

------
tjalfi
Here are a few questions that I was asked in a Microsoft interview:

Write an interpreter for first order logic.

Define an algorithm for reordering the x87 floating point stack.

------
rurban
Always the non-technical questions. HR is usually staffed with psychologists,
and they try to find questionable personalities, "good fit".

I talked with one hiring lady 30 minutes about movies and surfing.

The technical questions are usually superfluous if you have a proper resume
and published work online. Nobody needs that crap.

------
tcbawo
I liked one that involved implementing a graphing library for a memory-mapped
bitmap display. It started with drawing a circle of radius R with origin X, Y
but involved several iterations of optimization. You can get into a lot of
interesting performance areas (caching, reuse, loop unrolling, etc.).

------
frogperson
I like to ask people to tell me about good software and how it's made. A
surprisingly high number of people have never put any thought into this. I
also like to ask about bad software and lastly what makes a good developer. If
a candidate blanks on all 3 questions, it is not a good sign.

------
JSeymourATL
Final interview - this one with the CEO, Mr. Big runs a $4B company.

I know you've met with the senior leadership team. What questions do you have
for me?

It's a brilliant question, both disarming and straight to the point. He's
looking for how I think. Can this guy solve my problems?

------
zerr
"What are your bank requisites? We will transfer money upfront."

Contracting job, but still... That was the first "question" I got from the
company. I was expecting at least to talk about my past experience, and maybe
do some irrelevant CS riddles...

------
niceperson
Tell me something that's true that very few people agree with you on.

(I haven't been asked this)

------
zhte415
"I have all the time in the world for interviews. Is there anything more you'd
like to say, ask or discuss that you've not had the chance to so far?"

------
lpolovets
This Quora page lists some interesting interview questions:
[https://www.quora.com/What-are-the-best-programming-
intervie...](https://www.quora.com/What-are-the-best-programming-interview-
questions-youve-ever-asked-or-been-asked?share=1)

------
antoaravinth
Find the minimum value in the stack in O(1) both time and space complexity.

~~~
wadeboggs
Make another stack with the latest minimum, then when you pop that top value,
you also pop it off the minimums stack. Then you have the last minimum before
that one.

Is that it?

~~~
sand500
What if you added values that are greater then the minimum at the top of the
minimum stack but less than the next value on the minimum stack?

