Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In my opinion, it doesn’t matter what they ask at all. Give me a question about Kubernetes deploys for a shader programming job if you want. I’m a programmer, my job is to solve coding problems both inside and outside my sphere of knowledge.

If you “get stuck”, what are you going to do when you bump up against your limitations at work?

Part of the job is getting yourself unstuck. If you can show you have ways of making progress when you are out of your depth then you aced the interview, even if you were nowhere near the correct solution.



> If you “get stuck”, what are you going to do when you bump up against your limitations at work?

If I got stuck on finding whether a linked list had a cycle in it, I would Google for "how to determine whether a linked list has a cycle in it". Ironically, that's the one thing I'm not allowed to do in a coding interview.

In fact, trying to invent something from first principles as you're theoretically supposed to do in an interview would be a waste of my employer's time.


What do you do when Google doesn’t have a good answer?

The point is I can easily fill an hour applying different debugging and learning techniques that have a chance at getting me unstuck. That’s one of the things that makes me a good programmer.


Realistically, you'd walk the list with a visited set and validate you didn't visit a node twice.

This would solve your problem in any realistic use case and you'd never even recognize a constant space solution was possible.


What are you going to do when the solution to your problem is not on Google/Stack Overflow? Give up? If you're only going to code things that have already been coded, and can be accessed merely by Googling, then what's the point of your job?


> "If you can show you have ways of making progress when you are out of your depth then you aced the interview, even if you were nowhere near the correct solution."

In my extensive experience on both sides of the interview table, this only works for open ended questions, notably architecture/design. With something like architecture, you can grasp what the candidate's baseline knowledge is, see how they acquire information (asking you questions), and how well they are able to synthesize a solution within their knowledge level/parameters specified. So to your point about Kubernetes deploys for a shader programming job, well, yah, that can be a solid architecture question, but you'll have the freedom to ask me all the questions you want.

I have almost never seen a candidate be deemed as "acing" an algorithms question when they were "nowhere" near the correct solution. This is in part due to the large empathy gap existing in algo questions -- it's not obvious to me what baseline info the candidate knows and doesn't know. I mean if I tell you to do detect if a linked list cycles on itself in constant space and O(n) time, what sort of partial solution is there? If you are able to have the insight that this type of problem is in the general class of "two pointer" problems, there's a damn good chance you are going to solve the problem. Absent that, you are just grinding your wheels because the solution space is so large.

(Because of this fact, I generally find whiteboard algo ("leetcode") coding makes for poor interviews. The only types of whiteboarding coding questions I see as useful (for systems engineers) are hybrid architecture/coding questions and/or multithreaded programming, which more become tests of actual programming ability and less so of did you do 50 leetcode questions)


I agree that "getting yourself unstuck" is part of the job, but interviews also try to get an idea of how well you will do on average.

So a previous graphics driver implementer may be a great fit for the shader programming job, but be beat in Kubernetes deployment by someone who has done multiplayer web based 3dgames.


+1. I 100% agree and this is a great way of putting it.

Being able to think through how you would approach something is infinitely better than having memorized some details (although job-specific details are important too).


Programming problems are not solved in about 30 minutes, which is a very typical amount of time in my experience.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: