Most active commenters
  • (9)
  • tptacek(6)
  • dkonofalski(5)
  • dekhn(5)
  • geofft(4)
  • throwaway2016a(4)
  • btilly(4)
  • lucb1e(3)
  • pjlegato(3)
  • rayiner(3)

←back to thread

1764 points fatihky | 198 comments | | HN request time: 3.899s | source | bottom
1. lordnacho ◴[] No.12701486[source]
I'm amazed he knew things in such detail. I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are? You just need to know what they're used for, and if you need the specifics, you'll find out with a single search. He seemed to know that as well though. Kernighan for bit twiddling algos, that kind of thing.

It's a bit strange to have someone non-technical interviewing a techie. You end up with stupid discussions like the one about Quicksort. If you point out qs is one of several things with the same big-O, you'll probably also get it "wrong". But the real problem is that a guy who is just reading off a sheet can't give any form of nuanced feedback. Was the guy blagging the sort algo question? Did he know if in detail? Does he know what the current state of research on that area is? There's no way to know that if your guy is just a recruiter, but I'm sure even a relatively junior coder would be able to tell if someone was just doing technical word salad.

I wonder what would happen if ordinary people recruited for medical doctor jobs? Would you be comfortable rejecting a guy who'd been in medical school for 10 years based on his not knowing what the "funny bone" is? Wouldn't you tell your boss that you felt a bit out of that league? It's amazing you can get someone to do this without them going red in the face.

replies(34): >>12701588 #>>12701606 #>>12701620 #>>12701625 #>>12701648 #>>12701659 #>>12701722 #>>12701725 #>>12701748 #>>12701796 #>>12701805 #>>12701854 #>>12701894 #>>12702003 #>>12702005 #>>12702106 #>>12702118 #>>12702186 #>>12702310 #>>12702312 #>>12702327 #>>12702439 #>>12702478 #>>12702496 #>>12702544 #>>12702566 #>>12702572 #>>12702655 #>>12702699 #>>12702757 #>>12702829 #>>12703332 #>>12706141 #>>12708605 #
2. drewg123 ◴[] No.12701588[source]
It tends to be incredibly helpful to know details like the length of a mac address and what tcp flags mean what if you're looking at an unformatted memory dump.

One example of how this can be handy is when doing low-level NIC bring up, I've read PCIe TLPs from a logic analyzer to correlate them to network traffic.

replies(2): >>12701608 #>>12701900 #
3. tptacek ◴[] No.12701606[source]
I knew all these answers too, because I was a developer in the 1990s.

There is absolutely no purpose to knowing off the top of your head how long an ethernet address is, or even what system call will retrieve an inode (his bickering over stat() "filling in" rather than "returning" was bogus, for what it's worth). The top Google search result for each of these questions has the answer. Knowing these things isn't part of being a practicing programmer; knowing how to find out is.

replies(9): >>12701685 #>>12701692 #>>12701960 #>>12702093 #>>12702100 #>>12702332 #>>12702334 #>>12702435 #>>12702610 #
4. tptacek ◴[] No.12701608[source]
s/know/have access to/g
5. segmondy ◴[] No.12701620[source]
People that have been around know such things. At one point, Richard Stevens (RIP) was god. Every programmer had a copy of TCP/IP illustrated, Advanced Unix Programming and Unix Network Programming. If you wanted to do anything network, you had to write your own servers, you had to understand the details. The breath of knowledge was wide and the depth was just as deep. Ask around on HN, and you will probably be shocked how many that know such things. :-)
replies(5): >>12702028 #>>12702262 #>>12702283 #>>12702548 #>>12703059 #
6. jackweirdy ◴[] No.12701625[source]
Medical Recruiter: "What are mitochondria?"

Applicant Doctor: "They're double membrane-bound organelles found in all eukaryotic organisms, commonly between 0.75 and 3μm in diameter, that generate most of the cell's supply of adenosine triphosphate"

Recruiter: "No. They are the powerhouse of the cell".

replies(8): >>12701773 #>>12701781 #>>12701849 #>>12702087 #>>12702180 #>>12702437 #>>12703185 #>>12704604 #
7. mgkimsal ◴[] No.12701648[source]
"I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are?"

This isn't even my domain, but I remember some of this stuff. I had to dig in to this area years ago, and was knee-deep in that level for several months debugging and configuring stuff. Some of it stays with you, even if you're not there any more.

For someone applying for a director of engineering, I'm kind of split as to whether this should be required "off the cuff" knowledge. Would certainly help, but seems it would depend on the culture of the company - how hands-on they expect director-level folks to be - some companies seem to want that, some don't.

8. imh ◴[] No.12701659[source]
>...but I'm sure even a relatively junior coder would be able to tell if someone was just doing technical word salad.

In interviews, I've had people give answers I'm not familiar with. The easy thing to do is to ask them to explain how their answer works. You get to vet whether it seems legit, and as a bonus see how good they are at communication in a genuine teaching moment.

9. mox1 ◴[] No.12701685[source]
The question was what function "returns" an inode.

Those functions return a error code, you pass in a stat structure and the function populates that structure.

He was saying (correctly), that they don't return (in the classic C sense) the inode. They return an error code.

To me that is a big difference...

int lstat(const char path, struct stat buf);

vs stat* lstat(const char *path);

2 completely different functions.

replies(5): >>12701767 #>>12701989 #>>12702007 #>>12702335 #>>12703194 #
10. gberger ◴[] No.12701692[source]
But what if Google is down and you are tasked with diagnosing it?
replies(6): >>12701779 #>>12701784 #>>12701800 #>>12701801 #>>12701838 #>>12702078 #
11. walshemj ◴[] No.12701722[source]
Anyone who's done any networking will know how long a mac addresses is
12. SomeCallMeTim ◴[] No.12701725[source]
I've had questions that drilled down into what bytes are in a TCP/IP packet on an interview. If you say you know about TCP/IP on a resume, it's fair game. FWIW I got all the bytes but the checksum; apparently no one ever remembers the checksum byte. :)

What's completely wrong with the situation is that the recruiter was saying "wrong" when he was giving detailed answers. The right solution is to have a non-skilled recruiter take careful notes, asking the candidate to repeat if necessary, in the cases where the candidate insists they know the answer.

Then only in cases where the candidate can't answer a question should it be marked as "wrong." In other cases the answers should be run past someone knowledgeable.

I've gone through a phone interview with Google myself, and it was nothing like this: I spoke with a real, skilled engineer, and there was nothing like a "gotcha" question where I had to guess the exact term he meant. Well, except where he asked "I bet you know what my next question is" and I didn't guess "How can the algorithm be faster?" But he didn't count that against me. :)

replies(1): >>12702030 #
13. smoyer ◴[] No.12701748[source]
I've been responsible for writing network code on embedded systems, you do end up memorizing lots of the structures and constants from the specification because you're constantly looking at them "on-the-wire" to make sure it's write (or debug it if it's wrong).
14. edanm ◴[] No.12701767{3}[source]
This strikes me as an entirely trivial point, the meaning of the question was pretty clear. It wasn't "what is the literal return value". Many APIs will return error codes, and people still talk about them as "returning" certain values colloquially. Of course, if the OP's answer would've been "it returns an error code :) but I assume you're talking about..." I would think that's fine.

Btw, that is the only thing I really disagreed with OP on, the rest seemed just ridiculous.

replies(5): >>12701862 #>>12701943 #>>12705596 #>>12706655 #>>12707078 #
15. ryandrake ◴[] No.12701773[source]
What are the components that make up a color?

"Well, it depends what color model you are using, which differentiates between additive and subtractive color mixing, the medium used (print, screen, etc.)...

No. It's Red, Green, and Blue.

replies(2): >>12701808 #>>12703240 #
16. xigency ◴[] No.12701779{3}[source]
Ask Jeeves? Being able to find it in a book might be useful, but when Google is down I bet they would like to get things up and running as soon as possible.
17. 67726e ◴[] No.12701781[source]
To be entirely objective, I have run into recruiters of that variety in my career. However I've also had plenty of recruiters that were able to pick up on one's deeper knowledge of a given concept and accept that as correct, even if it wasn't the "textbook answer" they were looking for.
replies(1): >>12702035 #
18. MaxfordAndSons ◴[] No.12701784{3}[source]
I lost it at this one. As if there is some single point of failure that's going to bring all of Google down, and some intrepid director of engineering has to inspect some TCP packets by hand to fix it.
replies(1): >>12701934 #
19. user5994461 ◴[] No.12701796[source]
> I'm amazed he knew things in such detail. I mean who would know just how long a MAC address is?

Not surprised by the questions. Most are [somewhat] common and not particular challenging.

I am surprised by the stupid counter-answers from the recruiter thought. This guy should not be giving phone interview.

20. sgift ◴[] No.12701800{3}[source]
Then you do what people did before Google when they didn't know some trivia: Use a book.
replies(1): >>12701905 #
21. aetherson ◴[] No.12701801{3}[source]
If they are trying to hire for a position that will somehow be on the line for what happens when all of Google is down, I for real hope that they get some higher-power questions into that interview.

But, obvs, the answer is that you Bing it.

replies(1): >>12703686 #
22. dkonofalski ◴[] No.12701805[source]
I'm just reaching here, but is there a chance at all that the test wasn't really about whether or not he knew the correct answers but more that he knew the correct answers and was able to simplify them to the extent that a non-technical user could understand and compare them? I have a feeling that Google is far more interested in someone being able to get their point across than someone that just wants to sit there and argue about whether or not an answer is right. Just based on reading his responses, I got a condescending vibe and a vibe that this guy always has to be right and would work terribly with people of different levels of skills. At a Director-level position, that kind of skill is the most basic skill you need to have.
replies(7): >>12701872 #>>12701881 #>>12702037 #>>12702072 #>>12702382 #>>12702504 #>>12702688 #
23. chrismorgan ◴[] No.12701808{3}[source]
But hang on, the primary colours are red, yellow and blue! I know, they told me so in primary school.
replies(6): >>12702123 #>>12702196 #>>12702221 #>>12702820 #>>12704256 #>>12706306 #
24. gbjones ◴[] No.12701838{3}[source]
Is that a trick question? Open APUE, ``apropos inode``, ...
25. nerdponx ◴[] No.12701849[source]
I had something this happen to me in an interview. Miserable experience.
26. user5994461 ◴[] No.12701854[source]
> I wonder what would happen if ordinary people recruited for medical doctor jobs? Would you be comfortable rejecting a guy who'd been in medical school for 10 years based on his not knowing what the "funny bone" is? Wouldn't you tell your boss that you felt a bit out of that league? It's amazing you can get someone to do this without them going red in the face.

The medical recruiter asks to see the diploma. The doctor shows his degree and gets the job.

replies(1): >>12701979 #
27. StavrosK ◴[] No.12701862{4}[source]
Yes, but the recruiter should have said "oh, you're technically right (the best futurama), next question".
28. justicezyx ◴[] No.12701872[source]
That's not the problem, a non-tech recruiter cannot assess the correctness. Even the simplification can be done, which I disagree, the answer will be rejected because it's not a literal match. That, is the problem.
replies(2): >>12701961 #>>12702150 #
29. FoeNyx ◴[] No.12701881[source]
> this guy always has to be right and would work terribly with people of different levels of skills

Are you talking about the recruiter?

replies(1): >>12702126 #
30. trelliscoded ◴[] No.12701894[source]
If you've had to troubleshoot network corruption at scale, you memorize packet details real fast :)
31. loeg ◴[] No.12701900[source]
I bet you spent more than 30 minutes (typical phone screen length) looking at TLPs. Spending 2 minutes to google DLLP/TLP packet structure is not unreasonable.
32. ◴[] No.12701905{4}[source]
33. ryandrake ◴[] No.12701934{4}[source]
This is where I threw up my hands too. The Director of Engineering does not need to know the difference between SIGTERM and SIGKILL, or how many bytes are in a MAC address. I guess it's a nice bonus if he does, but he'll spending 10 hours per day in meetings talking about roadmaps, shielding his team from the execs, and removing productivity roadblocks. "Third engineer from the left" is doing the packet inspection--ask HIM about SYN and ACK.
replies(1): >>12702241 #
34. jknoepfler ◴[] No.12701943{4}[source]
There's a precise distinction, and thinking about it as "returning" anything other than an error code is chummy human thinking rather than the sort of precise knowledge the test was (supposedly) looking for. The question was actually worse than asking "I'm thinking of a number between 1 and 10, what is it?" because rather than applying a random filter to candidates, it punished the candidate for having precise knowledge.
replies(2): >>12702249 #>>12702781 #
35. googlya ◴[] No.12701960[source]
Not agreeing with the recruiters attitude but "if Google is down you will need to know this to diagnose what the problem is." was his comment. In that case the developer should have cheat-sheets printed on their desks.
replies(1): >>12701974 #
36. CoryG89 ◴[] No.12701961{3}[source]
Yeah I agree. I think one issue is also the test. For a lot of these things, as with most things, there is a short answer and a long answer. I think by the second or third question I would have picked up on the fact that the recruiter didn't really know what he was talking about and was looking for the short textbook answer. Seems like the author refused to or couldn't do that.
37. apathy ◴[] No.12701974{3}[source]
if Google is down you'll have other problems (SYN, ACK, SYNACK won't help much with the DDoS that's killing it)
38. lordnacho ◴[] No.12701979[source]
"Diploma says DO, not MD. You don't get the job."

https://en.wikipedia.org/wiki/Comparison_of_MD_and_DO_in_the...

replies(1): >>12703359 #
39. tptacek ◴[] No.12701989{3}[source]
In C, what stat does is how you return multiple values from a function.

lstat has the same signature as stat: it passes the stat structure back through an output pointer.

replies(2): >>12702014 #>>12703640 #
40. lucb1e ◴[] No.12702003[source]
> I mean who would know just how long a MAC address is?

Uh, my main languages are PHP and Python (high level stuff) and I'm a student (not someone with 10 years of experience) but I knew that. 3 bytes for the vendor block, 3 bytes for the device.

> Or what the actual SYN/ACK etc tcp flags are?

Yeah the actual bytes, who ever uses that? A MAC address I've seen plenty of times in my life as hex, and I've seen the TCP setup flags being exchanged plenty of times in Wireshark and looked up the hex once when I was implementing TCP from scratch, but I still wouldn't expect anyone to know that.

> You just need to know what they're used for

Agreed on that. I wouldn't blame anyone for not knowing the size of a MAC address, I just didn't think that one is that obscure.

replies(3): >>12702298 #>>12702317 #>>12705991 #
41. noufalibrahim ◴[] No.12702005[source]
My father is a civil engineer and late in his career, he interviewed for a senior position at a construction company. He figured out that the interviewer didn't know what he was talking about early on the interview and confronted him with that. The interview came to a end, he was put in touch with a senior engineer at the company. He didn't take the job for other reasons. I don't think this kind of rubbish would fly in any other industry.
replies(1): >>12704378 #
42. ◴[] No.12702007{3}[source]
43. philjr ◴[] No.12702014{4}[source]
But not if you're a literal lunatic who thinks that because you literally used the word return with an error code that's what it returns. And. Only. That.
replies(1): >>12702932 #
44. henrik_w ◴[] No.12702028[source]
UNP is excellent! Haven't opened it in a long time though.
45. sidazad ◴[] No.12702030[source]
The right solution is to have a technical person conduct this test.
replies(3): >>12702491 #>>12703106 #>>12704301 #
46. wingless ◴[] No.12702035{3}[source]
You don't even have to give feedback in an interview. Just let them answer your question and if it's too detailed, write it down and look it up later. In fact, Google usually doesn't give back any feedback during or after their onsite interviews.
47. sllabres ◴[] No.12702037[source]
Don't think so, or would you consider the O(n) notation something a non technical user would want to follow?
replies(1): >>12702165 #
48. sidazad ◴[] No.12702072[source]
I can't fathom a scenario where a tech person would need to dump down something like SYN-ACKs and iNodes for a non-technical person. It's one thing if you are trying to explain performance trade-offs to non-technical users or colleagues. But not lower level protocol details.
49. teraflop ◴[] No.12702078{3}[source]
I bet Google has their own internal "backup Google", for just such an occasion.
replies(1): >>12708128 #
50. smrtinsert ◴[] No.12702087[source]
I get it, but do doctors really know what the size of mitochondria are? I can't think of anything any further from the realm of their day to day.
replies(2): >>12702360 #>>12702466 #
51. danvasquez29 ◴[] No.12702093[source]
He wouldn't need to know it for the job, but as others have said he probably would know it if he really had the experience on his resume. That's the value for me sometimes in questions like that, especially in an initial phone screen, to decipher if you're bullshitting or exaggerating your credentials.
52. nickpsecurity ◴[] No.12702100[source]
"I knew all these answers too, because I was a developer in the 1990s."

I think you're onto something greater. Maybe Google should hire more smart people who were developing in the 1990's as they're a nice, middle ground between ambitious, young folks and the been-there-done-that greybeards. Them realizing such people already know all the shit they're trying to teach their developers might be way to sneak older people into these tech firms. Haha.

53. WillPostForFood ◴[] No.12702106[source]
I'm amazed people actually believe the account is accurate. The guy failed the interview, and goes to write a blog post to lash out at google (and try to mess up future interviews for them), So of course he write it to make him look good, and the questioner bad.

We will stop here because it's obvious that you don't have the necessary skills to write or review network applications. You should learn the Linux function calls, how the TCP/IP stack works, and what big-O means to eventually qualify if you are interviewed at a later time.

Come on Hacker News, I know you hate recruiters, but do you really think that happened?

replies(2): >>12702576 #>>12703021 #
54. nickpsecurity ◴[] No.12702118[source]
"I'm amazed he knew things in such detail. I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are?"

I was more impressed by how simply he explained many of them in real-world terms. Especially countering Big O. That plus what he's already built indicates he's exactly the kind of person to direct the sort of projects they're building. That they filtered him with this garbage Q&A speaks volumes about Google's ineffective hiring. Plus, indicates what kind of people might have made it into the organization.

55. cwilkes ◴[] No.12702123{4}[source]
Those primary colors are real to me dammit!

/colorblind

56. dkonofalski ◴[] No.12702126{3}[source]
No, I'm talking about the person that wrote the post. Since this was a phone interview, this is a paraphrase of what happened, written by the post author. The whole thing smacks of "I knew way more than that person, they were clearly an idiot".
replies(1): >>12702731 #
57. dkonofalski ◴[] No.12702150{3}[source]
That's not the point of the test. The point of the test is to see whether or not the person attempted to get on the level of the person they were talking to. I have a feeling that the interview would have kept going had the author not started to argue. They're looking for someone that can translate, not someone that will talk down and argue just so that they can be "right".
replies(1): >>12702425 #
58. dkonofalski ◴[] No.12702165{3}[source]
I don't think that's the point, though. The answers and questions are meaningless to the test. It's how the person addresses the questions and answers that matters in the test. Someone else posted that the person interviewing the author is typically a psychologist in this test. That, to me, means that the technical correctness of the answers is not relevant and that an actual technical engineering screening comes after it's determined that the person is a culture/personality match.
replies(1): >>12702758 #
59. beanbragade ◴[] No.12702180[source]
Experienced this more times than I wish to admit.
60. rcarmo ◴[] No.12702186[source]
Actually, most people with a networking background would know this kind of detail (and more). It's the relevance (and appraisal of answers) that is shocking.
61. madamelic ◴[] No.12702196{4}[source]
I legitimately had a huge argument with my (former) roommate over primary colors.

She was more artsy, I was insistent that the primary colors were RGB, she was insistent that they were RYB. We googled. We were both right in some senses.

replies(3): >>12702319 #>>12702340 #>>12702909 #
62. ggambetta ◴[] No.12702221{4}[source]
Not sure how much you're kidding, but... that's true for a subtractive colour system, where you start with a white sheet of paper (i.e. reflects every wavelength) and subtract colours (filter out wavelengths) by painting over the paper with crayons. For an additive colour system, where you start with a black monitor screen, and you add wavelengths, the primaries are RGB.
replies(3): >>12702421 #>>12702446 #>>12704170 #
63. geofft ◴[] No.12702241{5}[source]
Reading more closely, it sounds like they are not interviewing him for a director of engineering position; it just sounds like he thinks his current role, CEO-who-writes-code of a very small software company (http://www.gwan.com/about), qualifies him for a director-of-engineering-level position. He's probably being interviewed for an SRE team lead or thereabouts.

Why he's being interviewed for that position is a different question entirely, and I can imagine Google being totally right or totally wrong.

replies(1): >>12702540 #
64. alttab ◴[] No.12702249{5}[source]
The difference is memory management, completely different. Don't ask me for a function that "Returns" something in a technical interview and when I call you out on it say I'm wrong, when I'm not.

It's a technical interview, the question should have been technically correct. "What function passes by-reference copies of inodes?"

replies(1): >>12702778 #
65. pjlegato ◴[] No.12702262[source]
And then, the world developed robust, well-maintained, open source libraries that do all of that for you. Now, in 99% of commercial software engineering, you don't actually need to know any of those details, in the same sense that you no longer need to know exactly how many transistors and diodes are used to build the adder on the CPU. It simply no longer matters in almost all cases. Your time is much better spent moving on to higher level problems.

If you're interviewing for the rare 1% case where the job will actually require you to tinker with a TCP stack, then by all means ask about those details. For 99% of programming jobs today, it's irrelevant trivia used as nothing more than an ego measuring device.

replies(3): >>12702545 #>>12702839 #>>12702861 #
66. noir_lord ◴[] No.12702283[source]
Yep, I was doing network programming back in the late 90's and you pretty much had to have a good grasp of winsock and linux network calls and responses because the level of abstraction was much lower.

That said I can't recall any of that stuff mattering in the stuff I do for work for quite some time and most of it is a google search away.

That interview was just weird, it was like asking the boiler pressure for a steam train to someone who was a master engineer working on electric trains.

67. throwaway2016a ◴[] No.12702298[source]
> I'm a student (not someone with 10 years of experience) but I knew that. 3 bytes for the vendor block, 3 bytes for the device.

That is why you know the answer. Come back in 10 years and let us know if you still know it. What you think might be mainstream in a computer science class are rarely used in application. And if they are they can be easily looked up.

I used to know the exact effective distance of a CATV cable when I was a student. Useful? Sure. Something I need to remember for the rest of my life? Definitely not.

As another example, in 17+ years writing ISO level 7 programs, I have never once needed to use the Mac address.

replies(4): >>12702458 #>>12702643 #>>12702811 #>>12702832 #
68. meshko ◴[] No.12702310[source]
1) His level of knowledge is reasonable for someone who does networking programming full time

2) We are getting description from him. When I interviewed at Google, they asked me to prove that P is equal to NP, and I did, but they said that it took me longer than allotted 45 minutes and I didn't get an offer.

replies(5): >>12702404 #>>12702434 #>>12702531 #>>12702771 #>>12705565 #
69. dsr_ ◴[] No.12702312[source]
"who would know just how long a MAC address is?"

I've been looking at them on NICs, adding them to DHCP databases and using them for simple authorizations in iptables (and prior equivalents) since, oh, 1992 or thereabouts. They weren't new then.

It would take me a moment to count them in my head, that's all. "aa, bb, cc, dd, ee, ff -- that's six bytes".

70. gaastonsr ◴[] No.12702317[source]
> Uh, my main languages are PHP and Python (high level stuff) and I'm a student (not someone with 10 years of experience) but I knew that. 3 bytes for the vendor block, 3 bytes for the device.

Thanks for the refresher! I knew that too when I was in college. Good luck remembering that 5 years from now :)

replies(2): >>12702645 #>>12703294 #
71. snovv_crash ◴[] No.12702319{5}[source]
CMYK would be right. RYB means you can't produce cyan or magenta or vivid purples or pinks.
72. ◴[] No.12702327[source]
73. fefe23 ◴[] No.12702332[source]
Technically stat neither returns nor fills in the inode, because the actual structure of the inode can vary by filesystem, and the inode will contain more fields than struct stat.

In a recruiting situation, if the recruiter is going all "right and wrong" on the interviewee, they should know these dirty details.

I also disagree on the ethernet address length. You know how long IPv4 addresses are, you know how long IPv6 addresses are, why would it be so extraordinary to also know how long MAC adresses are?

I think it could be useful to find out in an interview whether the applicant knows stuff because they have actually implemented low-level code and gained an intricate understanding, or whether they just did used some high level APIs and were never interested in more details than "I have a handle right here, it does all I need". For some positions that would be an important distinction.

Personally, if I were interviewing people, I'd hire the guy that explains something to me that I did not know, but that I find interesting and would have attempted to understand, too.

74. throwaway2016a ◴[] No.12702334[source]
> his bickering over stat() "filling in" rather than "returning" was bogus, for what it's worth

While I agree, I have seen interviewers where if he answered "fstat" they would have come back with "Wrong! fstat passes the structure back by reference, it does not return it!"

With this style of interview I can't blame him for thinking it might be a trick question and then trying to explain why he didn't say those other functions as an answer.

75. mortehu ◴[] No.12702335{3}[source]
I think the problem was that he didn't update his knowledge about what an inode is after the interviewer told him. He still thought it was an integer value, as opposed to a metadata structure. If inode meant inode number, it works be reasonable to assume there was a function that would return it.
76. tomsaffell ◴[] No.12702340{5}[source]
Good job you didn't have a third roommate who worked in printing...
replies(1): >>12704116 #
77. pmiller2 ◴[] No.12702360{3}[source]
Someone specialized in genetics or mitochondrial disease might. Otherwise, I'd guess probably not.
78. vmasto ◴[] No.12702404[source]
Oh hey what are you going to do with your million?
79. jcl ◴[] No.12702421{5}[source]
...and, strictly speaking, the subtractive colors that closest match the typical human eye are cyan, magenta, and yellow -- the "CMY" of CMYK printer inks. Using red, yellow, and blue as subtractive colors gets you a big enough gamut for elementary school color mixing, but it won't give you as big a range of colors as CMY.
replies(2): >>12703157 #>>12707041 #
80. justicezyx ◴[] No.12702425{4}[source]
I am a bit confused.

I did not see any argument here from the statement in the article. The recruiter clearly had little clue about what is right and wrong. And the way the recruiter assess the answer by throwing right/wrong seems more rude to me compared to the author "wanting to be right".

Please do not speculating based on something that is not present in the article.

I had done similar interviews before, the recruiters I worked with did not show the same level incompetence as this one. When I want to be more specific on details, they would suggest that they think it's enough and move on. Not like this recruiter who just throw a 'wrong'.

replies(1): >>12702903 #
81. gautamdivgi ◴[] No.12702434[source]
You proved P = NP??? In a little more than 45 mins or did you misunderstand the question?
replies(3): >>12702464 #>>12702482 #>>12702484 #
82. rayiner ◴[] No.12702435[source]
I don't think these questions are unreasonable as a spam filter. Yeah, they're trivia, but if you had actually worked in that space, I'd be surprised if you didn't know a lot of that trivia just by virtue of exposure.

The rejoinder, of course, is that it's probably misguided to structure your recruiting around a spam filter.

replies(1): >>12702443 #
83. animex ◴[] No.12702437[source]
Yay for Biology 10.
84. pjungwir ◴[] No.12702439[source]
I was interviewed once by someone who would cut me off after just a sentence or two. He asked a fairly open question like, "Tell me about hash tables." I knew I should have just said, "Lookups are constant-time," but I started off with a description of their behavior instead, and sure enough he cut me off and said, "Lookups are constant-time." Some people are just not very good interviewers, but also some tech people's rules are too iron, with no exceptions, like they can memorize but not think. They say interviews are a two-way communication, and that one certainly was. :-)
replies(1): >>12702956 #
85. tptacek ◴[] No.12702443{3}[source]
The length of an ethernet address is a trivia question. It's a good way to score a board game. Filtering out candidates based on it is lunacy.
replies(1): >>12702546 #
86. ◴[] No.12702446{5}[source]
87. wpietri ◴[] No.12702458{3}[source]
> Come back in 10 years and let us know if you still know it.

I've never taken a CS class, and I still know it. I've just stared at enough packet dumps and debugged enough issues that it happens to stick.

I think it's a stupid question to ask as a screener, as it tests familiarity with trivia. It's the kind of thing I'd be happy to see that somebody knew, but it's never something I'd downcheck them for not knowing. It could just mean, as in your case, that there deep knowledge is somewhere else.

replies(1): >>12702550 #
88. mcphage ◴[] No.12702464{3}[source]
His point was that, hearing only one side of the story, the OP could claim whatever they wanted.
89. dekhn ◴[] No.12702466{3}[source]
everybody who is a doctor aced intro to biology because they were premeds. That means they looked at plenty of cell bio pictures with mitochondria (properly scaled to the cell size).

Doctors know a ton of random crap tangentially related to their jobs that they were forced to memorize.

90. federicoponzi ◴[] No.12702478[source]
Same things I thought. His answers are amazing!
91. ◴[] No.12702482{3}[source]
92. krapp ◴[] No.12702484{3}[source]
If I were asked that question, my answer would be that obviously P != NP because the former doesn't have an N at the front.

The pain of being tossed out onto the pavement would totally be worth it.

replies(2): >>12703589 #>>12706001 #
93. ◴[] No.12702491{3}[source]
94. jneal ◴[] No.12702496[source]
It's actually pretty sad. It seems to weed out the smartest folks so that you only hire those mediocre enough to not understand these problems within the hiring test.
95. ◴[] No.12702504[source]
96. dekhn ◴[] No.12702531[source]
P = NP if N = 1, or P is 0. That doesn't take 45 minutes.
97. btilly ◴[] No.12702540{6}[source]
How can you imagine Google being totally right here? The disconnect between the questions being asked and the interviewer's lack of knowledge made the interview a waste of time no matter WHAT role they are interviewing for.

Take, for example, the sorting question. "Why is QuickSort the best sorting algorithm?" The answer being looked for was, "It has the best Big O."

And this is wrong. Its average case is O(n log(n)). Its worst case is O(n^2). Which do you call its big-O? Moving on, the average case of O(n log(n)) is matched by a wide variety of sorting algorithms. How do you choose one?

Here is a better answer.

QuickSort is a very simple to implement algorithm which achieves the lowest average number of operations on a randomly sorted list. Which is why it is so widely adopted despite sometimes being very slow.

However Timsort appears to be the fastest general purpose sorting algorithm for the mix of random and partially sorted lists seen in practice.

When I tend to notice that sorting is slow, generally that's a larger workload where some type of merge sort would be appropriate.

replies(2): >>12702726 #>>12703119 #
98. elcritch ◴[] No.12702544[source]
Personally, these questions and the way the recruiter asked them reaffirm my view that Google would not be a place I'd like to work at as a experienced software developer. First the recruiter's lack of technical knowledge points toward a beaurocratic or management first mindset common (necessary?) in such a large company. Second, the questions and expected answers seem biased toward just graduating but smart engineers who don't actually have experience to realize the subtleties present in complex systems. The recent lawsuits regarding age discrimination reinforce the notion that this interview setup is biased (intentional or not) toward inexperienced and thus likely younger applicants. Perhaps that's not a bad thing per se as Google's corporate development style likely would handle inexperienced but smart developers who can "mold" into the system better. Or it could be more nefarious as to lower salaries by getting younger devs. In reality, probably a mix of both.
replies(2): >>12702708 #>>12703855 #
99. rayiner ◴[] No.12702546{4}[source]
I agree with the first and second sentence. As to the third: what would be your thought process as to someone who claimed to be a network programmer on the phone but couldn't answer most of those questions?
replies(3): >>12703003 #>>12703536 #>>12704492 #
100. vvanders ◴[] No.12702545{3}[source]
None of that matters, until it does :).

I feel like I've seen 2-3 articles alone in the last month that has rediscovered head-of-line blocking and UDP. I'd say 1/10 engineers I talk to even know what cache aware datastructures are.

The thing that separates someone who can just string together whatever they find on npm to people who build real systems is this deep understanding. You're not going to need this for your standard LoB apps. However if you're in the business of building software you're definitely going to want people like this.

replies(1): >>12702730 #
101. ivanhoe ◴[] No.12702548[source]
The amazing part here is that so many people still remembers all those little details. I still know how it works, but honestly I forgot all the details long time ago.
replies(1): >>12703521 #
102. throwaway2016a ◴[] No.12702550{4}[source]
> I've never taken a CS class, and I still know it. I've just stared at enough packet dumps and debugged enough issues that it happens to stick.

We are all a product of our environment. And there is certainly a chance in 10 years the OP will still know how many bytes are in a MAC address. I only mentioned computer science based on the "student" part of the quote.

Personally I've been spoiled by working on higher level stuff so if I do look at a packet dump I usually filter the packet headers out. But again, we're a product of our environment and asking questions that a reasonable skilled engineer might go their entire career without knowing the answer to except in that interview is a bit suspect and will likely disqualify people that would be otherwise great for the job.

103. jxramos ◴[] No.12702566[source]
I think the interviewee after realizing the shortcomings of the tester's understanding and the author of said "right answers" should have interrupted or ended the probing after a few red flags and politely suggested something along the following lines...

"Look I get the gist of what this screening is trying to do but please write down my answers and feed them to the technical staff who authored this Q&A and have them verify their misunderstandings and have them get back to me please. I am very confident you all have subtle details mixed up and could benefit by a strong candidate who understands such details with a higher level of fidelity."

Guess its another loss given to the recruitment focus on avoiding false positives over false negatives.

104. skywhopper ◴[] No.12702572[source]
> I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are? You just need to know what they're used for

Depends on what you actually do in your job, I suppose. If you use that information regularly or troubleshoot networks regularly you would soon enough memorize it.

> and if you need the specifics, you'll find out with a single search.

Someone doing network programming _does_ need the specifics.

105. ◴[] No.12702576[source]
106. ktsmith ◴[] No.12702610[source]
What's bogus about his comment on stat() exactly. It literally returns an int and fills in the struct that it takes as a parameter. If he had no idea what it did he could check Google or the man pages which are going to give him some variety of the same answer such as the two examples below.

Linux:

    int stat(const char *path, struct stat *buf);

    stat() stats the file pointed to by path and fills in buf.
Mac OS X 10.11:

    int stat(const char *restrict path, struct stat *restrict buf);

    The stat() function obtains information about the file pointed to by path.  
    Read, write or execute permission of the named file is not
    required, but all directories listed in the path name leading to the file must be searchable.
It may be pedantic but stat definitely doesn't "return" an inode. One of the problems with technical interviews like this is you often have no idea what the interviewer is really looking for. Some might just want to know what you would use to get the information about an inode and another might be seeing how you describe it as a test of your knowledge of pointers or something. Often it's impossible to know and that could have been easily a trick question where the right answer is "there isn't one but you can use stat to get this information as it takes a struct pointer and will place the information into that struct". Of course you know that better than most or you wouldn't have made stockfigher.
107. singham ◴[] No.12702643{3}[source]
This reminds me of the time when I liked physics very much. I used to memorize 10 digits of speed of light and feel very proud.
108. varjag ◴[] No.12702645{3}[source]
Still know that 20 years down the line, but then I do networking stuff routinely. If the candidate was interviewing for anything network related (the article is down atm), it's fair game.
109. TYPE_FASTER ◴[] No.12702655[source]
Understanding SYN/ACK, and what they are used for, can be quite useful in troubleshooting networking issues so I can see why this would be useful in a SRE or other role that dealt heavily with communication.
110. JamesBarney ◴[] No.12702688[source]
If this was the point of the test he should have been told this was the point of the test. Gotcha's make poor interview questions.
111. esalman ◴[] No.12702699[source]
It happens because great developers do not do recruiters' job :)
112. Periodic ◴[] No.12702708[source]
I wouldn't be surprised if the interview process for experienced engineers is unrefined. At this point in Google's lifecycle most of the qualified, experienced engineers who would want to work at Google already do. There are orders of magnitude more new-grad engineers to interview and so it makes sense that they would lack the practice and refinement on those candidates, even if those are the most valuable candidates to hire. The recruiter might have just been confused and gave him the standard list for any "technical" job that they have to use for new-grads and so cannot ask things with nuance.

When I was an interviewer at Google it felt like 90%+ of interviews were with candidates who had less than four years of experience. Probably half were fresh out of college. After the fifth candidate in a row who can't do simple recursion or algorithmic analysis (and I mean simple) you get pretty discouraged. In one phone interview I got to interview an experienced engineer with over twenty years of experience in C. He completed the question I usually have to spend 45 minutes on with a new-grad in <10 minutes. It was probably my favorite interview of all time because I actually got to discuss the subtleties and he reaffirmed that I could maintain high standards.

replies(2): >>12702992 #>>12705353 #
113. geofft ◴[] No.12702726{7}[source]
I can imagine Google being totally right because I can imagine the interviewee not accurately remembering the conversation here. (I expect, for instance, that he did not write down the interview as it was happening.) In fact, conditioned on the assumption that Google is right that this guy's experience is better suited for SRE than director-level, it is pretty likely that he did not understand the questions being asked / thought the questions were beneath him / etc. and therefore wrote them down inaccurately.

For instance, perhaps the interviewer asked "What makes quicksort a good sorting method," instead of "What makes quicksort the best sorting method"—a very small difference in phrasing. In that case, the answer of "It's not always the best, or even suitable" is still technically true, but much more wrong. (And an answer like the one you started with, "Its average case is O(n log (n)), its worst case is O(n^2)," would have been enough to pass... but sitting on the phone and arguing about storage topology is itself a failure.)

As I mentioned in another comment https://news.ycombinator.com/item?id=12702130 , my (five-year-old, faulty) memory of Google's SRE phone interview is that they asked another question here with a very small but important phrasing difference: "What is the signal sent by the kill command" instead of "What is the kill signal". If you make that change, the interviewee's answer of "SIGKILL" becomes wrong, and the interviewer is right to insist on SIGTERM (which would otherwise make no sense). It is a quite literal game of telephone.

(Again, I can also imagine Google being totally wrong and the interviewer mangling the questions.)

replies(2): >>12703183 #>>12704606 #
114. pjlegato ◴[] No.12702730{4}[source]
There's a vast middle ground between stringing together npm and rewriting the TCP stack. Most jobs that exist today fall firmly in that middle ground.

Trying to find the TCP stack engineer to build your app is like hiring a petrochemical engineer to do oil changes. If your pockets are as deep as Google's, yes, you can do that, but it's by no means necessary.

115. lkbm ◴[] No.12702731{4}[source]
It strikes me as more along the lines of "I knew way more than that person, and they were completely oblivious to the fact that they didn't know this stuff, AND they were in a position that required them to know stuff."

I'm fine working with non-technical people (or who don't know any given field), but I wouldn't be fine working with those people if they were insistent that they did know about these things about which they actually had no clue, or if they were in a position where they really need to know this stuff.

I have coworkers who don't know how to use the command line, but they aren't engineers and they don't try to tell me what commands to run when I pull up a console, so it's fine. If they keep insisting that I should use "dir" and that "ls" is wrong, that would be a problem. If they were the CTO, that would be a problem.

When we hire engineers for customer support, the non-technical operations guy interviews them, but he always has at least one engineer do a portion of the interview because he knows he's not fully qualified to judge someone's technical chops.

The OP isn't being condescending just because someone didn't know stuff. It's because someone didn't know stuff, but because they acted like they did. You want to be insufferable, insist you know better than the experts in a given field.

116. mirekrusin ◴[] No.12702757[source]
He's one of the best programmers you can get (in the world) when it comes to networking and friends. Gwan is less known around because it's not OSS but I believe still achieves unmatched performance.

This interview must be some kind of a mistake. It's like testing Richard Feynman's knowledge with questions about multiplication table (where you have wrong answers on your table).

It's so stupid that it's almost not possible to laugh.

replies(2): >>12703720 #>>12706530 #
117. sllabres ◴[] No.12702758{4}[source]
Then the final reply to "learn about ..." would be a bald lie.
118. ◴[] No.12702771[source]
119. bpchaps ◴[] No.12702778{6}[source]
My worst offense of this was for a linux admin position when asked from another abmin about how to list connections on a machine. My answer was "lsof -i, since I've found it's easiest to pull granular information."

"lsof just prints open files... you would use netstat, not lsof."

I tried correcting him, but he wouldn't listen and ended the call soon after.

I never received a call back.

replies(1): >>12703597 #
120. edanm ◴[] No.12702781{5}[source]
Yes, but we are all chummy humans with our chummy human thinking :) We are generally gifted with the ability of shorthand, context, and understanding that surpasses a purely technical understanding of words, and this is exactly the kind of situation where that helps.

I personally wouldn't want to work with someone who wasn't able to understand what I mean (in such an obvious case, at least) and wasn't able to answer to that meaning.

(Of course, I'd also personally prefer someone who would point out that this is inaccurate, but do so in a charming and off-hand way, to make me feel comfortable. A high bar, maybe, but for a director that's definitely a bar they should clear).

121. ryukafalz ◴[] No.12702811{3}[source]
I don't have the length of a MAC address memorized (because why would I need to?), but I know what one looks like, so I can pretty quickly work it out in my head. A hex digit is four bits...

Maybe 10 years from now I'll have forgotten everything about the hex/binary/octal representations of numbers, but I certainly hope not!

122. nothis ◴[] No.12702820{4}[source]
Totally off topic (except for the fact that "correctness" of an answer can be a deeper problem than checking against a list) but when you look at how the cones in your eyes are connected to the brain to actually transfer color information it's indeed closer to Red-Green/Yellow-Blue (as described in Lab*). That's why we intuitively include yellow as a "primary color" even though you can just use RGB to describe it.
123. iconjack ◴[] No.12702829[source]
Who would know just how long a MAC address is? Jeez man, these things are literally written as 6 bytes separated by colons. Asking a network engineer this question is about like asking a postman how long a zipcode is.
124. lucb1e ◴[] No.12702832{3}[source]
> What you think might be mainstream in a computer science class are rarely used in application.

Uh actually my classes didn't teach me that. Side projects did.

replies(1): >>12703382 #
125. chetanahuja ◴[] No.12702839{3}[source]
"And then, the world developed robust, well-maintained, open source libraries that do all of that for you. Now, in 99% of commercial software engineering, you don't actually need to know any of those details.."

And that, ladies and gentlemen, is how we ended up with npm.

replies(1): >>12721750 #
126. chetanahuja ◴[] No.12702861{3}[source]
"Now, in 99% of commercial software engineering"

Whatever this thing... this... stringing together a 100 random github projects to get a webpage that kinda of works about 80% of the time is called -- please let's agree not to call it "software engineering".

replies(1): >>12716456 #
127. dkonofalski ◴[] No.12702903{5}[source]
I'm not speculating. This all took place during a phone call so the post is completely the interpretation of the author with regard to how the recruiter answered the questions. For all we know, the author just paraphrased everything as "That's wrong" to make the recruiter look like a simpleton so that they themselves wouldn't look silly for not passing. We have no other information except for 1 side that happens to be the author's side. Others have commented that they took this same test and were told after that the person doing the interview was a psychologist that wasn't testing technical skill. That's where my speculation is based.
128. AnimalMuppet ◴[] No.12702909{5}[source]
I had the same argument with my wife (fortunately not huge...)
129. gknoy ◴[] No.12702932{5}[source]
To be fair, the rest of the questions were demonstrably pedantic, and I would completely expect a question like this to be on the bill of fare:

   Q: What does lstat return?
   A: A struct
   >> Wrong, it returns an error code
That type of technical specificity about what well-known functions return is absolutely something I've heard people use as an interview question. Knowing it returns an error code (rather than the value you want) seems like a good indicator of "has actually coded in C" (whereas many other languages return the value you want and raise an exception if it had an error).
130. AnimalMuppet ◴[] No.12702956[source]
> ... like they can memorize but not think.

Which is really bad, when they're trying to hire people for a job where thinking is the fundamental skill...

131. Retric ◴[] No.12702992{3}[source]
Google is still a tiny company relative to the US economy. They might be slightly above average on some metrics, but that’s about it. Large enough they have plenty of idiots, small enough that most smart people don't work there.

As to high standards, you are testing for things that have very little to do with someone being good at the job. High arbitrary standards often remove the most talented people who generally don't have the same background as you.

EX: Suppose you where looking for a CEO, well having a collage degree seems like a reasonable requirement. However, a surprising number the best CEOs don't.

132. pcwalton ◴[] No.12703003{5}[source]
I'm a network programmer and I forgot exactly how long an Ethernet address is. (I would have guessed 6 based on memory, but I wouldn't be 100% sure.) It's an opaque structure to me; if I need the size I'll sizeof it, which is clearer anyway.

Maybe I'm a bad programmer, but I don't feel like I would be a better one with that specific fact committed to memory. I dunno.

133. rockdoe ◴[] No.12703021[source]
It's true this is probably not exactly what happened, but Google does certainly ask these questions in phone screens and the interviewers read the correct response off of a cheatsheet.

The fact that several Google people posting here literally can't believe this is true shows how fucked up their process is.

replies(1): >>12704189 #
134. alasdair_ ◴[] No.12703059[source]
Is TCP/IP Illustrated still the gold standard of books on the subject? I read it fifteen or twenty years ago and would like to finally own a copy (I borrowed it from the library), but not if there is something better.
135. rockdoe ◴[] No.12703106{3}[source]
This costs money. As long as Google receives plenty of acceptable candidates, false negatives are free.

(Assuming they get no false positives, which, thinking about it, is a big assumption)

136. dylanfw ◴[] No.12703119{7}[source]
> Its average case is O(n log(n)). Its worst case is O(n^2). Which do you call its big-O?

I know this is irrelevant to the larger point of your post, and I'm sure that you know this already, but the worst case is the big-O. This is just another reason why "big-O" is not the most helpful thing to discuss in practice.

replies(1): >>12703304 #
137. bastijn ◴[] No.12703157{6}[source]
These kind of comments is why I love this site. The guy was obviously 100% joking but the engineers in us are bound to reply nonetheless.

It reminds me of a classic Dilbert. https://goo.gl/images/7DhC9f

138. btilly ◴[] No.12703183{8}[source]
You are right that several of these questions could be due to his misunderstanding the questions asked at the time, answering the wrong one, and then remembering what he thought he was asked. But it is beyond my imagination to reconstruct a plausible conversation that could result in the one recorded without there being considerable ill will on both sides.
replies(1): >>12703254 #
139. rdiddly ◴[] No.12703185[source]
Perfect analogy. And you just jogged a bad interview memory - "thanks a lot."
140. mayoff ◴[] No.12703194{3}[source]
Here's the first sentence of the DESCRIPTION section of the stat(2) man page on my Linux systems:

    These functions return information about a file.
replies(1): >>12704100 #
141. astn ◴[] No.12703240{3}[source]
"Draw the first letter of the alphabet please".

'a'

No. The right answer is 'A'. We will stop here because it's obvious that you don't have the necessary skills.

replies(1): >>12707365 #
142. geofft ◴[] No.12703254{9}[source]
Here's a thought experiment: read the article, replacing the interviewer-side questions with ones that make them sound more plausible. (This is the side that we should believe to be less accurate, if only because the interviewer isn't reporting their questions.) Pretend you're the interviewer, and ignore the internal monologue.

For question 5, you asked about an inode, and were told about an inumber, and got back an answer insisting that the inode was an index.

For question 6, maybe change "inode" to "information in the inode". The interviewee still has not figured out the distinction between an inode and an inumber.

For questions 7 and 8, apply the changes I suggested.

At what point do you decide that the interviewee is hopelessly arrogant and not worth your further time? And how do you get them off the phone gracefully?

Maybe around question 10, when they're quoting bits to show off and not saying the words that would actually let them communicate with other engineers like "SYN" and "ACK"?

No ill will is required on the interviewee's side, unless you consider refusing to waste time on bad candidates "ill will".

replies(1): >>12703375 #
143. lucb1e ◴[] No.12703294{3}[source]
Thanks for the snarky remark.

I did not learn this because some course demanded I learn a text book by heart. I'm not doing that kind of theoretical university. I knew that particular thing because I look at a lot of packet captures.

144. btilly ◴[] No.12703304{8}[source]
Technically, no.

Big-O is a way of categorizing the growth of mathematical functions. Those functions can represent anything. It is wrong to talk about the big-O of an algorithm without specifying what you are measuring. Be it average operations, worst case operations, average memory, worst case memory, amortized average time, amortized average memory, and so on.

It happens to be that when we talk informally, we're usually talking about the worst case we are willing to think about. Quicksort's worst case is a sorted set, so we think of that as O(n^2). But then we turn around and cheerfully call a hash lookup O(1) because its O(n) worst case is incredibly rare in practice.

replies(1): >>12707713 #
145. ww520 ◴[] No.12703332[source]
I would have failed the question. I don't remember how many bytes in a MAC address. That's something that can be easily looked up.
146. inopinatus ◴[] No.12703359{3}[source]
Given that osteopathy is pseudoscientific dogma, that's not an unreasonable outcome.
replies(1): >>12710372 #
147. btilly ◴[] No.12703375{10}[source]
Your imagination is better than mine. :-)

The conversation that I'd have to reconstruct has a very combative interviewee. Which would also fit said interviewee deciding to write up the article that I read. Which would mean that Google dodged a bullet.

I find it interesting to note that his site is down. There are a lot of possible causes, but it isn't good advertising for his webserver software.

148. throwaway2016a ◴[] No.12703382{4}[source]
Kudos to having side projects. That's awesome.

The point still stands though. First, it is much easier to have side projects when you are in school so the causal relationship might still be there just one step removed. But the more important point I was making was that school or a side project or even a project at work, if people go 10 years without using it, they forget things.

As an aside, you may want to drop the "Uh" in-front of your sentences. It conveys a certain tone that I'm not sure you are doing intentionally.

149. HeyLaughingBoy ◴[] No.12703521{3}[source]
A lot of it depends on what you do day to day. A year ago, I knew what a MAC address was, but in an abstract way. Today I automatically know it's 6 bytes long because I look at them every day.
150. ubernostrum ◴[] No.12703536{5}[source]
And here it is.

I do plenty of interviews, and so I do have some sympathy for the idea that some overwhelming majority of applicants simply cannot perform even the most basic coding tasks but are somehow trying to sneak in anyway, but at the same time I can't escape the suspicion that a lot of the stories are actually from badly-designed or badly-calibrated interviews gone off the rails.

I absolutely believe that the article we're discussing here gives a fair view of a Google phone screen, since I've been through it too and even got asked some of the same questions. The only reason I "passed" was that I recalibrated way, way down to meet the expectations and the technical understanding of the recruiter I was talking to (who did very clearly seem to be reading off a prepared script). This was surprising since Google had reached out to me to ask me to apply, which one would think indicates a confidence in basic technical skills, but if I hadn't caught that and adjusted how I was interpreting and answering the random trivia they threw at me, I likely wouldn't have passed the screen and would have been labeled just another impostor trying to sneak into a job I'm unqualified for.

So when I hear someone else talking about all the "unqualified" applicants they get, I can't help wondering how many really were qualified applicant talking to unqualified interviewer using unqualified interview process.

(disclosure: I don't work for Google, don't ever intend to work for Google, and in fact hung up on a later screening call out of frustration with the way they ran their process, which at least finally got their recruiters to stop spamming me)

151. nkassis ◴[] No.12703589{4}[source]
might get you bonus points. It's a clever answer.
replies(1): >>12710544 #
152. dekhn ◴[] No.12703597{7}[source]
Most people don't know that lsof works into two modes- the typical one is to run it against a process ID. The rarer one is no args, which runs it against everything on the system. however, I observe that lsof needs to run as root to print the same information that netstat -tanp returns for a reglar user.
replies(1): >>12706034 #
153. vram22 ◴[] No.12703640{4}[source]
>In C, what stat does is how you return multiple values from a function.

IIRC, you can return structs from functions in C. You have to access the values in the returned struct with dot notation, of course, like point.x .

Pre-ANSI C may not have had this, but later, it did. Remember reading it in the 2nd (ANSI) edition of the Kernighan & Ritchie C book, and also used it myself in some programs.

https://www.google.co.in/?q=can+you+return+a+structure+in+c

Edit:

Might want to consider the cost of copying, depending on the perf requirements, size of the struct, whether the function call is in a tight loop, etc.

replies(1): >>12707239 #
154. ionwake ◴[] No.12703686{4}[source]
This is the funniest thread I've ever seen on HN
155. diakritikal ◴[] No.12703720[source]
>Gwan is less known around because it's not OSS but I believe still achieves unmatched performance.

ERR_CONNECTION_REFUSED

156. djsumdog ◴[] No.12703855[source]
It makes me think there's a screening recruiter, non-technical, before the "real" interview process. At big companies like Google with so many people interviewing, I can imagine these kinds of kick out questions.

Still, it shows a massive company trying to streamline some things and failing terribly. I personally wouldn't want to work at Google today. What might have been cool once is now nothing but a standard large company like IBM or Amazon. There's a great Quora post by some former Google people that say as much.

157. to3m ◴[] No.12704100{4}[source]
Somebody sack the writer ;) - so, OK, I doubt I'd argue the toss if it were an interview situation. But when writing a comment or documentation I think I'd take inspiration from the documentation for either of these two fine systems.

OS X: (OK, so I lied about the "fine" part)

    The stat() function obtains information about the file pointed to by path
Windows, here the VC++ CRT - fantastically poorly described, if you ask me, though of course you shouldn't be using any of this POSIX shit on Windows, so if it confuses anybody enough to make them go and find FindFirstFile then it can only be a good thing:

    Get status information on a file
158. madamelic ◴[] No.12704116{6}[source]
Hilariously enough, my fiance now works in printing and actually mixes the colors (t-shirt printing).

I haven't brought it up yet because we once had a fight over whether that thing you put outside your shower is called a bath mat or a bath rug (Both are correct in different circumstances)

159. pfarnsworth ◴[] No.12704170{5}[source]
I'm sorry you're incorrect. This paper says Red, Yellow and Blue. Thanks for your time, we'll be in contact.
160. WillPostForFood ◴[] No.12704189{3}[source]
The fact that several Google people posting here literally can't believe this is true also may mean it isn't true. Not that the questions weren't asked by a recruiter with a cheat sheet, but the quality of response and the attitude of the recruiter has been grossly exaggerated.
161. zem ◴[] No.12704256{4}[source]
wow, there's an entire school just to teach that? (:
162. SomeCallMeTim ◴[] No.12704301{3}[source]
My presumption was that, for whatever reason, they couldn't or wouldn't do screening at this level by technical interviewers. Obviously having a technical person do the interview is always better.

I may have gotten a technical interviewer because I can list a half dozen people who know me who work at Google, most of whom can directly vouch for me.

Not sure why the OP got an unskilled reviewer, but if they didn't list references inside the company, they may have been thrown in the "random unknown applicant" bucket.

163. eternalban ◴[] No.12704378[source]
A civil engineer is a professional engineer. I would assume your father is a certified PE [1].

This rubbish flies in our industry since we are not professional engineers.

[1]: https://en.wikipedia.org/wiki/Principles_and_Practice_of_Eng...

replies(2): >>12705083 #>>12720453 #
164. tptacek ◴[] No.12704492{5}[source]
I think you can probably predict it: I would generate a work-sample test for it. For a network programmer, I might have them implement a 3WH coded directly to pcap_write() (which requires you to populate the Ethernet frame header). Like the best work-sample challenges, doing a raw 3WH is kind of fun if you haven't done it before.

My friends and I used to spend bar nights drinking over torturous interview questions (yes, I have always been this nerdy). For instance: we had a gruesome sequence of questions on how to implement the fastest possible traceroute that you could only clear if you knew about a trick using the IP timestamp option.

Later, I got (what I thought was) smarter about interviewing, and moved to more surgical questions. I'd ask candidates to debug a C program that segfaulted in malloc, or ask them to describe the utility functions they carried with them from project to project.

After taking over recruiting for a company that really needed to hire at a specific clip in order to balance sales and delivery, I'm embarrassed that I thought I was interviewing effectively with stuff like this.

You can't learn about someone's capabilities by putting them on the spot with trivia questions.

replies(3): >>12704800 #>>12706853 #>>12709788 #
165. clifanatic ◴[] No.12704604[source]
Except that, for some reason, medical professionals don't have to put up with this shit. But we do.
166. thaumasiotes ◴[] No.12704606{8}[source]
> they asked another question here with a very small but important phrasing difference: "What is the signal sent by the kill command" instead of "What is the kill signal". If you make that change, the interviewee's answer of "SIGKILL" becomes wrong, and the interviewer is right to insist on SIGTERM (which would otherwise make no sense).

But... the kill command is the command to send arbitrary signals. It sends them all.

167. pyb ◴[] No.12704800{6}[source]
What is a 3WH ?
replies(1): >>12705278 #
168. dilemma ◴[] No.12705083{3}[source]
Nonsense. It's because your industry is relatively new and hasn't established the same institutions.
replies(1): >>12705841 #
169. nialo ◴[] No.12705278{7}[source]
Probably "3 way handshake", see https://en.wikipedia.org/wiki/Transmission_Control_Protocol#...
170. dekhn ◴[] No.12705353{3}[source]
I'm a software engineer who really didn't know much about recursion or algorithmic analysis- I was a bio major/computer hacker. I did terrible on my first set of google interviews, at least on the algorithmic questions.

None of that was a reasonable predictor of my future performance at Google. You would have filtered out a perfectly good candidate (and this is, IMHO, the biggest issue is that Google rejects a number of people who would be great employees with its early filters). I can't say I have a better system.

The only interviews that made any sense for the time I got hired were the ones with the specific team members I was going to join. Once we got to chatting it was pretty clear I was a good technical fit for the team.

I still want to emphasize I don't have a solution to the high false negative rate in the pre-screening procecss.

171. davesque ◴[] No.12705565[source]
Maybe they didn't hire you because your claim that you proved P=NP in 45 minutes is ridiculous.
172. davesque ◴[] No.12705596{4}[source]
I can't disagree with you enough. Engineers should always strive to be as clear as possible about what they're doing. The word "return" has a precise meaning in the C language. If the recruiter was unaware of that, that's their bad entirely.
173. scrollaway ◴[] No.12705629{3}[source]
I flagged your comment because you basically created an account to shit on somebody.

Or to put it in terms you'll understand, clicking around on your comment history a bit, we get a pretty solid impression of what kind of guy you are.

174. eternalban ◴[] No.12705841{4}[source]
A professional engineer is not someone who professes to be an engineer. S/he is a "professional" per certification by "established" "institutions" within an "industry".

> Nonsense.

s/\./:

175. EpicEng ◴[] No.12705991[source]
Yeah, you're a student; you probably just took a class on this stuff. You'll forget it soon enough if you don't use it.
176. mcphage ◴[] No.12706001{4}[source]
What if N = 1?
177. bpchaps ◴[] No.12706034{8}[source]
Yeah, you're right about needing root (edit: for processes not owned by the current user). Though, if you have the access, it's a very, very worthwhile tool to learn:

  ~ $ lsof -a -n -c chrome -iTCP:443 | head -2 #sanitized output
  COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  chrome   1234 me   12u  IPv4 12345      0t0  TCP 127.0.0.1:12345->127.0.0.2:https (ESTABLISHED)
178. ci5er ◴[] No.12706141[source]
> I'm amazed he knew things in such detail. I mean who would know just how long a MAC address is? Or what the actual SYN/ACK etc tcp flags are?

It's what happens when you get old. There were commonly C compilers on 8, 16, 20, 24 and 32 bit architectures, some big-endian, some not, and you couldn't google things in 20 seconds back in those bad old days when old farts were building the networks that would be used to connect to us all to google.

(And he has apparently been in networking since)

179. timv ◴[] No.12706306{4}[source]
"They told me so in primary school" is clearly anecdotal evidence. You really need a proper citation.

Like this one: https://www.youtube.com/watch?v=yu44JRTIxSQ

180. chucky_z ◴[] No.12706530[source]
Gwan's performance is the real deal. It's also the least stable piece of software I have ever used in my entire life.

That last sentence is important.

181. esturk ◴[] No.12706655{4}[source]
Actually, OP replied exactly as he should because after the first few exchanges, you can tell how anal the interviewer is and as such you have to answer accordingly. Some easy going interviewers might say that its about right, some might say its technically right, etc.

Remember, you have to walk through the interview thru OP's mindset and how he took into consideration the interviewer's analness.

182. delroth ◴[] No.12706853{6}[source]
> You can't learn about someone's capabilities by putting them on the spot with trivia questions.

But that's not the point of these questions. These questions are a 5-10min phone pre-screen before getting to the actual interviews. They test if the candidate has experience in a given field, not if they can search for information or what are the precise bounds of their capabilities.

It's trivia, but it's trivia that is a reasonably high confidence proxy for experience in e.g. network programming/design (resp. other fields). If someone claims they have networking experience and don't know SYN/SYN-ACK/ACK it's in my opinion a large red flag.

replies(1): >>12708753 #
183. chrismorgan ◴[] No.12707041{6}[source]
… and we just add K because a separate black ink is cheaper and more precise.
184. hvidgaard ◴[] No.12707078{4}[source]
On the other hand, you are interviewing a programmer. Their daily life revolve around technicalities where the difference between returns and fills matter a great deal. Expecting them, all of a sudden, to throw that out of the window and parse technical questions in a hand wavy way is ridiculous.
185. philjr ◴[] No.12707239{5}[source]
returning multiple values was the key part of the sentence
186. mrkgnao ◴[] No.12707365{4}[source]
If the HN crowd allowed for levity, this would certainly be an instance of the oft-celebrated "birth of a meme".
187. dylanfw ◴[] No.12707713{9}[source]
Apologies. Throughout my CS undergrad I had only been given the impression and understanding that Big-O measured worst case (lower bound, no worse than), Big-Theta average case, and Big-Omega best case (upper bound, no better than). Looking into it more now, I see that there are some more subtleties I either missed in class or was never taught.

Thanks for correcting me!

replies(1): >>12708374 #
188. dekhn ◴[] No.12708128{4}[source]
yes it's called "Stevens" https://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-Pr... although you might also check TAOCP.
189. geofft ◴[] No.12708374{10}[source]
The subtlety here is basically that big-O and big-omega and friends are ways of characterizing functions, and functions map one input to one output. "Running time of a problem of size n" is not a function; it has a range of possible values for a given n. "Maximum running time of a problem of size n" is a function. That function itself, an² + bn + c for some constants a, b, and c, has lower and upper asymptotic bounds.

I thought you were right at first but then realized what was going on. This is a pretty subtle point and mostly uninteresting for well-understood algorithms like quicksort. But one slightly less subtle point is that big-theta isn't average case, it is the combination of big-O and big-omega, i.e., bounded from above and below (possibly with different constant factors) by the same asymptotic behavior.

190. mfukar ◴[] No.12708605[source]
> I mean who would know just how long a MAC address is?

Hmm, let me think. Somebody working with routers for 10+ years.

> ..what the actual SYN/ACK etc tcp flags are?

Same.

I mean, these things are just as familiar to me as grade school multiplication, by now..I bet there's things familiar to you which I couldn't even be bothered to memorise and instead had to turn to a search engine for.

191. tptacek ◴[] No.12708753{7}[source]
These screens pass people who can answer trivia but who can't effectively code, and they reject people who have a gift for solving engineering problems with code but who can't answer trivia questions when put on the spot.

The ostensible reason they get deployed (I say "ostensible" because we all know that in reality the on-site interview consists of the same stupid kinds of questions) is to keep the employer from wasting time conducting more sophisticated interviews for candidates who have no hope of passing. But that's dumb for at least two big reasons:

* The filters obviously reject candidates who would do well on more serious challenges --- worse, they do it insidiously, because you can't tell that they're rejecting good people, only that you're seeing fewer bozos, which makes them look like they work. In reality, a new norm has arisen where the most qualified candidates get to skip these processes entirely, because we all know they're a crap-shoot and don't want to lose good people.

* Properly administered work sample challenges actually take less employer time than these stupid trivia screens do. That means there's literally no purpose to the trivia screens whatsoever; they do nothing but harm.

In my last comment, I just wrote off the top of my head a sketch for a work sample test that addresses the same concern as the dumb TCP/IP trivia quiz from the original post. It took me I think something like 30 seconds to come up with it. Think about how you'd score that (remember: the bar here is "must be more predictive than that dumb trivia question"). I'm thinking something along the lines of "run the code and see if it opens a new TCP connection".

Assuming your team has enough sophistication to build work sample challenges like this, try to justify the trivia interviews. I think you can't.

replies(1): >>12712948 #
192. rayiner ◴[] No.12709788{6}[source]
Thanks for the detailed response. Frankly, I was awful at recruiting: grilling candidates who claimed to know C++ on the intricacies of templates or whether they knew what Koenig lookup was. Caught a few fibbers but I don't understand in retrospect what the point was.
193. alfalfasprout ◴[] No.12710372{4}[source]
Eh, that's really oversimplifying it. Yes, DOs are taught some fringe-ish things. But the rest of their education is very comparable to that of an MD. I expect in the long run that many of these quacky aspects of the osteopathy curriculum will quickly vanish.
194. krapp ◴[] No.12710544{5}[source]
If you think it's actually clever, you're overthinking it.
195. Klockan ◴[] No.12712948{8}[source]
> These screens pass people who can answer trivia but who can't effectively code, and they reject people who have a gift for solving engineering problems with code but who can't answer trivia questions when put on the spot.

SRE's are hired to fix outages and other problems asap, knowing trivia is very important then since at that point you might be losing a million dollars per second.

196. wst_ ◴[] No.12716456{4}[source]
You are jumping into conclusions too fast. There are plenty of good software engineers who work with high level languages and technologies on a daily basis. You just have to know your tools, no matter what you do.
197. noufalibrahim ◴[] No.12720453{3}[source]
This is interesting. Is this similar to things like the bar council for lawyers? I don't know if there is something similar to this in India where I'm from.
198. pjlegato ◴[] No.12721750{4}[source]
This is a false dilemma. Npm-level programming and being able to rewrite the whole operating system from scratch are not the only two options.