Interview questions
2022-06-02 Some resources to review for firmware technical interview questions:
^ Section 1
Starting pool of technical firmware oriented questions:
[ ] Q: What is the difference between a compiler and a cross-compiler?
A: A compiler produces executable code for the same processor family on which it runs, a cross-compiler produces executable code for a distinct processor family from the processor type on which it runs.
[ ] Q: What are some key benefits of incorporating an RTOS in a firmware project?
A: Memory and CPU resource management, task scheduling, guaranteed max latency as specified by the RTOS
[ ] Q: What are the four compilation stages a typical gcc like toolchain carries out?
A: pre-processing, compilation, assembly, linking
[ ] Q: What type of file typically are dot S files?
A: assembly source files
[ ] Q: What uses and benefits of C enumerations can you describe?
A: (1) C enumerations provide a helpful labeling mechanism for states, tasks, or cases which require conditional handling. (2) C enums are checked at compile time for duplicate integer values in the given enumeration. (3) C enums free programmers from having to adjust numeric values when adding and removing from the start or middle of the list, that is the enumeration.
[ ] Q: When may aggregate assignment be used in a C program, e.g. assigning all or some of the values to elements of an array?
A: Aggregate assignments in C can happen at the point of array declaration, generally not later.
[ ] Given this code fragment:
typedef uint32_t (*command_function_t)(const char* arguments);
Q1: What type of data element does the following line of C code declare? A: This line of code declares a function pointer.
Q2: What does each set of parentheses express, and bring to the overall declaration this line achieves? A: The first parentheses assure and clarify that the C pointer operator `*` applies to the declared newly defined type, the function pointer. The second parentheses express the C data type of "function", the data type to which the type-defined pointer points.
Q3: What does the syntax look like to assign a function to a function pointer? A; Syntax looks like 'function_ptr = &function_name;'
[ ] Multi-part question:
Q1: In an RTOS based project, what high level code pieces are typically present? A: (1) the RTOS or scheduler, (2) third party libraries and drivers, (3) application code
Q2: Of these code modules, who's the boss? (Which code takes a controlling or leading role at run time?) A: ( RTOS in many ways, but open ended answer . . . )
Q3: In a threaded firmware project, in the application part of the code who is the boss? A: One answer: there may not be a boss, but rather threads which work cooperatively toward a common task, with no one thread controlling a majority or any of the others.
[ ] Q: In a memory constrained system what is a compact way to store multiple Boolean type values?
A: Two or more Boolean values may be bit-wise encoded into a C char type or C integer type variable.
[ ] Q: Where might C language's union construct play a role in a firmware project?
-
A: A couple of examples: a C union could provide two ways for application code and driver code to "see" data packets sent via a certain protocol, or similarly two ways for different modules to treat bit-encoded configuration flags.
^ Section 2
[ ] What are a couple of uses of the C pre-processor directive #error
?
-
A: . . .
^ References
- https://w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/html/FunctionPointers.html . . . C function pointers
- https://www.calleluks.com/the-four-stages-of-compiling-a-c-program/ . . . Four stages of C compilation
- https://medium.com/@bartobri/untangling-complex-c-declarations-9b6a0cf88c96 . . . Untangling complex C declarations
2022-06-06
- https://rmbconsulting.us/publications/a-c-test-the-0x10-best-questions-for-would-be-embedded-programmers/ . . . RMB Consulting embedded interview questions
- https://www.dansaks.com/articles.shtml . . . Dan Saks programmer and articles on C const qualifier "read only" and others
The #error pre-processor directive:
Lvalues and rvalues: