A few months ago an HR person from Tesla reached out to me about a senior SDE role on an infra team under Tesla AI. I originally didn't have much interest in Tesla, but HR said their package could go up to twice my current package, which instantly got my attention, so I went and did the whole loop. Tesla hires by team, so the interview process and content are entirely decided by the team.
It started with two phone screens.
Phone screen round 1 was coding: convert a singly linked list into a doubly linked list. The follow-up: assume each node in the list can have at most one side branch, which makes it a binary tree structure, and you have to splice the nodes in the side branch in between the parent node and the child node, so that you end up with a single doubly linked list. It's really just a binary tree preorder traversal. I finished in about half an hour, and after that I chatted casually with the interviewer about the team.
Phone screen round 2 was coding, a common medium problem. Not hard and nothing new, so I've already forgotten what the problem was.
After I passed the phone screens they scheduled an onsite at the Palo Alto office. The day was originally scheduled with five formal interviews plus a team lunch in the middle, and then at the end they added an HM round last-minute, so six formal interviews in total. I interviewed for the entire day, and by the end I was so exhausted I could barely talk clearly. And of course the most important one, the HM interview, was put at the very end.
-
System design, with the problem taken from their team's business. Design a distributed storage system for storing build artifacts. It's similar to designing a distributed NoSQL database, except that what gets stored is blobs rather than documents/key-value, and the ACID requirements aren't as strict.
-
Resume deep dive / behavioral. Questions about the projects on my resume, discussing the technical points in depth with the interviewer, like why it was designed this way, whether there were alternatives, and so on.
-
Team lunch. Even though it doesn't count as a formal interview, I didn't dare relax at all. I was chatting the whole time while eating, about life, hobbies and so on.
-
Coding, but not LC-style. The interviewer provided a codebase built with the Python curses library, with a CLI UI, an event loop and a renderer. The codebase is a small game that is missing some features, and you have to understand the code first and then fill in the missing features. Not very hard. I finished writing it in about half an hour and spent the rest of the time chatting with the interviewer.
-
Linux fundamentals. The interviewer was a distributed system engineer with SRE experience. The question: suppose the workloads/processes scheduled onto a server cluster randomly crash while they are being created, how do you troubleshoot it? I was supposed to propose which commands to use to check processes, memory, network, IO and so on, and then, through a back-and-forth where I ask and he answers, dig out a hidden bug he had set up in advance.
I know absolutely nothing about Linux, so I was completely lost in this round. But the interviewer was very friendly and kept reassuring me that it was fine not to know. At the end he mentioned that those cronjobs could create tens of thousands of threads, and I suddenly remembered that Linux has a cap on the number of threads, and once you hit the cap, creating new threads fails, so I sort of guessed the answer to the puzzle. But which specific Linux commands you'd use to troubleshoot it and what errors the system would report, I had no idea, so I basically didn't answer anything.
-
Half system design + half resume deep dive.
-
I thought I was done at this point, but then they told me they were adding one more HM round last-minute, which would decide the final result of the interview.
The HM round was also system design. The question: from the moment a Tesla engineer does a git commit and pushes to the mono repo, until the car software finally gets updated onto the car's onboard system, what happens in between?
I said the git commit triggers a pipeline build, the build artifacts get stored in object storage, and then there are wave-by-wave rollouts, deploying first to test hardware, then test vehicles, then canary vehicles, and finally a large-scale push to users. The HM focused his follow-ups on the build process: in a mono repo, how do you decide what needs to be built? I said you build a DAG from the build targets, compute all the transitive affected targets from the dependencies, and then do a topological sort to work out the build order. I've never worked on a build system, but when I got home I asked AI about it, and I had basically hit the key points.
The HM then asked: what's the most complex project you've done? By this point, after a whole day of marathon interviews, I was so tired my thinking had frozen, so I just picked some project I'd done before, and the HM was clearly not very satisfied after hearing it.
Finally he asked what questions I had for him. My brain had basically stopped working, so I just asked a few random questions and that was the end of the interview.
The next day the recruiter gave me feedback: technically solid, but the scope of my past projects didn't reach the senior bar, and I also lacked the ability to ask probing follow-up questions that a senior needs, so in the end I failed at the HM round. After hearing that I was speechless. This was the first time I'd run into a 7-hour marathon interview like this. If I had actually passed and joined, I'd probably be looking at 996 hours and crushing pressure. Looks like Elon's big packages really aren't that easy to get.
Discussion
Loading comments…