I was contacted by a recruiter, while not actively looking for a job, I am more or less happy with my current position. I have always been fascinated with Tesla and the work of Elon Musk, so I thought I'd explore the opportunity.
To note, I have over 20 years of experience in the industry and consider myself very senior level, programming in C++ and at the system level. I work in the self-driving car industry, specializing in camera and imaging. I follow and know Tesla's work at an advanced level.
I haven't participated in a job interview for about three years.
After a couple of phone calls with the recruiter, I was set up with a phone interview. I initially thought it would be a less formal phone screen. However, the day before, I was sent a Codepad link for a coding challenge that I was supposed to complete during the interview slot (45 minutes).
In my years of experience, I've completed many coding challenges from both sides of the interview process, so I wasn't overly worried.
Additionally, the recruiter sent me a link with another challenge, which was said to be much harder. It was stated that once I opened the link, I would be timed for five hours and would need to submit responses within that limit. I didn't open the second link since I didn't have the time at that moment before the phone screen occurred.
During the phone interview, I was asked to describe myself, which I did for about 20-25 minutes, speaking mostly about my background. The interviewer did not interrupt me or ask many questions. I thought this was fine.
Then we proceeded to the coding challenge. He copied the sample code into the Codepad so I could see it. The code was a C++ snippet that created a tree-like structure, and the task was to implement a print function to output a value from each node of the tree in a specific way.
I took about three to five minutes to examine the code so I could understand it completely (it was about 2.5 pages, I think). Then I started to write the code.
My initial thought was that I could employ a single node pointer to walk through the tree; however, I quickly realized this would not work. I was commenting aloud my thought process.
I discussed with the interviewer that we'd need to copy part or the whole tree structure in a different order to succeed. He said that might be fine, but we'd want to save memory, so a full tree copy would not be advisable.
I took about three to five minutes to pause and think about how to approach the solution. After that, I quickly drafted code that used two vectors to traverse the tree, representing the "current" and "next" levels. We continued to talk, and I said it should probably work. The interviewer said, "Let's run it."
This first run produced an endless loop, and I quickly realized a mistake where I had forgotten to clear one of the vectors. I quickly corrected the problem, and the second run produced the correct output.
Overall, I think I took about 15 minutes to solve the challenge, at which point we were left with about five minutes of time. The interviewer asked if I had any questions for him. I asked him to describe the company, culture, etc., which he did. Then he said he had to go, and we ended the call. This was on a Friday.
I then wanted to complete the other five-question challenge over the weekend, however, due to family matters, I couldn't find the time. Finally, I tried to do it during the next week, but at this point, I discovered that the link was no longer valid. I wrote to the recruiter about it and received no answer during the following few days.
At this point, I have to conclude I failed the coding part, so they simply terminated the process.
Thinking about it, I would assume the interviewer was looking for me to implement the solution in a more classic way, using a standard queue instead of two vectors. Yes, it would be a more standard computer science approach, but it didn't particularly come to mind at the time. Considering my code, I find it was as efficient as the classic approach. I conclude that the interviewer did not allow for flexibility in the interview process; he wanted to see a solution exactly as he was expecting, without any analysis.
I think this is a bad approach. We should have looked at the code and discussed, and he could have pointed out the issue to me. But he just said it was fine, and we finished.
I am not happy that there was no feedback from Tesla about it. I dislike when companies handle things this way. I think they should respect the time candidates spend and provide a brief note.
Coding challenge in a codepad
The following metrics were computed from 6 interview experiences for the Tesla Software Developer role in United States.
Tesla's interview process for their Software Developer roles in the United States is very selective, failing most engineers who go through it.
Candidates reported having good feelings for Tesla's Software Developer interview process in United States.