FizzBuzz 2.0: Pragmatic Programming Questions For Software Engineers (triplebyte.com) 226
A former YC partner co-founded a recruiting company for technical hiring, and one of its software engineers is long-time Slashdot reader compumike. He now writes:
Like the decade-old Fizz Buzz Test, there are some questions that are trivial for anyone who can build software at a professional level, but are likely to stump anyone who can't hack it. I analyzed the data from over 100,000 programmers to reveal how five multiple-choice questions easily separate the real software engineers from the rest.
The questions (and the data about correct answers) come from Triplebyte's own coder-recruiting quiz, and "98% of successful engineers answer at least 4 of 5 correctly," explains Mike's article. ("Successful" engineers are defined as those who went on to receive an inbound message from a company matching their preferences through Triplebyte's platform.) "I'm confident that if you're an engineering manager running an interview, you wouldn't give an offer to someone who performed below that line."
Question 1: What kind of SQL statement retrieves data from a table?
The questions (and the data about correct answers) come from Triplebyte's own coder-recruiting quiz, and "98% of successful engineers answer at least 4 of 5 correctly," explains Mike's article. ("Successful" engineers are defined as those who went on to receive an inbound message from a company matching their preferences through Triplebyte's platform.) "I'm confident that if you're an engineering manager running an interview, you wouldn't give an offer to someone who performed below that line."
Question 1: What kind of SQL statement retrieves data from a table?
- LOOKUP
- READ
- FETCH
- SELECT
Give it a month (Score:2)
Then the correct answers for their tests can be found online so the average codemonkey can learn them by heart to land a job.
Re: (Score:2)
Unless they are completely stupid, these are not the actual questions, but some old, obsolete version.
Re: (Score:2)
I honestly didn't assume the samples given to be the "real" test they use. If it is, well, they're even more useless than I anticipated.
Re:Give it a month (Score:4, Interesting)
There actually is a different explanation: I shudder to think that the "bad" candidates are not even able to look this up online. With the level of incompetence many display (https://blog.codinghorror.com/the-nonprogramming-programmer/), this may be a real possibility...
Re: (Score:2)
Re: (Score:2)
I would not use those kinds of questions to interview.
Of course not. You use questions like this to weed out the obviously incompetent long before you start considering anyone for an interview.
When my company advertises an open position, we get about 200 resumes. We use an online quiz like this to whittle that number down to a manageable level. They are told upfront that the quiz is timed, so if they are using StackOverflow to answer the questions they must be really good at querying StackOverFlow, which is a useful skill in itself.
More than half the candid
Re: (Score:2)
Aren't you concerned that you are driving away highly talented applicants by requiring them to jump thru too many hoops?
Unless it is a "dream job" for a company that adds significant prestige by association (like Google used to be) I would personally decline to proceed if, after successfully completing the first quiz, you responded by sending me another quiz.
Re:Give it a month (Score:4, Informative)
Unless they are completely stupid, these are not the actual questions, but some old, obsolete version.
If you actually start the test, the first question is one of those listed.
Also I stopped right there when it asked for my email address, because apparently it starts some sort of profile for you and they use your results for headhunting.
Which is fine, if that's what you're after.
Re: (Score:2)
After the first easy question they ask your email, later they ask your phone number, experience in years, full name etc. The actual test is also something like 35 questions (there seems to be several different) and most of the questions are related to calling a javascript function within javascript function within javascript function. Or asking some specific questions e.g. about what specific Javascript tools do. After the questions you still need to fill more information about yourself and even then you c
Re: (Score:2)
So this is a java test, not a programmer test.
So noted.
Re: Give it a month (Score:3, Informative)
Re: (Score:3)
I took the test, with an anonymous email address, just for giggles.
They use various languages in their test questions, including at least one in python and one that appears to be similar to Pascal.
The upshot is: in most cases the language used is such that it might as well be pseudo-code. It's fairly readable if you have experience.
It's not bad, overall.
Re: (Score:2)
when it asked for my email address
On the other hand, this would be a great opportunity to see if that headhunting firm has coders capable of identifying illegal e-mail addresses.
Re: (Score:2)
I always use real ones. abuse@ftc.gov is a good one.
Re: (Score:2)
Most can not even identify legal email addresses.
E.g. mine @wongsricha.academy
Re: (Score:2)
After you pass the onsite technical test, it's really convenient, you can quickly get interviews with up to 20 companies, and on the phone screen for those companies, they don't test your technical skills, they tell you about the company and try to convince you to join.
So overall I would recommend.
Re: (Score:2)
I'm not going to go there just to take their test. Which is what "onsite" generally means.
Re: (Score:2)
I'm not going to go there just to take their test
OK. Is there anything else that you won't be doing that you'd like to tell me about?
Re: (Score:2)
Onsite means you physically go to their office to take the test.
Is that what you meant? If not, please explain.
Re: (Score:2)
Onsite means you physically go to their office to take the test. Is that what you meant?
Yes, that is right. They also do it via webcam. But I don't care if you do it or not.
Re: (Score:3)
Then the correct answers for their tests can be found online so the average codemonkey can learn them by heart to land a job.
The same people that will fail these questions won't think of doing that either. Believe me, I've interviewed them.
Re: (Score:2)
Who goes to a job interview for a programmer without knowing anything about programming? There's a reason I don't try to get an interview for a nuclear engineer...
Re: (Score:2)
Who goes to a job interview for a programmer without knowing anything about programming?
Most of the people who apply for programming jobs are completely incompetent.
They got a certificate from a boot camp and they think that qualifies them for a $150k position at Google.
You need some way to massively thin the herd so you can focus on the good candidates. A quiz like this is a good way to start that process since it eliminates the bottom 60%.
Re: (Score:2)
This test is essentially a demo of a concept: he gave it to a large number of applicants to establish and did statistics on it, establishing that a simple test like this is actually effective in identifying competent programmers.
Whether you're convinced to use a multiple choice test like this, it's worth remembering that your hiring process doesn't have to be torturously difficult to screen for people who know what they're doing. When I was
Horse hockey (Score:5, Informative)
Likewise, I know about SELECT because of jokes, not because I'm good at SQL. I don't know HTML so question #4 is out for me, but I'd guess cookies cuz I'm big into privacy.
On the other hand I'm an embedded software engineer, so #3 (caching) is dirt simple. I suspect people who know the HTML question won't know the caching question.
Re: (Score:2)
Same here on the JS thing. Although after looking at the possible answers it became clear that these were probably hash constants. I think question 5 does not give you enough to lock-on as to what the semantics is. The rest was very, very easy, but many "coders" cannot even do trivial stuff right: https://blog.codinghorror.com/... [codinghorror.com]
Re: (Score:2)
Even the SQL one in the summary requires some knowledge of SQL to answer. Clearly the are extremely domain specific questions that are useless for many types of engineering.
I've had random questions obviously pulled off the internet and unrelated to the job before. It's a sign that you should leave the interview as fast as possible.
Re: (Score:2)
Clearly the are extremely domain specific questions
There are few domains where you can get by with zero knowledge of SQL.
Anyone doing web backend, machine learning, business processing, data logging, will need SQL knowledge.
Re: (Score:2)
I do data logging and machine learning without SQL. Actually I did a bit of web backend without it too.
Re: (Score:3)
Re: (Score:3)
Well you know, you could probably identify competent programmers with an xkcd trivia quiz.
Re: (Score:3)
That's a great idea. If they get even a single question right, move on to the next candidate.
Re: (Score:2)
Probably you would need that tuned to your particular industry. web programmer should know about caching, it is very used in web architectures.
You are essentially saying that without being in that part of industry you could answer 4 of the 5 questions. And that is the point they are trying to make. If you can't answer four of these questions, you probably aren't worth hiring in a web type of position.
That's a simple test that will remove 30% of applicants with very little effort.
Re: (Score:2)
Probably you would need that tuned to your particular industry. web programmer should know about caching, it is very used in web architectures.
This is true, but this should be clearly labeled as a test for web coders, not programmers in general. Most embedded, kernel, or driver folks aren't going to be dealing with SQL or cookies, and in my experience, most with only web experience don't know what a critical section is or the difference between a mutex and a semaphore.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Serious question: Aside from MMU block caching, is there another sort of caching?
The first commercially-available IBM computer with a cache was the IBM System/360 model 85, and it did not have an MMU, so yes.
Re: (Score:2)
Serious question: Aside from MMU block caching, is there another sort of caching?
Data retrieved from an L1 cache is cached in registers.
Data retrieved from an L2 cache is cached in your L1 cache.
Data retrieved from an L3 cache is cached in your L2 cache.
Data retrieved from RAM is cached in your L3 cache.
When you access an SSD, the OS should cache the most recently used data in RAM or in Optane memory.
When you access an HDD, the OS should cache the most recently used data on an SSD.
When you request a page from your ISP, your browser should cache the most recently used data on your HDD.
Wh
Re: (Score:2)
File system caching, database caching, web request caching, you can cache on every thinkable level ... but be aware about the "buffering anti pattern" (forgot the correct term).
Re: (Score:2)
Re: (Score:2)
So I wonder if the most common wrong answer is "undefined", thinking the question is trying to trick them into accessing a hash like an array.
Why would it not be undefined?
Re: (Score:2)
Even if you don't know JS, you can guess the meaning. The hash["key"] syntax is standard in most languages, and {"key": "value"} also work in Python. Other languages have syntaxes like ("key" => "value"), {"key", "value"}, etc.. not so different. Plus it is also JSON, one of the most popular data format.
JS programmers will certainly have an advantage here but I don't think any skilled developer who actually tries will fail this question. The reason you didn't find the answer is most likely because you di
Re: (Score:2)
Especially question 5. I'm very familiar with associative arrays and maps
Most languages that treat associative arrays as first-class data objects use a syntax close to or identical to the syntax used in question 5.
In addition, JSON is used in far more than just JavaScript.
Anyone who can't answer such a simple question should be programmatically rejected, so no human time is wasted.
Re: (Score:2)
I knew all questions ...
Obviously.
I would not hire one who does not know all, unless he somehow excels in talking about his skills.
I don't get why you could not guess 5)
It is just the same like in C, a double array access, as the array has only one dimension it is either undefined/null or a syntax error, depending on language.
Sorry, this is a pathetic rouse for free PR (Score:5, Insightful)
So basically this is the Slashdot equivalent of one of those awful phone in questions on a TV show. The questions are incredibly easy, everyone enters the competition or talks about it and the company behind this so-called article gets a ton of free press in the "geek press".
Nice try, I'm not falling for this...oh damn it!
Re: (Score:2)
My fizzbuzz solution (Score:3)
import fizbuzz
fizbuzz(1, 100)
If the interviewer points out the fizbuzz package doesn't exist I'll go ahead and code it. That'll show 'em!
Re: (Score:2)
Re: (Score:2)
It's obvious from the name what it does. I'd hire that guy to be your boss.
Re: (Score:2)
At first I thought you were joking, the package name is self-descriptive. But then you got me thinking...
Is it Fizzing the Buzz, or Buzzing the Fiz?
Re: (Score:2)
Such ambiguity aside, there is no context in the code fragment which to give "fizzing" or "buzzing" any objective meaning.
Honestly, the only context I can imagine where 'fizzbuzz' might be an appropriate identifier is involved in calculating how drunk a person might get just by drinking the foam off the top of beers.
But that's just a wild guess, maybe there are others of which I'm unaware. Some sort of explicitly descriptive identifier would remove the guesswork and make comprehension of the code much
Re: My fizzbuzz solution (Score:2)
But this misspells fizzbuzz and it is invalid Python...
Re: (Score:2)
In python:
import fizbuzz
fizbuzz(1, 100)
If the interviewer points out the fizbuzz package doesn't exist I'll go ahead and code it. That'll show 'em!
Awesome solution. You couldn't even be assed to check if 'fizzbuzz' was spelled correctly.
Re: (Score:3)
sorry, the fizbuzz package is only compatible with a different version of Python.
meh (Score:2)
The fifth question is absolutely insane in its stupidity (or correctly that of its creator).
Fizzbuzz at least required the ability to correctly read a specification and handle a slight complication, this isn't complicated at all if one knows the languages used but have no specification at all nor a demonstration of programming skill.
Meh.
Wouldn't hire these guys (Score:2)
So, like, exactly how does one take the quiz? All this shows is a bunch of questions/answer options, but you can't actually 'answer' them to verify that you got what they think is the right answer (see their comment about #5).
Also...
given the way they've setup their site to not allow you to actually take that
Re: (Score:3)
1) SELECT
2) max_num = num
3) It makes the second and subsequent reads faster
4) HTTP cookies
5) 'bar'
Comment removed (Score:5, Interesting)
Re: Theres more to competence (Score:2)
> Knowing what a Lambda is and why / when it should be used is the hard part.
No, the REALLY hard part is figuring out what the fuck a given Lambda actually *does* when all you have to go by is a printed program listing that shows a call to a thirdparty Lambda from some library, but no access to the documentation or source for the library itself.
My big beef with Lambdas is their omission of the method name (and locally, the name of the class the method is in). Ditto, for implicit parameter names. Knowledg
Re: (Score:2)
I'd guess that you're looking at code written by morons who think that "less code" means that their code is easier to read and understand.
It's also possible that writing a short bit of code that does something complicated just makes low self-esteem developers feel good about themselves. Pretending that their obfuscated mess is "obvious" let's them feel superior.
I can play code golf as well. I also know that it shouldn't find its way in to production!
Comment removed (Score:4, Interesting)
Uncommon syntax == wrong answers (Score:2)
Re: (Score:2)
Re: (Score:2)
Arrays are Associate in Javascript.
It is a common idiom.
Re: (Score:2)
Why are they using IMAGES for TEXT questions? (Score:2)
Is this so one can't copy/paste the answers? Fucking LAME.
Here is textual copy:
1. What kind of SQL statement retrieves data from a table?
Select the correct answer:
2. Fill in the missing line of code:
3. Why is
Scccaaaa (Score:2)
Like many online "tests", they need your name and email to add you to advertising lists of people who are programmers, or a5 least 5hink themselves so.
At least they only ask one question before thst, instead of asking onl6 after you've made th3 investment in answering the entire quiz, the usual scam.
Re: (Score:2)
Yeah, this "article" seems little more than clickbait.
Incurious (Score:2)
If you don't know the answers to all of these, you are an incurious bastard which would seem to disqualify you from most programming positions. It does not bode well for your longevity in any position.
I'd take five questions like these that demonstrate breadth, together with an ability to write reasonably well as a fairly good indication as to whether to explore a candidate further or not.
needs improvement (Score:2)
2. find_max
I'm bothered by find_max defaulting to float("-inf") which is what you'll get if the array is empty. And there's no function documentation in the example stating what the behaviour is expected to be.
3. caching
Does a poor job answering WHY caching is used. Sure, second and subsequent reads are faster. But the real answer is that the tradeoff of additional memory usage to performance is worth it. Caching is not a magic bullet, otherwise we'd cache every damn thing ever used more than once.
Re: (Score:2)
Does a poor job answering WHY caching is used.
This is a valid point. There are plenty of situations in resource-constrained systems where you simply can't afford the memory hit to cache stuff.
triplebyte is a mixed bag... (Score:2)
I'm actually "triplebyte certified"--meaning I passed all their tests and their entire interview process. None if it was very difficult--except for the few questions asked in languages I'd never used before (go, ruby)--so even though I could read the code in the question and knew exactly what they wanted in the answer, I had to guess at the correct syntax for the answer. (just google it you say? well, it's timed, and short.)
The real problem with them is that they force you to choose criteria about the compa
I took it to see the questions (Score:2)
Re: (Score:2)
I didn't take it, but could tell just from the sample questions and the linked article that it was all about web stuff. There are lots of other programming disciplines in which web technologies play little to no role, and I felt it was misleading to say that this test was oriented towards "programmers" as opposed to "web programmers".
In general, I found the article to be of little practical value, and unabashed clickbait.
Experienced programmer (Score:2)
I think the best way to use these question is not as multichoice quiz but as a set of talking points about the potential flaws in the questions, which many responses have highlighted.
The thing that irked me the most was that there are five questions but the vertical axis of the bar chart are marked with labels at 25% increments, FFS.
Constructive contrarism is a valuable skill for developers.
Re: (Score:2)
I messed with it ... (Score:2)
... they want an email address and FF says they are fingerprinting.
Pass.
The problem with TripleByte (Score:2)
The problem with TripleByte is the same with every other interview process for software development, which is that they aren't looking to find the best on the job candidate but rather they are just looking to eliminate canidates until they are left with a few people. There really is nothing special about TripleByte, and there are plenty of sites which will just give you the answers to the test questions or have people pass the test for you, and I know several people who have passed TripleByte using these me
Another Pragmatic questions for SW Engineers (Score:2)
How much unpaid overtime are they willing to put in for imaginary stock options?
Re: (Score:2)
Real programmers don't "code" in SQL.
Well, not Microsoft SQL, but a nice SQLlite or Mongo, or mysql backend is handy for a lot of programs.
So you need to know enough to talk to a database...
You misspelled PostgreSQL. (Score:2)
mysql... /please/!
Re: (Score:3)
One of my jobs is a DBA, and that explains so much.
Bad queries, ignored indexes...I suspected whoever wrote that into the software only had a passing understanding of SQL, and I guess that explains why: Egotistical programmers who need to believe they're amazing actually, in real life, suck ass at doing the job in front of them.
Re: (Score:2)
If their lady boss is in front of them, maybe sucking ass is what keeps them employed?
Re: (Score:2)
The trivia test serves as a quick filter.... it's a test to see if I should *NOT* hire a person more than whether I should. People can easily be dishonest on their resume or exaggerate their credentials to the point of misrepresentation.
Yes, it's also relatively easy for a person to pass these kinds of tests without actually understanding the principles, but an employer who uses this sort of thing as a filter wouldn't have their questions stored online, nor give any other impression that there would e
Re:Did an Amateur write Question #2 ? (Score:5, Informative)
Did an amateur write this crap???
* Variable names (max_num, nums) are crap
* Why is max using a to stupid string to float conversion "-infinity" for initialization?
* Why is max not initialized to the FIRST element in the array?
* The order of the if-then switch is garbage
* Why is an underscore being used for both function names and variable names?
* Why is Upper/Lower case not being used to designate between global / private symbols?
1, 5, 6: It's python, lowercase and underscore seems to be standard practice for everything.
2. It's not actually assigned to a constant like in C. Minus infinity is more like a meta-number.
3. It saves the "is array empty" check, your code takes three lines to do what it does in one
4. It's the natural pseudo code order "if this number is bigger than the biggest number so far, then..."
In any case I'd say it's totally normal code you can expect to find in a code base. Part of reality is dealing with whatever code a self-taught / rockstar / "job safety" / intern / outsourced dingus left behind, if you go all neat freak on me in an interview I'm thinking you'll spend way too much time on things that don't matter.
P.S. You missed the bad English: # smaller then all other numbers
Re: (Score:2)
> if you go all neat freak on me in an interview I'm thinking you'll spend way too much time on things that don't matter.
Facepalm
A programmer normally spends ~95% of their time READING code, not writing it.
You are writing it for OTHER PEOPLE not a stupid interpreter / compiler.
Re: (Score:2)
> 1, 5, 6: It's python, lowercase and underscore seems to be standard practice for everything.
Languages != Coding Standards.
If a company uses lowercase for both function names and local variables that tells me they have a shitty coding standard.
Re: (Score:2)
If a company uses lowercase for both function names and local variables that tells me they have a shitty coding standard.
I suggest that you bring this issue up as a Python Enhancement Proposal. https://www.python.org/dev/pep... [python.org]
Re: (Score:2)
> 4. It's the natural pseudo code order "if this number is bigger than the biggest number so far, then..."
"Natural" ? No, natural would NOT be using the IF-THEN but a MAX() operator / function / macro:
Reversing the order of the expressions in the IF conditional compared to the THEN consequent statement...
... is NOT as straightforward as keeping the order the SAME in both the conditional expression and consequent.
Re: (Score:2)
Wow. No.
In particular the problem is clearly to find the maximum b;
find b such that b >= a for all a in [set]
your algorithm however is: find b, such that a = a) --> (a b)
If you think keeping the variable order the same and doing a logical inversion in your head is more straightforward than reversing the variable order, you need a slap upside the head.
Re: (Score:2)
Did an amateur write this crap???
You know if you have a job as a programmer, about 80% of the time is probably spent wading through someone else's crap. If you can't deal with that then maybe it's not the job for you.
* Variable names (max_num, nums) are crap
Better than m, n or bob_rules. Have you really never seen production code with variables like "nums" in it? If not then you lucky bastard.
Why is max using a to stupid string to float conversion "-infinity" for initialization?
Because it's python. That's a
Re: (Score:2)
> You know if you have a job as a programmer, about 80% of the time is probably spent wading through someone else's crap. If you can't deal with that then maybe it's not the job for you.
No shit Sherlock. We're not talking about "Real World" here -- as Test question it is crap. If it is indicative of their code quality (or lack of it) then I don't want to work for a company that has a shitty coding standard.
>>Why is Upper/Lower case not being used to designate between global / private symbols?
>h
Re: (Score:2)
Why is max not initialized to the FIRST element in the array?
Think about what happens if that's a NaN.
Re: Did an Amateur write Question #2 ? (Score:2)
Re: (Score:2)
You've never heard of Camel case [wikipedia.org] ???
Why are you surprised? You've apparently never heard of snake_case [wikipedia.org], which is much more common in C than CamelCase.
Your arguments for everything wrong with the code snippet almost all boils down to stylistic issues. Your opinions you present as fact (such as the case style used), which makes me think you haven't really seen much C code written by someone other than yourself. Maybe you do more C++, where CamelCase is more common.
Re: (Score:3)
Maybe you do more C++, where CamelCase is more common.
Another clue that this is true is the declaration of a variable in the for statement. This is allowed in C++ but not in C.
Re: (Score:2)
You've apparently never heard of snake_case [wikipedia.org], which is much more common in C than CamelCase.
It's also required in all the Slytherin [fandom.com] programming classes.
[ (sigh) and now I hate myself for this joke ]
Re: (Score:2)
Maybe you do more C++, where CamelCase is more common.
Where I work, the local standard calls for snake case for function/method names, camel case with an initial lowercase letter for most variables, and CC with a leading underscore to indicate class/instance variables. Everyone does things a little bit differently, IME. [shrug]
Re: (Score:2)
why go through all the bother of writing a function to find max_nums when just using the builtin will sufffice?
My most believable framing of a "reimplement a standard library function" problem is that you have been assigned to implement a workalike that the law permits you to distribute to the public, so as not get sued by Oracle.
Re: (Score:3)
How about instead of trivia contests at interviews, we standardize industry education?
Because someone that had an issue with the software they were using, went online and found out they could fix it themselves, learned how to install the code and build toolchain, how to actually program to fix the problem, and submit the tested response back to the repository, may well become a far better programmer than the people going through a standardised industry education.
I want routes into the professional to be open to such people.