Backend Engineer | Zenskar
JP Morgan Chase | SDE 3 | YOE 3.4
Microsoft SDE - 2 | Interview Experience | Status Pending
eBay || SWE3 Interview Experience || Bangalore
Bloomberg | Interview Experience | Senior Software Engineer | NYC | Nov 2025
Verizon SDE 2 Embedded Software Developer Interview Experience || Selected
Summary
I successfully interviewed for the SDE 2 Embedded Software Developer position at Verizon. The process comprised three technical rounds and one HR round, covering C++ fundamentals, data structures, algorithms, system design, concurrency, and behavioral aspects.
Full Experience
My interview journey for the SDE 2 Embedded Software Developer role at Verizon was a comprehensive and insightful experience, ultimately leading to an offer.
Round 1: Technical Interview (1 hour)
This round began with my brief introduction, detailing my background, experience, and the projects I've worked on. The interviewer then delved into a series of technical questions, primarily focusing on C++ fundamentals and memory management.
Questions included: What is a pointer and why do we use them? How are memory allocated statically in the stack versus dynamically in the heap? What is the size of a pointer in a 64-bit architecture? (I answered: 8 bytes). There was a snippet to analyze: char* a; void* b; cout << sizeof(a) << " " << sizeof(b) << endl;, for which the output was 8 8. I was asked to write a program to reverse the digits in a number. Further questions explored multithreading concepts like "What is a thread?" and "What is a mutex?". We also discussed advanced C++ features such as "How do you declare a pointer to a function?", "What are unique pointers and shared pointers?", and I was asked to "Create an array pointer of size 100 using a unique pointer" (Answer: std::unique_ptr<int[]> arr = std::make_unique<int[]>(100);). Other topics included "What is a reference?", "What is the auto keyword?", "What is an interface?", "What is lambda capture?", and "Do arithmetic operations happen on a void pointer?" (Answer: No). The interviewer also assessed my leadership skills by asking about past experiences leading a team. I was advised to be ready to code solutions for the questions asked.
Round 2: Technical + Behavioral Interview
This round started with an in-depth discussion about my past projects and the technologies I utilized. Following this, I tackled coding questions. I was asked to "Delete a node from the middle, head, and tail of a linked list" and to "Implement the KMP algorithm for string pattern matching", including a discussion on brute-force, improved versions, and their time/space complexities.
Scenario-based questions were a significant part of this round: I demonstrated how to "Create a char array of size 200 in both C and C++ (static and dynamic allocation)" (Answer: C: char arr[200];, char* arr = (char*)malloc(200 * sizeof(char));; C++: char arr[200];, char* arr = new char[200];). A detailed discussion ensued on "Why do we use delete[] for arrays, but free(ch) in C? Does delete internally use free?" (Answer: delete[] ensures proper destructor calls in C++ arrays, while free() is for C; delete internally calls free() after destructors). I was also posed a system design scenario: "If two threads t1 and t2 are running, and your manager asks you to pass data from t1 to t2, how will you do it?" (Answer: Using shared variables, std::promise, and std::future). Finally, we discussed "What happens if your system crashes? What could be the possible reasons? How can you avoid it?" (Answer: Reasons include buffer overflow, dangling pointers, memory leaks; avoidance through proper memory management, smart pointers, bounds checking, and debugging). I concluded this round by asking the interviewer some questions.
Round 3: HR Interview
The final round was a standard HR interview, covering behavioral questions and discussions regarding salary expectations, roles, and responsibilities.
Interview Questions (23)
Explain what a pointer is and the reasons for using them in programming.
Describe the differences between static memory allocation on the stack and dynamic memory allocation on the heap.
What is the typical size of a pointer in a 64-bit system?
Determine the output of cout << sizeof(a) << " " << sizeof(b) << endl; given char* a; void* b;.
Write a program to reverse the digits of an integer.
Define a thread in the context of operating systems and concurrent programming.
Explain what a mutex is and its purpose in concurrent programming.
Demonstrate how to declare a pointer to a function in C++.
Describe the concepts of unique pointers and shared pointers in C++ smart pointers.
Create an array of size 100 using std::unique_ptr.
Define what a reference is in C++.
Explain the purpose and usage of the auto keyword in C++.
Define what an interface is in object-oriented programming.
Explain the concept of lambda capture in C++.
Can arithmetic operations be performed on a void pointer?
Describe any experiences where you have led a part of your team.
Implement logic to delete a node from the middle, head, and tail of a linked list.
Implement the Knuth-Morris-Pratt (KMP) algorithm for string pattern matching. Discuss the brute-force approach and the improved KMP algorithm, including their time and space complexity.
Demonstrate how to statically and dynamically allocate a character array of size 200 in both C and C++.
Explain why delete[] is used for arrays in C++ while free() is used in C. Discuss whether delete internally calls free().
Describe methods to pass data between two running threads (t1 and t2).
Discuss potential causes of a system crash (e.g., buffer overflow, dangling pointers, memory leaks) and strategies to prevent them (e.g., proper memory management, smart pointers, bounds checking, debugging tools).
Standard behavioral questions and discussion of salary expectations, roles, and responsibilities.
Preparation Tips
To prepare for this interview, I focused on strengthening my C++ fundamentals, including memory management, pointers, and smart pointers. I also practiced data structures and algorithms, particularly linked lists and string matching algorithms like KMP. Concurrency concepts, such as threads and mutexes, and basic system design principles for handling crashes and inter-thread communication, were also key areas of my study. Additionally, I prepared for behavioral questions related to leadership and problem-solving.