Verizon SDE 2 Embedded Software Developer Interview Experience || Selected

verizon logo
verizon
SDE 2 Embedded Software DeveloperOffer
April 13, 20250 reads

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)

Q1
What is a pointer?
Other

Explain what a pointer is and the reasons for using them in programming.

Q2
Static vs. Dynamic Memory Allocation
Other

Describe the differences between static memory allocation on the stack and dynamic memory allocation on the heap.

Q3
Size of Pointer in 64-bit Architecture
Other

What is the typical size of a pointer in a 64-bit system?

Q4
C++ sizeof Pointer Output
Other

Determine the output of cout << sizeof(a) << " " << sizeof(b) << endl; given char* a; void* b;.

Q5
Reverse Digits of a Number
Data Structures & AlgorithmsEasy

Write a program to reverse the digits of an integer.

Q6
What is a thread?
Other

Define a thread in the context of operating systems and concurrent programming.

Q7
What is a mutex?
Other

Explain what a mutex is and its purpose in concurrent programming.

Q8
Declare Pointer to a Function
Other

Demonstrate how to declare a pointer to a function in C++.

Q9
Unique Pointers and Shared Pointers
Other

Describe the concepts of unique pointers and shared pointers in C++ smart pointers.

Q10
Create Unique Pointer Array
Other

Create an array of size 100 using std::unique_ptr.

Q11
What is a reference?
Other

Define what a reference is in C++.

Q12
What is the auto keyword?
Other

Explain the purpose and usage of the auto keyword in C++.

Q13
What is an interface?
Other

Define what an interface is in object-oriented programming.

Q14
What is lambda capture?
Other

Explain the concept of lambda capture in C++.

Q15
Arithmetic on Void Pointers
Other

Can arithmetic operations be performed on a void pointer?

Q16
Leadership Experience
Behavioral

Describe any experiences where you have led a part of your team.

Q17
Delete Node from Linked List
Data Structures & AlgorithmsMedium

Implement logic to delete a node from the middle, head, and tail of a linked list.

Q18
Implement KMP Algorithm
Data Structures & AlgorithmsHard

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.

Q19
Static and Dynamic Char Array Allocation
Other

Demonstrate how to statically and dynamically allocate a character array of size 200 in both C and C++.

Q20
delete[] vs. free()
Other

Explain why delete[] is used for arrays in C++ while free() is used in C. Discuss whether delete internally calls free().

Q21
Inter-Thread Data Passing
System Design

Describe methods to pass data between two running threads (t1 and t2).

Q22
System Crash Analysis and Prevention
System Design

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).

Q23
Behavioral Questions and Salary Discussion
Behavioral

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.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!