I was contacted by a recruiter at Cardinal Peak through LinkedIn about a DSP Engineering position. We had a short phone screen discussing the company and position, and she made it seem like the role would primarily be a software development position, but with a focus on Digital Signal Processing. That sounded good, so I agreed to do the next round of interviews.
The next round was a 45-minute video call with one of the DSP Engineers. They asked me a handful of fundamental DSP questions (such as the differences between FIR and IIR filters), and it was going fairly well until the interviewer said that most of the work for the position would be done through Matlab and Simulink. I had worked a similar position in the past, and I did not want to do that type of work again, and I made my preferences clear to the interviewer. It was clear to me that this position was not really on the software side of DSP, despite what the recruiter had told me.
A few days go by, and the recruiter contacted me back, saying that the team now thought that I would be a better fit for the Embedded Software team, so they wanted to interview me next. I agreed to these interviews (3 rounds, 45-mins each), but now I had a different recruiter contact. This new recruiter sent me 3 separate emails asking for my availability for these next interviews. I gave her a few options, but instead of replying back by email, she instead cold-called me (while I was at work) to schedule the interviews. I was eventually able to schedule the interviews about 2 weeks in advance, but the fact that she kept trying to schedule them over the phone instead of through email (like most other recruiters have done) seemed a bit strange to me.
The first interviewer asked some pretty in-depth knowledge questions about low-level programming. He asked how main() gets started in a C program, to which I didn’t remember. He also asked about the different types of memory. Towards the end of this session, he asks me an algorithm question, but he doesn’t have the question ready at hand… he claims he had one ready, but couldn’t find it. After an awkward minute, he makes one up, and asks me to swap the endianness of a 4-byte integer. A fair and pretty straight-forward question, I’d say, and I was able to get it after a while. I implement it first by swapping the bytes, and then he asks me to do it again by doing byte-masking and shifting, which I was just barely able to do before the time’s up.
The second interview session ended up being very wide-breadth, where he asked me questions on C++, OOP concepts, specific Linux commands, Networking, and OS topics, all in about 30 mins. The programming question he asked me was to implement a shuffle() function. Off the top of my head, I recall the Fisher-Yates algorithm that I had implemented for a similar function a few years before, but I don’t remember how to implement it at all during the interview. I stumble through the question, and don’t finish it in time since I don’t remember the details of the algorithm. Asking for a shuffle() function in just 15 mins doesn’t seem to be a very fair question imo, unless the interviewee just happens to remember the algorithm for it.
The third and last interviewer was the strangest interview I had for this position. The interviewer first tested me on how I would create a UML diagram. I’ve never had a software interview that asked me this during the interview process. He had me recreate one of my previous projects as a UML diagram from scratch. He then asked me to think of the room I’m currently in, and asked me to classify all of the objects in my room as if they were C++ classes. An interesting thought experiment, sure, but he was looking for 3 specific Class relationships. I had got 2 of them (Inheritance and Aggregation), but he had said that I had missed an example of Composition. I looked up the definition later, and I am positive that I described a few examples of Composition (when an Object HAS an instance of a different class), and I thought it strange that he didn’t seem to recognize examples or even the definition of Composition. The programming question he asked was another bit-manipulation question, and was fairly straight-forward, but instead of sharing it via a website like Coderpad, he shared it as a Google doc… For a higher-up in the company, he seemed pretty out of touch with modern software interviewing questions and tools.
Overall, I was not very impressed with my interview experience at this company. Many of the interviewers seemed unprepared, and there seemed to be a lot of internal miscommunication about the roles. I received a voicemail from the 2nd recruiter (again, no email!) a few days after the 3-hour interview indicating that I was not selected for the position. Oh well.