4 ms·
I didn't know this was so popular of a question. I've been asking it for many years. I love it because anyone with expertise in any part of the system should be
by robertcope 12y ago
I didn't know this was so popular of a question. I've been asking it for many years. I love it because anyone with expertise in any part of the system should be able to answer it. Are you a networking guru? If so, you should be able to talk a long time about the network bits. Are you a kernel guru? Same. Etc. It also gives me a good idea how broad the interviewee is.
It is always amazing to me how many people fail the question so badly. I've really had only one person answer it reasonably in all these years.
- RogerL 12y agoSo, everyone fails and you think it is a good question? That doesn't make a lot of sense to me. I can't reasonably answer the question, because I haven't really needed to know it. When I need to know it, I'll learn it, and quickly. How is that question a good measure of me if you are not hiring me to architect a router or something where it pertains? I could ask you questions in my domain that you'd be hopeless at answering. But I wouldn't, because it would be a horrible measure of you.
- matthewmacleod 12y agoThe parent clearly said "so many people" and not "everyone" - that's a really important difference! I really struggle to believe that a competent software developer would be unable to answer this question with some degree of accuracy. It's not like it's a networking question - it's fantastically open-ended and covers everything from hardware, operating systems, networking, GUIs... and that's useful flexibility. On top of that, it's useful to help judge communication skills - engineers must be able to clearly express ideas, understand the audience that they're communicating with, and be able to discuss and reason with other engineers. I would not hire an engineer who was not able to answer this question.
- RogerL 12y agoHe said "really had only one person answer it reasonably in all these years ". Are we going to quibble about this wording? Let's see. I've done flight software. I've done cancer statistic software for the NIH. I've done autonomous robots and UAV. I've done drones. I've done weapons systems for the military. I've done mapping applications back on 486 machines with 16 bit software (hard to be responsive in that environment). I've design/built/debugged circuit boards. I've disassembled compilers and sent bug reports back to the manufacturer. I've done machine vision and computer vision. I've done simulation, solved partial differential equations, built bayesian filters. But, you know, I haven't had to do anything significant with resolving google.com. I mean, I know that it resolves to something like 145.234.34.45, I know there is a difference between TCP and UDP, and a few other things, but I pretty much just need to open sockets once in a while. I'm pretty much the goto person for hard problems whereever I've worked. I've written articles, and am writing a book. How does not knowing some specific fact make me unhirable? "there are no good engineers". Well, I guess there is one, since one person was able to answer the question.
- matthewmacleod 12y agoBut, you know, I haven't had to do anything significant with resolving google.com. I mean, I know that it resolves to something like 145.234.34.45, I know there is a difference between TCP and UDP, and a few other things, but I pretty much just need to open sockets once in a while. I'm pretty much the goto person for hard problems whereever I've worked. I've written articles, and am writing a book. You are actively answering the question here - this is exactly the sort of thought process and reasoning that would be required. There are no specific facts - that's the point. And I can help but feel you've missed that.
- robertcope 12y agoYou're not unhirable, but if you applied for a senior web systems/operations position on my team, you probably wouldn't be hired. It's not because you're not a smart guy, but you don't have the experience we're looking for. Seems pretty easy to understand.
- eichin 12y agoAlso, if your resume says you're a web systems person or something like that, and you can't actually explain some details about DNS is doing, I have to wonder about the mismatch...
- Devthrowaway80 12y agoI could talk about this question for hours. You probably wouldn't want me building an autonomous robot or drone unless it was covered in pillows and safely contained far away from children and combustible liquids. Does this make you unhireable? No, not if you're upfront about it - "I haven't done much networking." OK, well given your work history I'm sure I could buy you a book or two and you'd be able to pick it up with no problems. That said, if the job was for a network engineer, you might not be at the top of the list. Or maybe you would be, who knows? I think a GOOD interviewer wouldn't pass you over because of one question. Am I unhireable as a drone engineer because I'd have to look up some basics of computer vision, control systems or other domain-specific stuff? No, probably not - I've done very well in a lot of different technical roles and I have a strong background in mathematics. That said, if you and I were up for the same job, I wouldn't be holding my breath for an offer letter. Nobody can know everything about anything. Smart interviewers understand that. People who don't aren't people you want to work with anyways.
- robertcope 12y agoContext is important. My team is a web systems team. I wouldn't expect someone that has written flight software to know the answers. I would expect someone that is advertising themselves as a senior web developer or web systems guy to.
- matthewmacleod 12y agoIt's not about the specific answers - it's about being able to reasonably construct a model about how a system might work, based on the knowledge you do have, and clearly communicate that model (including its limitations!) to another engineer. Sure, if you are a dedicated embedded device programmer who has never used a web browser or engaged in networking of any kind, then maybe you like unaccountably not be able to construct a compelling description of the process. But I find that unlikely; all I can suggest is that if you are hiring for such a position, then a similar question more tilted towards a particular field would be equally useful. The overall idea of an open-ended question like this is sound.
- bbarn 12y agoMy usual "Pass" answers end up being something specific to the stack a good .net developer should know, with a mutual agreement of just how awesome it is to think about the smallest steps and finding out how deep - even if in hobby terms - that person's drive to understand it is. There's no rattling off a "freebie" answer to it.
- nostrademons 12y agoThe other thing the question tests for is rigidity of thinking. You can answer the question - pick whatever part of the stack you're familiar with and explain what's going on there. If you're a web developer, talk about how the browser loads the HTML for the page, then pulls out the <link rel=stylesheet> tags and fetches CSS for them, then executes any <script> tags. It sees a <form> tag, then an <input type="text">, and uses that to render the query box. If you type and that and hit submit, it loads the page in the <form>'s action attribute. If you're a desktop software guy, talk about how Windows dispatches a WM_KEYDOWN event, which the browser's event loop picks up. It then initiates an HTTP request and renders Windows controls for every HTML element on the page. If you're a backend database guy, talk about how Google must run a query against a massively sharded database to look up the terms you just entered and fetch document URLs for each of them. It then merges the query results to AND your query terms together, and return them. Note that all of these answers are completely wrong (and basically the only way I could know this is because I worked on Google Search and actually know how it works). Google.com inlines styles into a single <style> tag; there are no <link> stylesheets, because we found the latency of the HTTP request outweighs the cache savings. I know less about how Windows works, but I wouldn't be surprised if under Windows7 and .NET the Win32 API is an emulation layer, and I know that most of the elements in modern browsers have no OS analogue and are rendered in shadow DOM via the browsers own box-and-painting mechanism. And there are no databases involved in Google; the whole web is stored in RAM and queries are matched & scored against everything (this itself is an oversimplification, but I'm limited to public information in what I can disclose...) It doesn't matter. The point of the question is to get you to reveal what you know. If you don't reveal anything, you fail. Most people, when faced with a problem that they don't know the answer to, shut up and don't do anything. For a lot of tech companies, you want to hire people who will move forward and do something, even if it's wrong, because you'll have more information to course correct with a wrong solution than with no solution.
- robertcope 12y agoBingo, you're hired. When do you want to start? Er.
- MichaelGG 12y ago
- Devthrowaway80 12y agoThe majority of applicants fail Fizzbuzz. It is a shitty question in the sense that it doesn't give you any information about whether you should hire somebody, but it does serve to send a very strong "don't hire" signal. Most people fail pretty much any technical question you can imagine. It's unreal.