4 ms·
> I understand that C is the "lingua franca" of interviews, but if you read my resume (or even talked to me) you'd know I'm not looking for a C job (and really
by strlen 15y ago
> I understand that C is the "lingua franca" of interviews, but if you read my resume (or even talked to me) you'd know I'm not looking for a C job (and really haven't used C since college). While, I'm open to coding in C, it's cooler if you don't force me to use C.
The article assumes that the reason someone would ask them to use C on an interview is because it's lingua franca, and they're only interested in the interviewee's algorithm knowledge.
Algorithms are great and should be a part of an interview, but I am interviewing software engineers, not algorists: I'll ask about general algorithms (the ones you might find in first half of "Algorithm Design Manual" and in "Programming Pearls"), data structures (where I'll expect the interviewee to understand pointers: whether in a language like Python or Java, where every value (with exception of Java's primitives) is a pointer or in a language like C where pointers are explicit).
I'll also ask about algorithms specific to their job, or (if I am interviewing a candidate for another project, as a part of a panel) I'll leave that to other interviewers. If, for example, somebody lists ten years of distributed systems development they should be familiar with the various consensus algorithms, pros and cons of them (I will not expect them to implement Paxos, but it would be nice if they know how multi-Paxos and ZAB solve some of the issues Lamport's original algorithm had). Again, this is for experienced candidates being interviewed for a role in which they claim existing experience.
There are also simple algorithms (related to string or array manipulation) that are just easier implemented in C. If ask someone to reverse a string in place [NB: I don't actually ask this], they'd have an easier time doing it in C than in Java.
However, there's more to C than a language in which to implement algorithms: it's also a systems language. I want candidates I hire to understand how their computers work. I'll challenge them to understand how various system calls work, how parts of libc are implemented, how memory allocation works (and, if I am interviewing a candidate for a Java, Python et all collection how garbage collection works, and in what cases might it fail to work). In this case, knowing C (and having it used it, at least in your own free time after college) is invaluable, not because of the language itself-- but because it's a great portable assembler.
I understand people are frustrated when they're expected to know C, even though they won't be programming in it: however, it's not about the language, it's about knowing about an area of computer science that isn't often as glamorous, but is just as crucial as algorithms and data structures.
- __mharrison__ 15y agoI'm not completely convinced that programming in C in an hour long interview is the most productive way of testing system call, libc and garbage collection knowledge. I do agree if you are applying for a systems level job, C testing should be more rigorous.
- strlen 15y agoYou don't have to answer every single question in C. It's just that you're going to be much more likely understand a question e.g., "how do free() and malloc() work" if you know C. You also don't want to be asking difficult questions for the entire hour: I always prefer to let the candidate introduce themselves, warm them up with an easier question (to help make the candidate less nervous), add a challenging twist to the easy question, and then asks the most challenging questions. Understanding systems matters for more than systems levels jobs: perhaps you don't need it if you plan to work on CRUD apps in a financial organization, but if technological aptitude is an enabling factor for a company you're applying to (that's the case for companies in Silicon Valley: otherwise there's no point to being in the most expensive part of the country), you should understand more than your segment of the stack (that goes both ways: systems programmers should still understand HTTP and high level languages if they work in a web services company).
- __mharrison__ 15y agoack and ack :)