I got contacted on LinkedIn by recruiter and appeared for interviews for the post of Software Engineer. At Arista, the hierarchy is flat, there is no concept of Senior Software Engineer as far as I know.
My current YOE ~ 6 years (approx)
Current Role - Senior Software Engineer at Product based MNC
Summary
Arista's interview rounds were completely focused on testing an individual's understanding of basic Data Structures like Linked Lists, Trees etc and tested my knowledge of Operating Systems. I was asked to write code completely in C/CPP.
Technical round 1: Google Meet with CoderPad: DSA
The interviewer didn't even care to introduce himself or asked me to introduce myself, but directly jumped to give me DSA questions to solve on coderpad. I could run the code and if there was any problem with my code, i had options to use gdb and debug too.
I was given pre-written code that was half complete, I had to complete two to three functions similar to how problems are put on LeetCode. It lasted for an hour.
Qn1:
Given a binary search tree variant where each node had an additional link to its parent node ( I didn't pay attention and I missed looking at this detail initially and struggled a bit for sometime, the interviewer didn't care to tell me about this ).
Something like:
struct node {
int value=0;
node *left=nullptr, *right=nullptr, *parent=nullptr;
node(int i):value(i) {};
};I was asked to complete the functions, findMin(node* root), findNext(node* cur), traversal(node* root) to find the node containing the min value in the tree, the next node in the inorder traversal given a current node and do the inorder traversal using the findMin and findNext functions.
Qn2:
Given a linked list, remove all occurences of nodes having a given value. I had to complete a function where the address to the head pointer was given and value was given and the function mustn't return anything, its return type must be of type void. So, it required some careful handling of double pointers and stuff.
void listRemove(Node **head, int v) {
}Technical round 2: With Hiring Manager - Focus was on OS concepts
The interviewer introduced himself and we had little discussion on the work I do at my current organisation. He then gave me an IP address, username and password to login over SSH.
Once I logged in, the terminal had vim open with some code.
The code had issues where there was a case of stack overflow. I was asked to explain what would happen once the code is run and was expected to explain what is the memory layout of programs, what would happen on stack overflow and then had to jump over to Virtual memory concepts. The program was something like:
int func(int b) {
if (b==0) return 0;
else {
cout << b << endl;
func(b--);
}
}Then moved on to a discussion about how memory is dynamically allocated using malloc/new. Asked about how free would know how much memory to clear.
I was asked to implement my own implementation of free .
Then I was asked if I know tree traversals algorithms, and was asked to write inorder traversal algorithm with and without recursion.
The expectation was to see if I tried explaining the logic correctly and if I was able to attempt the problem without much fear. I wasn't expected to write the exact logic and make it run, the interviewer was interested in knowing my thought process and how I go about writing code itself.
Round 3: Director round:
Lots of discussion around the projects I did and deep technical conversation about how I go about my current role technically. The interviewer was technically very sound and understood everything I was trying to explain. I had experience maintaining Linux platform, discussion went around that.
I was asked how to find files with duplicate content in a given linux directory. I explained that it can be solved by calculating the MD5 hash of each file and then maintaining an unordered_map or unordered_set with the hashes. Then I was asked if I knew how STL's unordered_map was implemented, how are the number of buckets are arrived at and how the data structure can expand as needed. I didn't know much about its internals, I tried to give my thoughts around how it could have been implemented.
Verdict - Offer Letter Received :)