Education: B.Tech from one of best college in Bengaluru
Years of Experience: Fresher
Company: NXP Semiconductors
Title/Level: Software Engineer I (Embedded)
Date: September 2024
Online Assignment:
- Profile: Embedded
- Number of Questions: 35
- Type: All MCQs (C & OS output-based with a specific focus on pointer arithmetic)( +3,-1)
- Time: 1 hour
- Note: The questions were based on the chosen profile (Digital, Analog, or Embedded).
- Mode: In Campus Labs
Interview R1 (Type: Elimination) (Approx 1 hr)
Note: My resume was filled with software-related experience & project (SDE) (not for Embedded).
- The interview started with an introduction followed by a discussion about my resume. I explained all my projects briefly. The interviewer was particularly interested in one of my projects that involved graph algorithms like BFS, DFS, IDDFS, A*, and IDA*. He asked me to explain each algorithm one by one and write pseudocode for them. Since the project involved low-level design, he also asked why I used abstract classes, focusing on basic OOP concepts and how they were helpful in the project. (Approx 25 min)
C Language Questions:
- Difference between structures, unions, and classes (both in C and C++).
- Pointers and pointer arithmetic, along with complex functions involving pointers (Refer: Gate smasher lecture 21 (Declaration examples in C Programming)).
- Detailed explanation of storage classes.
- Compilation to execution program flow.
- Macros vs. inline functions.
- Dynamic memory allocation (calloc, malloc, realloc) - brief explanation of all three.
Operating System (OS) Questions:
- What is context switching? How does it happen? (Explained in detail, including the register level and stack unstack cycle flow). A follow-up question on what is stored in each register.
- Process states (new, ready, etc.).
- Scheduling algorithms (all of them) and the difference between preemptive and non-preemptive scheduling, including LTS, MTS, and STS (schedulers).
- Deadlock: Explained the four necessary conditions and gave a brief explanation of the Josephus problem and reader-writer problem.
- Paging: Explained how it works, with an extrapolation to thrashing.
- Swap area: Explained using the example of GTA Vice City.
- Inter-process communication (IPC): Semaphore vs. mutex and their use cases, along with an explanation of critical sections.
Coding Questions (Easy DSA):
- Swap two variables without using a third variable (gave all three approaches).
- Bitwise operations: Set, flip, unset, and count bits (basic). To impress the interviewer, I also gave an approach for finding the sum of set bits from 1 to N.
- Given all elements appear twice except for two elements that appear once, find the two unique elements.
- Palindrome: Provided both recursive and non-recursive approaches.
- All the above questions required me to explain only the approach. However, below the questions, I had to write working code directly in the interviewer's IDE.
- Implement a singly linked list (SLL): The interviewer asked me to create a basic SLL and add two elements, but I went the extra mile by implementing a menu-based system for inserting (at the front, back, or a specific position) and deleting (by position or value) elements. The interviewer was quite impressed by this. (without any compilation error it runs in 1 go).
Up until this point, the questions and answers felt like a rapid-fire round.
Microcontroller, Microprocessor, and COA Questions:
This section was based on the microcontroller I had studied in college (I wasn't fully prepared, so I answered by recalling things and taking my time)(I mentioned this to the interviewer as well).
- RISC vs. CISC.
- DMA (Direct Memory Access).
- Architecture of ARM Cortex M4 (gave a brief oral explanation but couldn't draw the diagram).
- Parallelism vs. concurrency.
- Communication protocols (SPI, I2C, CAN): I explained them briefly, though I was not prepared for register-level details. I explained bus arbitration in detail for CAN. (He mentioned that these are just technologies that can be learned.)
- Polling vs. interrupt (explained all types of interrupts).
At the end, the interviewer was running out of time, so he concluded the interview and asked if I had any questions.
I asked about the technologies they were working on, which led to a discussion about cryptography and networks:
- Explained the layers of a network briefly.
- Gave a basic explanation of cryptography (he wasn’t fully satisfied).
- Asked about quantum cryptography—couldn’t answer.
- Explained subnetting and firewalls briefly.
- Packet switching vs. message switching.
- Flow control—just to check if I knew it.
Interview R2 (Team Allocation Round) (Approx 30 mins)
This was more of a core subject round.
C Language Questions:
- Rate yourself in c cpp (6-7) python(3-4) on a scale of 10.
- How are you with data structures? Which data structures are you familiar with? I started explaining from arrays, linked lists, and trees (Fenwick tree, segment tree) to graphs (DSUs, Trie).
- More pointer questions and bitwise operations (only explained the approach on paper).
- Malloc: I gave an explanation and was asked to implement it. I didn’t have a direct idea but started discussing fragmentation techniques used in OS and explained how memory allocation happens with fixed, dynamic allocation, paging, etc. I then explained the free list maintenance (best fit, worst fit, etc.) and implemented free list algorithms, which impressed the interviewer. (Fortunately, the interviewer's laptop kept charging).
Microcontroller and Processor (MPMC) Questions:
- Communication protocols (he wanted detailed explanations): I explained with the help of block diagrams but couldn’t recall the register names.
- USART & UART (gave only the basics, I wasn't able to recall the full form either).
- Architecture and peripherals of microcontrollers.
- ADC, DAC & TImers in microcontrollers.
- Accelerometer (I explained a lab program from my 4th semester that suddenly came to mind).
Signal Processing Questions:
- Discrete vs. continuous signals.
- given time domain graph of some continues single, draw its frequency domain graph (unable solve)
- Z-transform and S-transform (gave a basic understanding only).
- Poles and zeros (related to control systems).
- FFT and DFT (explained what they do but couldn’t write the formula). He mentioned that he didn’t remember the formula either.
Role Discussion & Final call (off-topic discussion):
- He explained the technology I will be working on at the company.
- He discussed what I needed to prepare (fundamentals, which I was taking some time to recall).
- We talked about when the work will start, etc.
- He also shared his experiences in the company.
- He asked how many interviews I had given and why I hadn't been placed yet. He also inquired why I was focusing on software companies instead of core companies.
- He went through my entire resume, asking about each detail, like what Leetcode, GFG, Atcoder, Codeforces (CF), and CodeChef (CC) are.
Finally, he said "see you in the office" [Accepted]. There was no HR round. This was the easiest interview I’ve given so far.
Key: Be confident even if you don’t know the answer. But don’t waste the interviewer’s time.
Bloopers: Every time I prepared extensively for an interview, I faced rejection from top-tier software companies. This time, I left it to fate, and it worked out. I was confident because I had another interview lined up in two days, so even if this went poorly, I had a backup. That mindset helped.
Luck Factor: There were four interviewers. I was fortunate (it’s all part of God's plan) that I got an interviewer who focused on my resume. The others were asking questions about Python (ML), deep core subjects, and OS & Linux.
Compensation details: https://leetcode.com/discuss/compensation/5905812/NXP-Semiconductors-or-Intern-%2B-Full-Time(-PBC)-or-Bengaluru-(India)-or-sept-2024-Offer
Philosophy:
There will be times when you’ve solved all the questions in online assessments but still don’t get shortlisted, or when you’ve given the best interview of your life yet didn’t make it to the next round. After a while, you might start comparing yourself to people who got placed after just 1-2 days of preparation and landed a great job(company) or package. You’ll also meet people who are far more qualified but still haven't been placed. Both situations exist.
On the day of your placement, you’ll be happy, but soon after, life returns to the same routine. Before placement, you’ll wonder, ‘When will it happen?’ and afterward, you might see a great company hiring others and think, ‘I wish I were in that company.’ I’ve experienced this personally.
This is a process that everyone goes through, and the key is to stay consistent in your preparation.
The truth is, for each of us, there’s a day when everything finally clicks, and we get placed. Sometimes that day comes early, sometimes it takes longer. Life is a marathon, and we have miles to go.
Thanks for reading.
Please Upvote if this helped you :).