News for hackers. Stuff that matters.
Re:An Algorithm for Passing Programming Interviews (2020) by mrfusion on Sunday January 02, 2022 @08:15PM (#29776173)
I’ve gotten interview questions I’d recently solved and my problem was it was too easy. I had trouble acting like it was the right amount of struggle. Is there a trick for that?
Re:An Algorithm for Passing Programming Interviews (2020) by benlivengood on Sunday January 02, 2022 @09:39PM (#29776723)
I've interviewed folks for FAANG roles. If you know how to solve the problem already, just tell the interviewer up front. Either they have another question or they will go deeper into a discussion about why and how you solved it the way you did, testing it, other approaches and why they are or are not good tradeoffs, etc.

It's pretty obvious to interviewers if you've solved a problem before, and we appreciate the honesty. Interviews are not adversarial; they're to see if a candidate is a good fit for the role and dishonesty is never a good fit.

Re:An Algorithm for Passing Programming Interviews (2020) by baskethead on Sunday January 02, 2022 @11:49PM (#29777441)
This is how dumb these interviews are.

"We expect you to study and be prepared for algorithmic questions, BUT NOT TOO PREPARED! Only just enough. We will give you a random question of our choosing, but if you already studied this, then you will be deducted points, unless you tell us, so that we can ask you a question you've never studied before."

A true interview would give the candidate their choice of question with the expectation that they know how to solve the question. It makes it a lot fairer for everyone involved.

Re:An Algorithm for Passing Programming Interviews (2020) by thaumasiotes on Monday January 03, 2022 @12:12AM (#29777574)
I was always kind of confused about how advice for interviewers always comes along with warnings of the type "Some people talk a good game about programming, but they can't actually do it. You have to watch out for these people. Never hire one. This is the biggest trap you can stumble into as an interviewer."

After getting some interview coaching, I think I understand how this complaint arose. The whole problem is an artifact of the interview format, in which the design intent is for the candidate to be unable to solve the problem on their own. So you get scored based on how well you can charm the answer out of your interviewer while making them feel like everything they said was your idea. Instead of a test of how well you can program or solve math problems, it's a test of how good you are at cold reading. ( https://en.wikipedia.org/wiki/Cold_reading )

And unsurprisingly, a test of cold reading will end up delivering people who are good at cold reading without reference to whether they're good at other things. If you want to avoid this problem, just start giving assessments that don't involve interaction with the interviewer.

Re:An Algorithm for Passing Programming Interviews (2020) by stathibus on Sunday January 02, 2022 @09:45PM (#29776757)
A good way to avoid this conundrum is to ask questions that are worth solving in real life.

If the candidate breezes through the discussion because they've actually had to solve the problem before, then their victory is well earned.

If on the other hand its an academic question in the same vein as the data structures or algorithms puzzles you find on $interviewprepforum, then the fact that they've solved it before tells you very little.

Re:An Algorithm for Passing Programming Interviews (2020) by creato on Sunday January 02, 2022 @11:36PM (#29777381)
I don't think there's much difference either way. In both cases, a candidate gained a large advantage in a way that tells you very little about their ability.

I think this is why contrived questions gained popularity in the first place - they eliminated noise due to candidates randomly having solved similar problems before (that and "real life" problems usually can't be explained and solved in 1 hour).

Re:An Algorithm for Passing Programming Interviews (2020) by asxd on Sunday January 02, 2022 @11:58PM (#29777500)
I think this is on the right track. The best interviews I've been a part of involve the interviewer asking a question they don't fully know the answer to. Then the interview turns into a conversation where both parties are trying to work together to formulate an answer. The candidate should be scored based on how constructive that conversation is.
Re:An Algorithm for Passing Programming Interviews (2020) by Drew_ on Sunday January 02, 2022 @11:22PM (#29777308)
Be honest: a candidate that works through a seemingly novel problem correctly is getting a much better review than another candidate that admitted they've done the question before and breezes through it. And this is assuming your interview round doesn't get thrown out entirely to begin with.
Re:An Algorithm for Passing Programming Interviews (2020) by thaumasiotes on Sunday January 02, 2022 @10:53PM (#29777142)
> Interviews are not adversarial

I'm struggling to imagine a definition of "adversarial" that would make this true. You have two parties with conflicting goals.

Re:An Algorithm for Passing Programming Interviews (2020) by iampims on Sunday January 02, 2022 @11:53PM (#29777467)
How are they conflicting?
Re:An Algorithm for Passing Programming Interviews (2020) by thaumasiotes on Sunday January 02, 2022 @11:58PM (#29777499)
The interviewer's goal is to evaluate the interviewee accurately.

The interviewee's goal is to be evaluated inaccurately.

If you really need an example, then look at it this way:

1. The interviewee's goal is to be hired.

2. Assuming there is no conflict of goals, then the interviewer's goal is to hire the interviewee.

3. This immediately implies that the interview is a pure waste of time. You can just make the hire without having the interview.

If you don't believe that interviews are -- in every case -- nothing but a waste of time, then you must reject one of the two premises. You either believe that (1) The interviewee does not wish to be hired, or (2) there is a conflict between the interviewee's goals and the interviewer's goals.

We can make a similar observation purely by knowing that interviewers sometimes reject interviewees.

Re:An Algorithm for Passing Programming Interviews (2020) by jaredsohn on Monday January 03, 2022 @12:30AM (#29777672)
>The interviewee's goal is to be evaluated inaccurately.

Only if the interviewee doesn't think they should be hired.

I think a better way to think of this is:

1. The interviewer's goal is to hire somebody that will provide value at the company, using the hiring criteria as a way of judging it.

2. The interviewee's goal is to get an offer at a company that makes sense for their career goals.

These aren't necessarily adversarial.

Re:An Algorithm for Passing Programming Interviews (2020) by thaumasiotes on Monday January 03, 2022 @01:23AM (#29777934)
>> The interviewee's goal is to be evaluated inaccurately.

> Only if the interviewee doesn't think they should be hired.

Nope. The interviewee would always like to be evaluated as better than they actually are, regardless of whether they meet the notional hiring threshold.

> These aren't necessarily adversarial.

The goals you list are still necessarily adversarial, because the interviewee's goal is always to get an offer and the interviewer's goal is to stymie them.

Re:An Algorithm for Passing Programming Interviews (2020) by asxd on Monday January 03, 2022 @12:48AM (#29777759)
Agreed. Ideally both parties want to form a symbiotic relationship.
Re:An Algorithm for Passing Programming Interviews (2020) by vanusa on Monday January 03, 2022 @02:16AM (#29778207)
The interviewer's goal is to evaluate the interviewee accurately.

More specifically: the interviewer's goal is to minimize (1) false positives and (2) the expenditure of the company's resources.

Meanwhile, candidates hope to be evaluated "fairly", which is in direct conflict with criterion (1). They also naively expected to be treated "decently", which is in direct conflict with criterion (2) and which explains why employer-side ghosting is so widespread, along with other abusive practices like piling on lengthy take-homes, etc.

Re:An Algorithm for Passing Programming Interviews (2020) by thaumasiotes on Monday January 03, 2022 @02:56AM (#29778393)
> which is in direct conflict with criterion (2) and which explains why employer-side ghosting is so widespread, along with other abusive practices like piling on lengthy take-homes, etc.

I don't think concerns about resource expenditure actually explain ghosting. I think that happens despite what the company would prefer, because the people involved find it unpleasant to notify candidates of a rejection.

Lengthy take-homes are easier to explain by reference to resource concerns.

Minimizing false positives is not a fundamental goal of interviewing -- accuracy is a goal in all settings, while minimizing false positives isn't. But minimizing resource expenditures is; you're right about that.

Re:An Algorithm for Passing Programming Interviews (2020) by vanusa on Monday January 03, 2022 @12:35PM (#29783496)
Because the people involved find it unpleasant to notify candidates of a rejection.

"Unpleasant" to send a standard form letter? I don't buy that.

I do agree though that it's what they prefer. As a reflection of how they are, and how they look at people.

Re:An Algorithm for Passing Programming Interviews (2020) by mavelikara on Monday January 03, 2022 @02:53AM (#29778379)
> It's pretty obvious to interviewers if you've solved a problem before, and we appreciate the honesty.

> ..

> dishonesty is never a good fit.

If you rejected every such “dishonest candidate”, the paid services offering candidates practice questions would have gone out of business long ago.

Given the popularity of such services, have your considered the possibility that you overestimate your ability to spot candidates who have solved the problem previously?

Re:An Algorithm for Passing Programming Interviews (2020) by asxd on Sunday January 02, 2022 @11:54PM (#29777471)
I understand the sentiment about honesty and finding a legitimate good fit. Neither interviewers or candidates are perfect. But there's something off about this, isn't there? If you ask a candidate a question, and they answer it well, they've done what is asked of them. Why should they put themselves in a position of vulnerability just because they're well prepared?
Re:An Algorithm for Passing Programming Interviews (2020) by shrimpx on Monday January 03, 2022 @07:25AM (#29780052)
To some extent it paradoxically sounds like you guys want applicants to not have studied basic algorithm problems, since the problems you find if you try to study are the same problems you guys ask in interviews.
Re:An Algorithm for Passing Programming Interviews (2020) by arduinomancer on Sunday January 02, 2022 @08:26PM (#29776223)
Yes, you need to pull a George Costanza and look/sound really annoyed while you code the solution
Re:An Algorithm for Passing Programming Interviews (2020) by kortilla on Sunday January 02, 2022 @08:18PM (#29776187)
Empty your bowel into your underwear. It’s all a show anyway, at least make it a good one.
Re:An Algorithm for Passing Programming Interviews (2020) by titanomachy on Sunday January 02, 2022 @08:58PM (#29776449)
Just tell them it’s familiar. Depends on the company, but they can often tell. If you blast through a tough question and then struggle on easier ones, it’ll show up in hiring committee (or equivalent).

It could easily cost you the offer if they think you’re being dishonest.

If you say it’s familiar and they ask you to do it anyway, just solve it very quickly and thoroughly. They’ll give you points for your performance and probably ask you another.

Re:An Algorithm for Passing Programming Interviews (2020) by kadoban on Sunday January 02, 2022 @08:44PM (#29776372)
Just go through the steps out loud, start with a really naive solution, say what's wrong with it, go on to the next. You can usually go through at least 3 levels of that. Also spend some time verifying the specification of the problem, ask about any potential edge cases. If you really know the problem well, go into maybe some extensions of it or harder versions.
Re:An Algorithm for Passing Programming Interviews (2020) by netizen-936824 on Sunday January 02, 2022 @08:30PM (#29776258)
Why would you want to seem like you're struggling?
Re:An Algorithm for Passing Programming Interviews (2020) by kadoban on Sunday January 02, 2022 @08:42PM (#29776359)
The interviewers are ideally trying to get a sense of how you think through problems, not just that you can spit out an answer you know. At least that's what they say.
Re:An Algorithm for Passing Programming Interviews (2020) by netizen-936824 on Sunday January 02, 2022 @08:48PM (#29776398)
So does struggle equate to working through a problem? I don't think it does.
Re:An Algorithm for Passing Programming Interviews (2020) by taude on Sunday January 02, 2022 @10:28PM (#29777014)
It's not the struggle, it's the questions you ask, and what you share about your thought process trying to got to a solution. You might work yourself into a hole solving what you think is a simple array manipulation problem, but then realize some edge cases require you to switch to a heap/priority queue, etc.
Re:An Algorithm for Passing Programming Interviews (2020) by kadoban on Sunday January 02, 2022 @09:06PM (#29776512)
Not really, no.
Re:An Algorithm for Passing Programming Interviews (2020) by Lamad123 on Sunday January 02, 2022 @11:14PM (#29777264)
What if you happen to be an unlucky genius like J. von Neumann or something?
Re:An Algorithm for Passing Programming Interviews (2020) by kadoban on Sunday January 02, 2022 @11:32PM (#29777355)
You still should need to ask clarifying questions, because the specification of many problems is intentionally incomplete.

Beyond that though, you can just be honest and say you know a problem and they can either pick another or just talk about it anyway.

Re:An Algorithm for Passing Programming Interviews (2020) by shahbaby on Sunday January 02, 2022 @09:00PM (#29776468)
Practice with a friend.