EFS Tutorial Interview Questions
Introduction
Some of the questions in this document are evolutions of questions asked in https://rmbconsulting.us/publications/a-c-test-the-0x10-best-questions-for-would-be-embedded-programmers/. The questions here were conceived by @Christopher Chung for an EFS tutorial session. The questions here breakdown some of the underlying concepts and also query more fundamentals then are given in the original source which assumes you already understand them. Note this source also provides solutions to the questions it asks which may be useful for learning purposes. Additionally other relevant information can be found in other portions of this EFS knowledge base confluence (i.e. C Keywords & Preprocessor Definitons).
Questions
What is an interrupt?
What is an ISR?
What is wrong with this ISR?
double calculate_area(double radius) {
double area = radius * radius * 3.14;
printf("Area: %d", area);
return area;
}
Implement a circular buffer
Implement a Stack
Implement a queue
Implement a linked list (and manipulation)
How do you determine if a number is odd
How do you determine if the n’th bit is 1
Within a structure, how large is a struct with one 8 bit integer and one 16 bit integer on a 32 bit processor
What is the volatile keyword
What is the static keyword
What is a const
Can a variable be both const and volatile
What is a union
What is a void pointer
If you want to pass a large struct into a function, should you pass by reference or pointer
Define the following
(a) An integer
(b) A pointer to an integer
(c) A pointer to a pointer to an integer
(d) An array of ten integers
(e) An array of ten pointers to integers
(f) A pointer to an array of ten integers
(g) A pointer to a function that takes an integer as an argument and returns an integer
(h) An array of ten pointers to functions that take an integer argument and return an integer.
Difference between spi and i2c
What is UART?
What are the difference parts of memory
Where does each variable in the code snippet go?
#define A 5
int B = 0;
static int C = 0;
void myFunc(int D, int E)
{
static int F = 0;
int G;
for (G = 0; G < 10; G++)
{
F++;
}
int* H = (int*)malloc(sizeof(int));
}
What is the difference between & and &&
What is endianess?
Difference between float and double?
What is the preprocessor?