Last year I interviewed at this company and got the position, working on kernel implementation. They design their own chips, and I found their architecture really cool. I already had some experience with custom accelerator design.
I applied for an entry-level position. I'd done some research in this area during college, which helped both with getting a referral and getting the company interested in me.
I got an internal referral. The interview process was roughly: 3 coding interviews (1 hour each) and 1 behavioral interview. Even though the company uses a coding platform (HackerRank), the interviews were actually done whiteboard-style.
Coding Interview 1:
We started by discussing my past research work. Then there was a simple task: implement vector-vector multiplication. How would you optimize it for a parallel architecture, and how would you do it using sparse linear algebra.
Coding Interview 2:
The interviewer gave a custom task he'd come up with himself. It was a custom message queue structure, and I had to extend it with additional channels and figure out how many channels were needed. I think the core of the task was extending the ID function to use union-find to identify shared communication channels. There were also some questions about the computational complexity of channel identification.
Coding Interview 3:
Implement binary search from scratch in C++. Not much else to it.
Behavioral Interview:
How do you learn in a domain where there's almost no structured information available? How do you handle a serious conflict with a superior? How do you learn new things?
Discussion
Loading comments…