They're almost entirely ridiculous though I've used a couple when interviewing people.
"How is this an issue?" and "Are you pro-active or reactive" can both lead to exceptionally telling answers. Or just confusion, despair and upset... but certainly have the possibility to almost....
Probably not what’s going on here. But human systems require debugging as much as technical ones.
I would personally walk away as well, its not like am some kind of superstar, I just feel that I won't be a good match to a company that asks questions that I feel are not needed. The way I see it an interview is always two ways. The company is interviewing me to see if am a good fit and I am interviewing the company to see if they are a good fit for me since I'll be spending at least 8 hours a day 5 days a week of my time working for that company.
Personally so far what I've seen working ok for us in human systems is to just have a talk with the person we are interviewing, see what his/her hobbies are and generally feel if he/she is a good fit.
Bingo. Thats basically our interview process. I could ask stupid technical gotchas but thats idiotic. Better to ask pointed questions like: oh you like to program micros on the side, if you've programmed SPI before tell me what your most fun debug session involving that entailed.
These questions tell me more than anything like fizzbuzz can. You dig into details as much/little as you need to based on the replies but I honestly think the people you want shine though with their stories, not their rote knowledge.
If someone started spouting off intentionally wrong things in an interview as stated in this comment tree, I would call it a day and say thanks for all the fish, but I'm not starting off having to rebut 2+2=5 for this company. Even if that is a tactic for discussion, lets just have the discussion, as it stands that just makes me not want to work there as now what is the day to day like? Do I have to prove the world isn't flat constantly? Better to not find out and look elsewhere, even the weird cs quizz jobs are better than trying to deal with those kind of dynamics.
You’re a perfectly-reasonable person. I also think you’d find the work those positions do frustrating.
You can’t tell a multibillion-dollar client they’re asking stupid questions. You also can’t ignore the potential problems their asking them hints at. Walking away, usually, isn’t an option. Similarly, a CEO and CFO must be able to productively field “dumb” questions from potential investors, acquirers, distributors and yes, employees. “Dumb question” shouldn’t frankly exist as a category in certain relationships. Only opportunities to improve mutual understanding.
Not every role is for everyone. And not everyone is for each role. Part of interviewing, in my opinion, is not only qualifying for fit with the company but also fit with the role. (For solely internally-facing roles, I prefer a let’s get a walk/beer/take a hike together chat.)
To see it from another perspective, imagine what your response would be if you found out that someone you were interviewing was pretending to know something they didn't, just because they preferred to work with people smart enough to notice they were faking.
I agree. I never proposed that. I said I purposely ask questions the person at hand might consider dumb.
Note that many classic “dumb” questions are actually interesting, if not in their specifics then in why so many people ask them.
> imagine what your response would be if you found out that someone you were interviewing was pretending to know something they didn't
Again, asking dumb questions doesn’t require lying. Everyone goes through a dumb-question asking phase when learning. (I do.) The worst effect of this might be the interviewee walking away thinking me uninformed. Which, if I’m interviewing them, I probably am (relative to them). That’s why they’re being sought! In any case, people thinking I’m dumb is a fair price to pay for a well-tempered executive.
It's a huge part of the job and the idea that I shouldn't test people on it strikes me as absurd. You seem like you're jumping to interpret what I've said negatively.
Imagine a candidate who came in and said, "I'm really great at this computer stuff, just trust me!" but refused to show a resume, prior work, to even talk about it.
"Push back, it's fine, trust us!"
This ends up filtering for people who can deal with your bullshit,(as in: have other options) and don't mind doing so. So, good for you, I guess, but you could get better people by fixing your culture and being straight with people.
Regarding tenure, I don't understand how that's applicable to hiring new people.
Regarding the imaginary candidate I think this is supporting my point - no? Just like you wouldn't want to trust someone who offered no evidence for their abilities, I want to discern whether people can stand up to arguments and make compelling arguments for their case. In order to get the evidence I put them in a position to stand up to arguments and put arguments forward.
Regarding your thoughts about how this filters people, I think you've summarized it incorrectly. Even if I agreed that asking people to argue against me in an interview was "bullshit" then that wouldn't filter only "for people who can deal with your bullshit,(as in: have other options) and don't mind doing so". Clearly, the people who have no other option would also put up with the tactic, as they have no other option. Thus, the filter, as you put it, filters only people who don't mind putting up with the interview question. This is actually a point in my favor because if the candidate is not comfortable arguing for or against positions in a professional context then they would not be a good fit for the role.
Finally, you suggest "fixing your culture and being straight with people." I think I am being straight with the interviewee. I tell them upfront that if I say anything they disagree with I want them to push back on me, that I think disagreement and debate is positive and sometimes necessary. Again, the role requires disagreeing and pushing back on arguments, often in situations where there is pressure not to, so I think giving friendly encouragement and setting up a hypothetical situation where I will disagree with the candidate is a very reasonable thing to do.
> I always preface these sections of the interview with a moment to explain that I expect them to push back and disagree if I say something they think is wrong so that we can talk about it.
I interpreted that as, at least implicitly, flagging to the interviewee that not everything the interviewer says will accurately represent his/her views. Perhaps it could be made clearer, but it doesn't seem like the intent is to deceive.
That's pretty much the definition of a liar and outright deceptive.
Besides that, the tactic of trying to be debative and in this case outright dishonest and slightly combative is an incredibly terrible method for interviews.
Honestly the poster should be banned from giving interviews.
It seems to me that you've jumped to a very strong conclusion, based on a brief conversation that you have interpreted in the least charitable way possible.
In an interview both sides should put their best foot forward, assuming positive intent and trust. Purposefully asking “dumb questions” on the hopes someone picks up on the game, and then plays it as you expect, seems like a suboptimal approach.
I find “describe a time when” answers mostly useless. Interviewing, at a senior level, is a proxy for time on the job. Senior people must constantly deal with information flow. Being able to pick up on when to add to or correct that flow is key.
Note that this doesn’t have to be done in a pretentious way. My favourite way to do it is to discuss the company’s R&D. I will almost always know less than the interviewee. Their ability to accurately communicate in that context is vital.
Again, this only applies at senior positions. Lower down, one expects managers to know their subject matter with more detail. You can’t do the “go solve this approximate problem” thing one can with senior management.
* thought pushing n elements into an empty vector took O(n) amortized time (it's just O(n) guaranteed)
* thought a hashmap lookup took O(1) amortized time (it's O(1) expected not O(1) amortized).
I tried to gently correct him but he insisted on his views and I felt like I had to drop it so we could discuss other things also felt like I was dinged for it.
On the other hand I've been on the other side of the table, and can appreciate that interviewing people is hard too.
Similarly with a typical hashmap, the keyspace should occasionally collide, meaning non-edgecases would amortize to O(1) for multiple inserts.
This can be OK as long as you preface it with something like, "If you don't mind I'd like to ask something that might like a dumb question..."
If not -- if you're deliberately gaming the candidate (or cloaking your true intent in any way) -- then of course the better candidates are going to smell that right away. At which point walking out the door is not only permissible - but arguably the only response that make any sense.
I want to give out questions people don't know because I want to hear how they talk through understanding the question, what they know that might be related and why, and how they'd go about finding out. Hearing all of that is far more interesting to me.
Note, this was not a FANG, was not for SRE or Systems admin type role either. But this was my experience. The majority of interviews want you to repeat trivia bullshit because it makes their job 'easier'.
Honestly though, annoying interviews are just no-poach 2.0. It's a form of wage suppression if you really think about it.
There was a whole lawsuit about no-poach where a group of employers chose explicitly not to compete by agreeing to not hire each other's employees. I believe the same effect can be had by simply adding friction to the structure of the market itself.
What's amusing to me is the brilliance of it. It essentially exploits egos in the workforce to suppress their own wages.
One way to think about the interview process is that it's a way for small, compatible, minorities to find each other.
To make that happen, you have to be real during the interview. It's not for everyone, I know :)
My experience is that candidates are ready for trivia and sample/theory but are not ready to brag about their own cool shit. Talk about how great you are and what you learned, defend your choice, evaluate where to improve. That's what we do every day. we only use the white board for drawing arch-pictures/diagrams, and the occasional dickbutt.
In fact, that's my new (and only) whiteboard question.
I loathe this type of interview bullshit culture, and it more than anything else is driving me out of the industry. Sure I'm not Jon Skeet, but I do my job and I do it well. Continuing with these types of interviews and company shit, makes me want to go be an electrician or mechanic or anything the hell else.
Especially in any language where you have suggestions in your IDE, just remembering where it is would be fine. "Oh yeah that's in the IO.Sensors namespace" or wherever it is.
If there are some incredibly common pitfalls or footguns, those are a better test, especially if you can ask something like what the difference between two methods is. But even that is pushing it.
- A bug that was particularly difficult to track down? (What did you learn? What would you do differently?)
- A time you disagreed with your manager/lead? (And a time when in retrospect you think you were right/wrong/got your way/didn't get your way?)
- a piece of work took much longer than you anticipated? (what did you/would you do to prevent it happening again?)
- you had to quickly learn a new thing?
For more specific technical stuff I like to try and find questions that allows someone to show off, rather than tests if they know just one thing. We're using Typescript, C# and TDD...
- what new or upcoming features in C# do you most like using/would like to get the chance to use/really wish were out already?
- what makes a good test?
- what makes a bad test?
I don't see why anyone wants to ask anything of the what does using `ref int foo` mean, especially when there's lots of competition in the job market at the moment!
Instead of focusing on the task of talking to someone, you end up trying to recollect instances of each kind of event, evaluate them on whether you can talk about them openly, whether they can sound impressive even if they actually are, whether they will sound plausible, whether you can recall enough details to avoid being called out as a bullshitter etc.
The people who can appear to answer these questions best are either a) prepared for them specifically or b) psychopaths who can comfortably lie and twist stories with a smile on their face on the spot.
Do you think there are any style of questions that do work well?
Once you've got some questions in mind that should answer that for an individual, you need to reformulate the questions so that most of them are at least semi-objective and have a scoring criteria that you can use to rank multiple people who passed "yes" on the overall question -- and perhaps a threshold too if you think you can afford "yes, but let's wait to see if we can find someone even better".
In this light, 'tell me about a time when' types of questions aren't often very useful unless they're directly related to an issue you're currently facing and you've precommitted to some sort of score for types of answers. e.g. "time when you've disagreed with boss (or coworker)" might be relevant because your team currently has some drama dynamics. So 0 points for "Oh I never have disagreements", 1 point for "some story that makes me think they won't get eaten alive here and/or be a total pushover, the story details don't really matter", 0 points (or negative) for anything that raises a total asshole flag. The question about new C# features might be useful as a proxy for answering whether they'll be helpful in the future, i.e. do they keep up-to-date about things and keep learning, so maybe that's worth a point if they can name something and maybe you can ask a different question as another proxy to normalize across interests (they might not care about PL features but something else). And depending on the real concern being proxied, sometimes you can just ask about the real concern directly.
If you can, make a work-sample test: https://sockpuppet.org/blog/2015/03/06/the-hiring-post/
How much experience must someone have to be a junior developer in your opinion?
- what makes a good test?
- what makes a bad test?
Possible good test answers (I'd expect maybe one or two - bonus points if you can talk about them as lived experience rather than text book)
Tests one thing/clear what causes a failure
Documents the code well
Describes the purpose of the code
Something about naming
Something about BDD
Something about arrange act assert
Something about how quickly it runs
Discussion of relative merits of unit, integration, e2e etc.
What's a Bad test answers...
Brittle (bonus if you mention this in relation to refactoring)
Asserting multiple things
Very slow to run (with which I'd follow up with "any exceptions to this)
Plus you'll get lots of points if you bring up something I've not thought of before.
Q.1: What is the core of Linux Operating System?
I mean... If they asked me about that at an interview, that'd be a huge red flag. I wouldn't consider this list when studying for interviews... It is sad for me how many stars and forks this list has. Hopefully, it's much better for other languages/topics.
I think it's supposed to be a list of good questions to ask, but it's actually a compilation of lists that people sent the author with very little to no curation actually done.
Edit: Just opened up a Java list for #4... and it said that LinkedList was usually better performance over ArrayList. That is not correct; ArrayList is usually better (because of cache locality). So I'm now 4 for 4 on bad lists out of this site.
I quite enjoyed the Erlang questions. Apparently "what is Erlang" is a common Erlang interview question.
First off, many of the resources are written and submitted by people who have no place teaching others - and are writing almost purely to self-promote and have something to show to employers.
Second, even if some of the resources in there are of decently high quality, the probable best schema for how to use and integrate that resource is going to be bound up in a textbook written by Someone Very Important. Along with all the stuff you really need to know anyway.
Scrap that, three reasons. Finding and aggregating these kind of links for your personal use is of value: it develops your taste and sense of what resources to veto, and what to collect, and is a meta-skill applicable everywhere you have a search engine and some curiosity.
In '17 and early '18 I wasted hundreds and hundreds of hours collecting "the perfect" set of bookmarks for various things I want to learn, and my collection method has basically been to scrape these kinds of lists and apply a surface-level "ooh sounds cool" filter to what I pick up. Obviously, I learned very little doing this, and almost never open such links except as part of a half-hour flight of fancy.
Perhaps if you're of intermediate/expert-level, these factors aren't that important to you - if a couple of links are handy they've served their purpose. But you're probably not going to star the repo. It's mostly thousands of perma-beginners who should be opening textbooks and playing with fundamentals in a REPL who are starring this stuff.
"A file is unable to be restored from tape due to several device and media errors. What is most likely the cause?
Media errors usually indicate that the tape media is damaged, or that the tape drive heads need cleaning."
I've read a few of the questions from other categories and I really can't say any of them have been "awesome".
Instead we ask them to pair program on a live IDE and tell them that using Google is okay (copy/pasting code is not). I don't care if you have the standard library memorized, I care if you can solve problems and have the experience to understand how your code can fail and how to make it robust. I care if you can write clean code and then later easily refactor it when I add some complications to the problem. I care if you know how to make it perform well, etc.
Testing for Linux skills? Give them a broken VM/Vagrant image and ask them to troubleshoot it, fix it, and install and configure some things. Testing for Ansible/Puppet/Chef knowledge? Ask them to do all of the above and send you the playbook to recreate the fixed image from your broken image.
Interviewing is hard and if you haven't spent many hours thinking on it, setting it up, testing it against your current employees, and figuring out some kind of score sheet so it isn't 100% subjective, then everyone is going to have a bad time.
I interpreted the question as: "What does ruby's name refer to?" so I guess the precious stone... but no https://www.careerride.com/view.aspx?id=2439
Anyway, this seems exactly what a typical clueless recruiter would ask and try to pattern match the answers to
My idea for the technical side is this: procure a fairly subtle, simple, real-life bug that you yourself have had to fix. Ideally it should involve a single class or function and require about an hour for a competent person to fix. Email the code to the candidates along with the parameters that fail, and ask them to resolve the bug and return the code.
This tests a lot of skills that should immediately filter out unsuitable candidates - such as code comprehension, bug-finding, and problem-solving - all in a real-world scenario. You can also change up the scenario every couple of months, and very quickly test whether a candidates' code passes. Has anyone come across something similar to this?
Suitable question given the apparent level of the list...
As for my current job, I think I only got one directly programming related question. They asked if I had done any work with public key crypto, ie generating and verifying signatures etc. I hadn't, though I knew about the theory and math involved.
Maybe they checked out some of the OSS contributions I referenced though... I'll have to ask now.
I found it incredible how much code you can write and feel competent in before finding out crunch time you literally can't write legibly on a board.
I only skimmed a couple of bits but there ought always to be more “thinking” questions rather than “remembering/knowledge” questions.
And of course if you wanted to use some sort of list of interview questions the cultural non technical questions (which isn’t the scope of that curation I think) are the most important questions of all I believe.
> 1. Explain mutable and volatile keywords.
> Volatile keywords are designed to prevent the writer from applying optimisations on objects over which he or she has no control. Any objects that are declared as volatile are just omitted from optimisation to prevent values being changed by coding outside the scope of the original code.
Volatile is a keyword which tells the compiler to not optimize away loads or stores to the relevant memory location (note that volatile is actually a property of memory accesses, not variables, so there's lots of fun corner cases such as volatile bitfields). Actually, strictly speaking, it was originally meant to tell the compiler that the variable was being used to access memory-mapped I/O registers, but it has been shoe-horned to serve other deoptimization uses as well.
> 5. When would you use virtual inheritance?
When you want to find bugs in your compiler. :-) Well, the "correct" answer given in the guide is to not use it, but let's explain what it does anyways. The question really should have been to explain the difference between virtual and regular inheritance, although this does venture into obscure trivia territory because I'm not sure I've ever seen someone use it or want to use it in over a decade of C++ programming...
> 9. What does the acronym OOPS stand for?
This is a worse-than-useless interview question. For starters, I've only heard it as OOP (object-oriented programming), so I have to guess at the S. It has nothing really to do with C++ in particular, especially as C++ has been growing in non-OOP ways in the past decade. Finally, the question doesn't ask to explain or contrast OOP with other paradigms, it just asks you to say that you know its abbreviation. You can know an abbreviation without understanding anything else--I know that SU(3) means Special Unity group of degree 3 but I literally know nothing else about it.
> 13. Define an inline function.
> This is when a function is prefixed and the keyword ‘inline’ is placed before the function definition. They often work faster than normal functions as the compiler replaces the definition of inline functions at compile-time instead of the referring function definition at run-time.
... That's not correct. In C and C++, a function can only have one definition in general. An inline function--which can be specified either by adding the inline keyword or by giving the function body within the class definition--circumvents this rule, instead supplanting it with a rule that the linker must discard all but one copy of the function.
Note that compilers do not generally treat inline as a hint as to whether or not to inline a function, they use their own heuristics instead (incidentally, the register keyword falls in the same boat). Obviously, the function cannot be inlined if its body is not present, but equivalently replacing inline with static would generally have the same impact on inlining.