Coding Interview Preparation Bootcamp(medium.com) |
Coding Interview Preparation Bootcamp(medium.com) |
Essentially, the system used to recruit candidates into the Imperial Chinese state bureaucracy was an-ever-more-elaborate progression of less- and less-relevant testing, and more- and more-gamable (and expensive) testing. If you thought getting quizzed about FizzBuzz was bad, imagine getting quizzed about Beowulf with the same degree of seriousness.
"Intense pressure to succeed meant that cheating and corruption were rampant, often outrunning strenuous attempts to prevent or defeat them."
"In the 19th century, critics blamed the imperial system, and in the process its examinations, for China's lack of technical knowledge and its defeat by foreign powers."
This doesn't amount to any huge revelation to many of us when we're seeking jobs, nor any comfort, really.
Maybe a little bit of solace that the coding interview you inexplicably failed, which had the trappings of a serious attempt to gauge your fit, but the actual behind-the-scenes decision-making progress involved the finesse you'd expect from a group of blindfolded monkeys throwing darts, will eventually pay a dividend for all the fat dumb and happy juggernauts in the bay. Amazon may be the Sears of the 21st century, but I strongly suspect it and its cohort will meet the same fate a century later and for the same reasons.
I have worked who are totally passionate and read all the blogs and can talk about all new buzzwords and techniques. Who simultaneously had problem write simple code. That is incomparable to Beowulf.
10 years ago I was asked how to tell if an integer is divisible by two without using division or modulus. What they expected was to bit mask the 1s place in the integer and check for equality with 0. I'd take Fizzbuzz any day.
The only problem is... at some point the tech industry basically started saying to itself, "That worked pretty well! Now if we can just make our tests 50 times harder the must be... 50 times as good!"
Which explains a lot about the situation we're in now.
There is generally little substitute for real world experience. Measuring through proxy only goes that far.
The point of the post was that they were/are optimizing for the wrong things.
Some people watch "Are you smarter than a 5th grader?" and chuckle when they realize they're not.
A smaller subset of people take it to the next level and (would) hire the 5th grader instead of the adult to do an adult's job.
Life's not a game show, but some (most?) of us forget that when we conduct interviews.
Recently interviewed with one of the big ones and they were enamoured with my Swift and iOS dev knowledge but I’m not great with identifying graph questions. After many long internal discussions and even a letter of recommendation they passed/asked me if I was interested in other semi-technical roles at the company. In moments like this my sentiment is ‘take me or leave me’.
When I design system, I don't do it in an interview time frame. I read the problem, and then go and do other stuff. Part of the design will become clearer to me a couple of days later, when I am cooking dinner or cycling to work - that stuff goes on in the background in my head. It's not an area where I find sharp focus useful, more a case of going through the many options at a slower pace is more useful.
Ofc the coding interview is bad, but it's the best of all available (viable) options.
tbh: most people say it's bad because interviewers focus on the optimal solution or something like that. Most of the time that's incorrect as an interview is literally capturing: "Can the candidate solve a difficult problem and transfer his thoughts into code, while being a nice guy to work with"
disclaimer: I'm doing interviews for a faang company.
*citation needed
My gut feeling is that they wouldn't do this at all. If you fail, you fail. Not only that, it seems like a legally shit-situation to put yourself in to hire someone who you think is going to fail and then fire them.
Disclaimer: doing interviews outside of FAANG and not on the west coast - where the majority of developers are working.
I get that it's hard to determine someones skill level, and people aren't prepared to spend multiple hours on practical tests (especially when having multiple interviews), but there must be a better way to interview.
What "simple trick"? The original point of FizzBuzz is not to check that the interviewee produces hyper-efficient code that avoids repeating the divisibility checks (or, for that matter, to check that they repeat the divisibility checks and are able to defend why that's simpler). It's to check that they can write down any solution at all (within reason [1]). Doing that doesn't require any tricks; you literally just need to write down the requirements in the form of code. Unless you count for loops as tricks! I know the guy who came up with FizzBuzz [2], and he did so to root people who couldn't code at all, not those who weren't good at coming up with (or memorising) coding tricks. Or, if the "trick" you're talking about is memorising, verbatim, a simple for loop solution to FizzBuzz without understanding it, then that can be countered with small variations of the problem.
I agree that some interviewers pose questions that are too hard, which ending up testing ability to perform in an unrealistic situation more than actual programming competence. Of course this happened before FizzBuzz existed. Similarly some probably set a straightforward FizzBuzz and overanalyse details rather than worrying about whether it works (or worry about silly syntax mistakes, which are perfectly reasonable on a whiteboard).
[1] http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/
[2] https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-de...
Wait, it gets better. I was asked the "divisible by two" question and gave the standard bitmasking technique in response. But then my interviewer said that wasn't "allowed" either, because apparently this programming environment they do their daily work in (this was an old-school web development shop basically) doesn't support basic math operations of any kind except equality, plus and minus.
He then pressed me for something "even simpler", "perhaps using function calls". Then I figured out what the "right" answer was -- he wanted be to test for odd- or even-ness recursively by, well, you know how.
So after reminding him about the obvious performance drawbacks of such an approach, I asked him -- "So do you actually write code like this in production?"
To which his answer was: "No, but I do during interviews".
if CPU masks it then time the read.
ok partly sarcasm but partly: this isn’t a hard question. i’m sure i could enumerate ALL the possible ways to do this. maybe i’m good at puzzles.
if your comment is about how awful an interview question it is, in that case yeah i agree. but not because it’s hard. anyone should be able to answer this.
Further I was pointing out I prefer fizzbuzz because it at least bears a resemblance to what would be done on a daily basis on the job.
> anyone should be able to answer this.
Anyone should be able to answer fizzbuzz yet people who look good on paper constantly fail it. This is why it is useful. And that is why it is actually not a bad interview question. (in my opinion)
I did the bare minimum C++ in my classes. I can write trivial little "code challenge" type things with it. (mostly imperative style, very basic OO) But, ask me anything about Templates, etc, and I'll quickly admit you've gone beyond my knowledge. I'm intrigued at the answer to this question though....
If you lie on your resume and I catch you that is an important red flag because I no longer no what else I can trust you on.
If there would be an easier way then these companies would definitely use it. A candidate usually has 5-7 interviews (if he is not failing the phone screen), which is 5-7 engineers spending at least 1 hour for the interview + 1 hour for the feedback. I am having 2-5 interviews per week, which means I spend between 4 and 10 hours per week just on hiring. If we could reduce this number we would definitely do it, as it's costing a loooot of money.
To be fair: there is some innovation and traction in those areas, s.t. some candidate s do a coding project at home and then present their solution (to reduce the number of interviews).
My boss asked HR about this and they said if we want to ask coding questions we need to first give the coding interview and score the results - but not use that to decide to hire or not. Then after two years look at their performance and compare to how they did on the interview.
That's true, I recently had an interview and the interviewer was on the phone all the time totally uninterested, barring the first 5 minutes. How do you account for that?
Everybody knows (and as stated in the article) the system can be gamed (by memorizing Leetcode solutions) and I choose not to. If you don't believe me have a look here:
https://www.1point3acres.com/bbs/thread-191077-1-1.html (translate it to English)
(there are a ton of interview experiences and detailed questions and strategies on this site)
There are people who are freaking memorizing behavioral questions!! Surely, the FAANG companies are aware of this?
This what I see happening these days: 1. You have an interview candidate solving questions without memorization
2. You have an interview candidate solving questions with memorization
How are you distinguishing between the two and how do you prevent bias? Bias in all forms, not just the stereotype: white guy hiring another white guy.
The idea that Google has internal research indicating this wouldn't be surprising to me.
The problem with internal research on these matters is the nearly total lack of negative examples. Depending on the quality of the pre-on-site screening the quality of candidates at that point might be so high that random selection might be just as good.
Scare quotes used because knowing how to define success is an even more hairy question that we (industry, humans) dont have a good grasp on either. So any criteria you use might be wrong or a subset of the right (where "wrong" means you would change your conclusion if you saw the bigger picture, which none of us can.)
As a candidate I would give you 3 at most. But that would require me to be in the near vicinity.
5-7 interviews? That is more than many people need to form a marriage...
8-15 years ago fb/google had 20+ interviews - and reduced the number based on research that after 4 they can predict it really good.
They mention 4 in the article, but that actually means 4 on-site. Before that a candidate usually has to pass a simple recruiter phone screen and a simple coding phone screen.
I think the biggest issue with the current approach among faang interviews is that a lot of really good people get filtered out (false negative) - but faang get so many applications that they are ok with this.