Embedded software engineer Interview Questions

Embedded software engineers develop and maintain embedded systems, which may require advanced software skills and problem solving. In an embedded software engineer interview, the interviewer may ask questions that test your coding skills and experience. Expect to also discuss how you work with others, as the role may function within a team.

2,832 Embedded Software Engineer interview questions shared by candidates

Top Embedded Software Engineer Interview Questions & How To Answer

Here are three top embedded software engineer interview questions and tips on how to answer them:

Question No. 1: Define an embedded system.

How to answer: Prove your competency by delivering a concise but thorough answer. Explain that an embedded system is a computer that lives within a bigger machine and operates in a unique way to perform a particular task. Consider offering some examples, such as a car, a kitchen appliance or an MP3 player.

Question No. 2: Which programming languages are you able to use?

How to answer: Embedded software engineers are responsible for building complex functional systems, so it is beneficial to highlight your technical skills. The interviewer may want to hear you mention basic programming languages such as C and C++. You might mention which languages you prefer or which you would like to gain more experience in, demonstrating passion and an ongoing willingness to learn.

Question No. 3: Have you collaborated with engineers and designers?

How to answer: You may work with others towards a common goal, so teamwork is vital. Consider sharing an anecdote about a time when you collaborated successfully to resolve an issue with a product. Focus on your ability to manage stress, clearly communicate complex issues and listen to others.

Top Interview Questions

Sort: Relevance|Popular|Date
Qualcomm
Embedded Software Engineer was asked...21 May 2020

Given the following struct definition in C, what would sizeof(myStruct) return? typedef struct { short a; long b; char c; } myStruct;

7 Answers

For the 64 bit system, typedef struct { short a; //2 bytes long b; //8 bytes char c; //1 bytes } As alignment is due to largest type : 2 bytes(short) + 6bytes(padding to achieve 8 byte boundry) + 8bytes(long) + 1byte(char) + 7 bytes(extra padding to achieve 8 byte boundry) = 24bytes Less

if we using 32 bit the answer defiantly will be 7+1 for padding -> 8 bytes if we using 64 bit the answer will be 17+7 for padding =24 bytes Less

I guess its 18 as byte padding will happen for the char (2 for short, 8 for long, 8 byte for padded char) Less

Show more responses
Apple

reverse bits of an integer that is a power of 2 , keeping complexity in mind.

4 Answers

rev_n = n ^ (~(n*0));

int reverse(int n) { int msb=Math.log(n)/Math.log(2); return Math.pow(2, 32-msb); } Less

if the bits that need to be reversed are just the ones to the right of the 1 so all you need to do is: return n -1; 1000 -> 0111 1 -> 0 10 -> 1 10000000 -> 1111111 Less

Show more responses
Valeo

What are different types of interrupts?

4 Answers

External &Internal Interrupt

1- External Interrupts: These types of interrupts generally come from external input / output devices which are connected externally to the processor. They are generally independent and oblivious of any programming that is currently running on the processor. 2- Internal Interrupts: They are also known as traps and their causes could be due to some illegal operation or the erroneous use of data. Instead of being triggered by an external event they are usually triggered due to any exception that has been caused by the program itself. Some of the causes of these types of interrupts can be due to attempting a division by zero or an invalid opcode etc. 3- Software interrupts: These types if interrupts can occur only during the execution of an instruction. They can be used by a programmer to cause interrupts if need be. The primary purpose of such interrupts is to switch from user mode to supervisor mode. Less

Cyclic and Eventual. (this answer is not the best, because it describes when an interrupt occurs. It should be that there are software interrupts and hardware interrupts). Less

Show more responses
Trakm8 Holdings

Q1- Use of Volatile keyword?

4 Answers

volatile your a. ., does that count I used it

wrong answer, adjective, adjective, should be removed, constructive answer: exclude from optimising Less

"volatile" keyword in C/C++ is used for any variable whose value can change anytime unexpectedly for example variables used in ISR, Memory mapped peripheral registers and variables used by multiple threads in RTOS based applications. Less

Show more responses
Robert Bosch India

why should i hire you

4 Answers

i too attened the interview on the same date . Now i have been called for managerial round. what questions thy asked u in managerial round. can u please tell Less

they asked puzzles based on real time scenario.they will check your attitude and decision making skills. Less

when you attended the interview .is it on 30th may 2015 ?

Show more responses
Apple

Is the given number a bitwise palindrome?

4 Answers

I took it as without proceeding zeroes. Also, you can cut the cycles in half by only going halfway through the bits. uint8_t isPalindrome(uint input) { uint msb = log2(input); for (int i = 0; i < msb / 2; i++) { uint8_t left = ((1 << (msb - i)) & input) != 0 ? 1 : 0; uint8_t right = ((1 << i) & input) != 0 ? 1 : 0; if (left != right) { return 0; } } return 1; } Less

#include int main(void) { //1001001 int num = 0x49246; int count = 0; int a = num; while(a > 0){ printf("%d\n", a & 1); a >>= 1; count += 1; } int left = 0, right = count - 1; while (left > left) & 1) != ((num >> right) & 1)){ printf("No"); return 1; } left += 1; right -= 1; } printf("Yes"); return 0; } Less

boolean isPalindrome(int n) { for(int i=0; i<32; i++) { int temp1=n&(1< Less

Show more responses
NVIDIA

will cache affect memory I/O register?

4 Answers

cache affects memory I/O reg. When using peripherals you want memory accesses to happen in a certain order (mostly because of hardware constraints) so you want to avoid reordering. This is exactly what you would expect cache to do; temporarily store instructions and perform optimizations by grouping/reordering. You might get unexpected errors because of this. Less

Depends if the I/O register is memory mapped, processor type and a host of other things.. Less

this is related to cache coherency.

Show more responses
Apple

Accurately (this is the catch) read a 64bit register value using a method that can read only 32bit at a time

4 Answers

uint32_t read_context; memcpy(&read_context, (void *)(REGISTER_BASE_ADDR), 4); printf("Register MSW: %x \t", read_context, 0, 0, 0, 0, 0); memcpy(&read_context, (void *)(REGISTER_BASE_ADDR + 4), 4); printf("Register LSW: %x \t" , read_context, 0, 0, 0, 0, 0); Less

uint64_t result = (uint64_t) read32(ptr1) | read32(ptr1+4)

#include #include void register_read(void* reg,void *result); int main() { //printf("Hello World"); uint64_t reg=0xAAAAAAAAFFFFFFFF,result; register_read((void*)®,(void*)&result); printf("%lX",result); return 0; } void register_read(void* reg,void *result){ uint32_t *ptr1,*ptr2; ptr1=(uint32_t *)(reg); ptr2=(uint32_t *)(result); for(int i=0;i<2;i++){ *ptr2=*ptr1; ptr1++; ptr2++; } Less

Show more responses
Qualcomm

A brain teaser question where we have to find out 45 minutes with the help of two ropes. Given that one rope burns completely in 1 Hr and the rate or burning is not consistent.

4 Answers

Burn first rope from both ends, and second rope from one end only. When First has completely burned, 30 mins will have passed and second rope will have 30 mins left on it. Now burn second rope, which has burned for 30 mins already, from both ends, this will burn a 30 minute rope at twice speed, making it complete in 15 mins. This will be 45 minutes total. Less

I've faced same question in ASSIA interview

I assume that both ropes have the same non consistency. If you burn from one end it takes 1H. If you burn the first rope from both ends it takes 1/2 H. Immediately after the first rope burnt, burn the second rope from one end and the middle point that fires reached each other in the first rope. To get 1/4 H, burn it from both ends and the point that in the first rope the fires got together. Less

Show more responses
Cohere Technologies

“You have all of the prices for a given stock for the next year. You can buy once and sell once in that year. How do you determine when to buy and sell to maximize your profit?”

3 Answers

That answer does not work if the lowest price occurs _after_ the highest price. You have to evaluate the difference in price for each combination of days and find out which one results in the highest gain. You always assume that for whichever day you buy, the sell date will be _after_ that date. So you compare day 1 with days 2-365 and find the max gain for those combinations. Then you do the same for a buy on day 2, 3...etc. You'll end up with 364 max value date pairs. Now sort for the highest and use that combination for your best gain. Too bad it doesn't work that way in real life :) Less

Buy when its at the lowest and sell when its at the highest.

Declined

Viewing 1 - 10 of 2,832 Interview Questions