| ▲ | tombert 2 hours ago | |
I have a two way tie for the worst interviews I've ever had, for very different reasons. First, in 2023 I interviewed for a startup as a lead architect. They had me do some virtual whiteboard stuff, and so I was drawing rectangles and cylinders and mentioning things like "database" and "message queues" as generically as I could. They would interrupt me and say stuff like "Which message queue? Where do you download that?". The interview went on for a long time, with many bizarrely-specific questions for a whiteboard interview, but I figured that it was just their way to make sure that candidates didn't bullshit them by handwaving away important details. They did make me an offer a few days later, but not for as much as I wanted. That's fine, no hard feelings over that. But then a week later the CEO emails me asking for technical help on a question. I was on the train when I got it. I don't remember the exact question but it was something to do with RabbitMQ and Redis, and it was pretty easy, so I just typed out a quick answer to my phone and replied without even really thinking about it. Then another half-hour later he responds back to my reply asking for more detail on everything. After his last reply I sent a response like "I am happy enough to continue this conversation but I'm afraid I will need to start billing the time it takes for me to reply. Give me a call and we can discuss the rate. He didn't reply. And then I realized something: this company was using interviews as unpaid consulting. That's why they were asking for bizarrely-specific stuff during the interview, and that's why the CEO was still trying to get free consulting out of me even afterward. Really pissed me off, and I am very glad I didn't accept their offer. I am generally a person who is happy to help answer technical questions for free [1], but I felt like my trusting nature was kind of weaponized. --------- Second was last year at a big bank. I was really excited for this job, so I showed up to the interview in my best (and only) suit, made sure everything looked nice, and had studied for many of the technical questions I thought they were likely to ask the previous night. Off to a bad start, it was one of the hottest days in NYC of the year, and I sweat a lot by nature, so in combination with the full suit, by the time I got to the building I was already kind of drenched in sweat. Once I get in, they start giving me some conceptual algorithm questions on the whiteboard. I don't remember the exact question, but I remember they asked the runtime complexity of my solution and I said "Looks like O(n + log m) where n is the length of list A and m is the length of list B". One of the interviewers very confidently corrects me an says "You got your n and m backward". I look at the board, go through my solution, and, no, I actually hadn't gotten the variables backward. I have no idea what you're supposed to do in a situation where you're right and the interviewer is wrong [2], so I just do a trace through my solution and explain that, no, my variables were appropriately assigned. He still confidently "corrected" me again. At this point I really don't know what I'm supposed to do, because I'm not going to just lie and say "oh you're right", but if I'm wrong, then I do want to know why so I don't repeat the mistake in the future. So I ask him "Ok, let's trace through this again because I really don't think my understanding is wrong here". It was this bizarre gaslighting experience, because he would agree with every premise of why I thought the answer was O(n + log m), and every reasoning step along the way, but then still insisted I got the answer wrong. I do really know my Big O complexity, I have been doing this for a very long time, so eventually I just said something like "I guess we need to agree to disagree" because my time for that interview was almost up. Then there was another interview immediately afterward. The interviewer started asking me very specific questions about Java Spring MVC (like about which annotations to use and whatnot) Now, I don't have Java Spring on my resume, I haven't touched Java Spring in more than a decade, and Java Spring was not in the job listing. I didn't even consider studying Spring MVC because the listing didn't even mention that this would be web-based. So I tell the guy something like "umm, I don't really know Spring. I know how a web request works so I'm happy to answer conceptual questions on the whiteboard, but I'm afraid I would have to learn the specific syntax". And he responded "Well this is not a junior role. You shouldn't have to learn." So of course I get the specific Spring questions wrong, and fine, if they wanted a person who knew Spring, that's ok, even if they should have put that in the job posting. But then he asked me to, on the whiteboard, design a basic web request where there was a global counter [3]. I use an AtomicLong, which to my understanding is what pretty much every human who writes Java uses for counters. He asked me why I used an AtomicLong, and I said "because it's what everyone uses, and because it doesn't block and because compare and swap for a small surface area like that is pretty cheap". The guy then, corrected me, and told me to use a mutex. I said "I don't think a mutex is necessary here, if it's just a counter I think an atomic is fine." He was very insistent, and told me to rewrite it with a mutex, and at this point I am starting to question my own competence, so I yield and just rewrite it with a ReentrantLock, which he again "corrected" me saying that I should use `synchronized`, and at that I push back and say "no, ReentrantLock is fine". I left the interview feeling like a moron; I was so sure about this stuff before, but maybe I didn't have the understanding I thought I did. I'm friends with a few graybeard C and C++ programmers on Discord, so when I got home I told them the questions and asked them how they'd solve them, and they solved the problems in the same way I would have. Then I realized that this interviewer, who was principal level, didn't know what an atomic was, and I think he also had no idea how to use ReentrantLock, and so when I used them he just assumed I was wrong. Moron. [1] And that's still true; feel free to email me if you want to geek out about software :) [2] And it seems like the answer I get for that varies between each person. I'm not sure anyone knows. [3] With, to be clear, no further arithmetic or anything being applied to it, before someone asks. | ||