I write code every day and I still had to ponder your question for quite a while before I could think of a data structure I use regularly by name.
It is not exactly useful knowledge to keep top of mind. It is not like you need to look up how to use daily data structures. I had an easier time remembering the names of data structures I almost never use, or even have never used, as retaining their names actually has some usefulness.
In an interview situation, I expect I would also give up with stating I could not recall any to save the awkwardness of sitting there silent for half an hour racking my brain.
I'm sorry, but what? If you can't even remember what list/set/map whatever is called, how are you going to use them? We're not talking about exact syntax here, just what data structures you use...
> If you can't even remember what list/set/map whatever is called, how are you going to use them?
Certainly not by dictating their names to my coworker. Why would I need to know their names? I suppose some languages require you to know their names in order to use built-in implementations, but lots of languages use other syntax – often void of natural language (e.g. [], {}, etc.) – to do the same.
I eventually got there, but it took awhile to remember. That's great if you have prioritized trivia to occupy your mind's space, but I have found no reason to.
> Why would you need to _communicate about programming_? Because it's a core part of your job...
Honestly, I am not sure I have personally ever had to communicate low level details like that with anyone else. The people I have talked pogromming with in my life have all be capable technologists, which allow us to discuss in high level detail. If a list is the right data structure for whatever high level problem we are trying to solve, it is assumed we know that and understand how to use it.
> Every interview question can be characterized as trivia if you squint hard enough.
Well, I suppose. And there isn't anything wrong with trivia per se. But at the same time it should not be surprising when someone doesn't have an answer. A lot of this stuff just isn't worth having in immediate memory – unless you enjoy trivia, in which case, cool!
> Honestly, I am not sure I have personally ever had to communicate low level details like that with anyone else. The people I have talked pogromming with in my life have all be capable technologists, which allow us to discuss in high level detail. If a list is the right data structure for whatever high level problem we are trying to solve, it is assumed we know that and understand how to use it
This feels like either hyperbole or extremely rare/almost impossible, but regardless for myself and those I hire, I believe it to be a core competency.
> This feels like either hyperbole or extremely rare/almost impossible
Why's that? Aren't these basic knowledge items almost always able to be left unspoken? "Here is what we are trying to accomplish, and you must use a map in your implementation" never seems pertinent. There is faith in the people I work with that they will understand how to best implement something.
Furthermore, if there were some reason to bring up, say, a list then I could fumble around with some other ideas to get the group there. "I'm blanking on the term, but you know, the thing you can build with square brackets.", "Oh, you mean a list?", "Yeah, that!" But that doesn't satisfy the question posed here which specifically asked for the structure by name. In normal situations you don't need that kind of thing at your beck and call like you do when you are playing with a trivia master.
> I believe it to be a core competency.
And, to be fair, if I were knowingly about to enter a developer interview I'd probably brush up on the language ahead of time knowing that it is likely that an interview very well might want to talk about the trivial basic building blocks to weed out those who have never programmed before. But I personally haven't interviewed for a job in 20-some-odd years, so again, not something in the forefront of my mind before this discussion happened.
However, of note, the interview in question was for a people-based job, not a technical role. Who is going to think to study the technical language ahead of time in that situation? It wasn't pertinent to the job. The interviewer just went there because it was noticed the person once was a developer in a past life.
> Aren't these basic knowledge items almost always able to be left unspoken
Nope.
> "I'm blanking on the term, but you know, the thing you can build with square brackets."
Data structures are unrelated to brackets, so I assume this is hyperbole.
> In normal situations you don't need that kind of thing at your beck and call like you do when you are playing with a trivia master.
Are your friends names also trivia? The word "car", "tree", "sun"?
Hyperbole.
> But I personally haven't interviewed for a job in 20-some-odd years, so again, not something in the forefront of my mind before this discussion happened.
Respectfully, my assumption is that you also don't work in technology, or always work alone.
> the interview in question was for a people-based job, not a technical role
Technical leadership requires some amount of software knowledge as a core competency.
> Who is going to think to study the technical language ahead of time in that situation?
Someone claiming to have 10+ years of developer experience should know the word "list". Full stop.
> It wasn't pertinent to the job
It was pertinent to the job.
> The interviewer just went there because the person once was a developer in a past life.
Well, no not really. Because the person was expected to communicate intelligently about software, and knowing the basics of data structures is again a core competency.
> Communicating about work is a core part of work.
Absolutely, and the work I do is solving problems to further business objectives. As such, we talk about business things. Lists, sets, and maps are not normally business-related terms. Indeed, programming is the tool we most often use to implement the solutions to the particular problems we face, but it is not the work any more than a hammer is the work.
> Respectfully, my assumption is that you also don't work in technology, or always work alone.
I do not work alone, but I use the tools alone, yes. I expect most do. I don't see much evidence that pair/mob programming has ever caught on in a significant way.
> Data structures are unrelated to brackets, so I assume this is hyperbole.
They are indeed related as some programming languages use [] syntax to denote use of the data structure mentioned. If the people involved in the conversation are familiar with those languages, they can infer what is meant through the process of communication.
> Someone claiming to have 10+ years of developer experience should know the word "list". Full stop.
You're going off the rails here. A developer of 10+ years will know the word "list". That is not in question. The topic of conversation is how they will not necessarily have it at the tip of their tongue, because why would they? Unless you are caught in the 10 years of experience doing the same thing over and over trap, leaving you forever a beginner, it is not something people normally talk about.
Again, what would seasoned developers need to talk about lists, sets, and maps for? They should know them inside and out, backwards and forwards. "Hey colleague, I need a list here, but I forgot how to do it. Can you help?" never comes up. "Good news everyone, I discovered this great new thing... It is called a list!" – not going to happen. If we were talking about esoteric data structures, that's a little more conceivable, but we are talking about the ones you use essentially every time you write some code.
I think the part of the question that throws people is “most common”. It begins to sounds like a trick question, because it hat is the most common? Its going to very from code base to code base.
Maybe id the question was name 3 data structures, any 3 it might sit well.
But even so. The question did devolve into list of things somebody should know as a ex developer.
> I think the part of the question that throws people is “most common”. It begins to sounds like a trick question, because it hat is the most common? Its going to very from code base to code base
That’s pretty textbook overthinking for an interview. The point is that it varies from codebase to codebase. Tell me about what you normally use and I’ll ask questions.
> Maybe id the question was name 3 data structures, any 3 it might sit well.
Trying to get every human to agree on the wording for an extremely easy and general question isn’t a worthwhile use of time though.
> But even so. The question did devolve into list of things somebody should know as a ex developer.
Interesting use of “devolve”. An an interviewer for a technical role, am I not allowed to have a set of required skills? And is a basic understanding of common data structures not allowed to be in that set?
Languages and English is hard. So asking clear questions is important. Proof is in this conversation. As you seem to have suggested so much from so few words.
It devolved, because it went from what looked like a structured question with a finite expcted result, "Name the most common data structures" , to something more loose, a list of structures, any structures.
Further more, we agree, the candidate was trash, and I don't think the wording would have helped. But I do think a more precise question, or maybe a less loaded, or bias inducing question of "name some data structures". Namely, because "common" is subjective as I pointed out. If you are writing lisp all day, well, list are your most common. If you happen to be in assembly then registers are. So to be a better interviewer you don't want to taint the question with your notions.
Sounds like a trap. The first structure that came to mind was an r-tree. While I have a superficial understanding of when to use one, I have never needed to and would need to look up the details for the next question that is no doubt to talk about it in detail.
It came to mind first because I don’t know the intimate details and would need to look them up should I ever need that structure. That leaves reason to keep the name in active memory, unlike the structures you use daily, which never have reason to communicate outside of artificial situations.
> And is a basic understanding of common data structures not allowed to be in that set?
It may not be unreasonable, but the question didn't ask that. Granted, it is unlikely the interviewer was skilled in interviewing and the ill-conceived question was born out of their own lack of ability in the the job they were thrown into doing. The reality is that very little effort goes into researching the science of hiring in the first place, and it is even less likely to find people who are both experts in technical matters and experts in what little we do know about interviewing. For how critical businesses claim the hiring process is, it is amazing how they will so often happily throw the first bumbling idiot they can find willing to accept the interviewer role into it like it doesn't matter.
It is not exactly useful knowledge to keep top of mind. It is not like you need to look up how to use daily data structures. I had an easier time remembering the names of data structures I almost never use, or even have never used, as retaining their names actually has some usefulness.
In an interview situation, I expect I would also give up with stating I could not recall any to save the awkwardness of sitting there silent for half an hour racking my brain.