6 ms·
I think you are missing the point. If you do not know such things then how are you going to take them into account when you have to solve a problem?
by eveningcoffee 10y ago
I think you are missing the point.
If you do not know such things then how are you going to take them into account when you have to solve a problem?
- dajohnson89 10y agoThese facts can be easily googled.
- eveningcoffee 10y agoYes, if you take them as just mere facts. But if you are not aware of CAP theorem and its implications then how do you know that you should google it?
- striking 10y agoI haven't received a formal education in CS, and I know about CAP and what it means. Reading the Aphyr "Jepsen" series is what helped me learn it... when I was still in high school. And this was necessary because I was curious about which database I needed to use for a particular side project I was writing. It's totally possible to just Google "bubble sort complexity" or "CAP" and learn about it.
- eveningcoffee 10y agoJust to assure that my point was well understood. Yes, you can today easily find quite a lot of information and learn about it, but this was not the situation the original poster lamented about. The claim was that when faced with such question, one can just google it and read the answer. Problem solved. Because these are just some random facts like who is the president of France. My point was that in my opinion these questions actually probe the general understanding about the CS field.
- hnbroseph 10y agoif someone is unaware of CAP, they're unlikely to have been working in an environment where it was relevant. if this same person starts working in an environment where it's relevant, i'd wager that it will be hard to remain unaware.
- josephg 10y agoThere's a middleground between those extremes. There's lots of knowledge that isn't relevant most of the time, but when it is relevant its worth its weight in gold. (And often these things aren't so obvious that people will google search them.) When I'm trying to evaluate a candidate, I want people who proactively search out knowledge in that middle zone. People who understand complexity theory, and CPU caching behaviour, and the C10k/C10M problem just because they know they might need it some day. Because they want to work on problems where this stuff is relevant. This sort of knowledge is the difference between hearing "our website is slow - I think its the database?" and "our website is slow - I took a look and our database server has run out of open file handles. But I'm still confused - that shouldn't explain the latency we're seeing." The CAP theorem is a great example of this sort of middleground might-be-useful knowledge. Understanding how your database will behave in the face of network partitions is exactly the sort of thing that separates good engineers from great ones.
- hvidgaard 10y agoI have a CS degree. I learned about the CAP theorem, and I work with the nature of it daily. But my mind have ventured beyond the CAP theorem, it's implications are now mere facts of distributed systems, and the name "CAP theorem" had simply sliped out of my mind. If you want to quiz knowledge, rather than google-fu and name dropping, ask if you can make a distributed system with consistency and availability.
- eveningcoffee 10y agoI think this indeed would be a better approach. Instead of asking about Bubble sort, ask what is generally the complexity of a naive sorting algorithm and how good it can get for a general case. I have investigated immutable hash tables but I do not know much about concurrent hash tables. This is my blind spot, so I do not know what the relevant question about the Hopscotch hashing would be. Instead of asking what is CAP theorem, ask if you can make a distributed system with consistency and availability at the same time. I think that this was the intention behind these questions after all and is the reason why I am trying to argue in support of them.
- sidlls 10y agoYou act as though CS knowledge is some high priesthood of supreme mathematical reasoning insulated from the internet. As a matter of practical use, most of the time details about algorithms and data structures, from implementation through complexity analysis, can easily be regarded as "mere facts." Those times when this doesn't apply are times when somebody applying formal academic level CS is surely required, but these are far less frequent than most programming tasks require--even at Google.
- eveningcoffee 10y agoNo, this was not my intention. Sure people do not know all the facts and all the implementation details and corner cases of some specific algorithm, but I would expect them to have some basic knowledge. This is like knowing that lookup complexity of the hash table is usually O(1) (but could become O(n)) and one should use it instead of list when frequent lookups are necessary. I am not an interviewer, but I think that the questions listed were actually quite good pruning questions and if you do not know them, well, there are the search engines and you can look them up for the next time instead of starting lamenting about the unfairness and showing the ignorance that is in in this case in my opinion demonstrating the serious negligence.
- kafkaesq 10y agoWhen have you ever needed to know the exact complexity function for bubble sort (beyond the simple fact that it's in a class well above that of any algorithm you'd typically want to use) in order to solve a real, actual work-related problem? Right there, on the spot? That's the point of the "hate" behind these questions.
- eveningcoffee 10y agoIf you do not know the complexity class of the bubble sort then you probably do not a have formal CS education. It also follows that it is possible that when you see a similar bad solution then you are not able to recognize it as such. I think that these three questions showed are quite good and fair (for example I did not what is Hopscotch hashing, but it looks quite important after looking it up, so thanks for this). Some of such questions might be possibly indifferent for the position you were applying, but seeing some hate behind these questions is in my opinion quite unjustified.
- kafkaesq 10y agoIf you do not know the complexity class of the bubble sort then you probably do not a have formal CS education. No, it means you're smart and have learned to sift out unimportant matters of detail ("Was bubble sort, which I only ever had to think about for a week or two the first half of my sophomore algorithms class, and was only ever brought up as a negative example anyway, O(n^2) or O(n^3)?") in order to focus on much more interesting and useful stuff.
- eveningcoffee 10y agoPretty much spot on and that was my point. You can answer to this question, you know what is complexity class, you know that it is a negative example and it is rather bad. See, I am not a recruiter or interviewer, but this question feels to me like an useful one to prune out ignorant fools who start to lament how unfair is to ask such questions instead of giving more or less correct answer. Naturally if short direct answer is the only accepted answer and there is no way to discuss these things with the interviewer then I would also walk away.