I found the advertisement on LinkedIn and then asked one of my friends (working there) to forward my resume. I received a response from the recruiter within an hour. He asked for a time to set up an on-site technical interview. I took about 10 days to prepare. The interview process was good. Most of the questions were covered by the Glassdoor reviews. I did pass the technical test. I think I could have passed with a little more preparation. They look for deep understanding.
The interviewer started with some small talk and discussed my research work. Then, the technical questions began. The interviewer opened a terminal on his computer. First, he asked if I knew anything about zombie processes. Then, he inquired about 'malloc'. He then asked how I would implement a malloc-like function in a separate memory space, such as one connected to the main memory via PCI. The question wasn't very clear to me. I tried to explain how I could implement memory management over the extra connected memory. I'm not sure if he was very happy with my explanation.
He then navigated to his terminal where a C program was open. It consisted of just two lines:
c char* str1 = "string1"; char str2[] = "string2";
He asked me to print the two strings. After I did, he instructed me to change the 't' in both strings to 'T'. I told him that we cannot change the first string. He asked why, and I couldn't explain it clearly. I simply demonstrated that attempting to change it resulted in a segmentation fault. I suggested it might be in a memory location we cannot edit. He continued to probe, asking for proof of my point. Then, he provided a hint and allowed me to print the addresses of main and some variables. The higher addresses indicated they were likely in the stack. Printing the values of main showed very low addresses, suggesting they were in the code segment. The char* variable was at a slightly higher address, indicating it was in the data segment, which implies we cannot edit anything within the data segment. I wondered what else might be in the data segment.
Next, he introduced some networking terms:
He also mentioned about 6-7 more terms which I have forgotten. He asked me to briefly explain what these functions do.
Then, he asked me to write a Python script that reads a file and adds all the numbers in the third column. He displayed the file using the cat command. The file had space-separated text, like:
1 7 8 9 6 5 5 0 8 8 4 5 7 2 4 6 8 9 0 7 4 5 1 7 9 6 0 3 8 0 1 7 8 9 4 6 8 0 8 6 9 8 6 9 7 0 7 6 4 0 1 2 3 4 5 6 7 8 4 5 6 7 8 9 1 0 1 3 4 8 3 5 1 7 8 9 4 6 8 0 8 6 9 8 6 9
Finally, he gave me a problem involving linked lists. The task was to delete all nodes containing a specific number. I only needed to write the main function and call it from the main file. The structure and the main file were already provided; I just had to add the function prototype to the .h file.
The following metrics were computed from 2 interview experiences for the Arista Networks Software Developer role in Burnaby, British Columbia.
Arista Networks's interview process for their Software Developer roles in Burnaby, British Columbia is extremely selective, failing the vast majority of engineers.
Candidates reported having very good feelings for Arista Networks's Software Developer interview process in Burnaby, British Columbia.