Search topics...
4

Google Embedded Software Engineer, L3

Indrahas Reddy·21d ago(edited)
Interview Experience
Pinned
google
embedded software
linked list
Google·Embedded Software Engineer
2025-10
easy
reject
Rounds:
System Design

Round 1: Linked List add and delete node question Easy question, but I messed up by declaring the node in stack instead of heap and introduced some memory bugs by not properly checking the input arguments etc. Verdict from interviewer: Negative

Round 2: Implement memcpy Basically interviewer asked me to implement memcpy, so first I said we can copy byte by byte from src ptr to dest pointer.

Then interviewer asked me to speedup this copy process, so I suggested copying word by word and copy remaining bytes as byte by byte. Here I assumed that word size is uint, and later interview asked if that is the right data type, as he expected my code needs to be portable. Then I suggested uint32_t, but he said it would not work for 16 bit architecture and asked me to think of some other data type. Unfortunately I could not come up with the data type, and later he said long and size_t are the data types I need to use.

Then I implemented the function as discussed.

Then later he asked me about load and store from unaligned memory addresses and its problems. I kept on explaining un alignment issues, assuming 32 bit data type, but he asked what if we access half word from 0x2, and will that cause an issue. I said it will throw error because of unalignment and CPU always fetches the data using maximum alignment and then it masks the bits that are not required and returns the data. To which he said that is incorrect and CPUs do not work that way, and he said there are load half word and load byte instructions in the ARM as well.

Verdict from intervier: Positive

3rd Round: 1 Warmup question - Reverse a linked list(I made a stupid mistake here) Core question:

I have got 1 hardware timer, and an API to set the timer value. There is a ISR that gets triggered once the timer completes. Now I need to write code for 2 functions (one scheduler function which gets arguments like function pointer, and the absolute time when this function needs to get called) and the 2nd is the ISR.

Using these 2 functions, I need to schedule the functions. Like I need to somehow call these functions at those exact time.

Since I have only 1 timer, I can not set timer for each individual function.

I made some mistakes in this implementation, like not checking for context switch, what if interrupt occurs while we are scheduling a function, and its deadline is expired once we return back from ISR etc.

Verdict: Neutral

After all 3 rounds, My overall verdict was neutral to negative, hence I was rejected.

Overall the interview rounds where not that difficult, but they stressed more on simple edge cases, which I missed very badly.

1

Comments

Google Embedded Software Engineer, L3 — Forum — EmbeddedInterviewLab | EmbeddedInterviewLab