Difference between revisions of "Interview questions"

From Wiki at Neela Nurseries
Jump to navigation Jump to search
m (adding to firmware interview questions pool.)
Line 18: Line 18:
  
 
[ ]  Q:  What uses and benefits of C enumerations can you describe?
 
[ ]  Q:  What uses and benefits of C enumerations can you describe?
−
     A:  (1)  enumerations provide a helpful labeling mechanism for states, tasks, or cases which require conditional handling.
+
     A:  (1)  C enumerations provide a helpful labeling mechanism for states, tasks, or cases which require conditional handling.
−
         (2)  enums are checked at compile time for duplicates in the given enum.
+
         (2)  C enums are checked at compile time for duplicates in the given enum.
−
         (3)  similar to duplicate checking enums free programmers from having to adjust numeric values which adding and removing from the start or middle of an effective list, that is the 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.
  
  
Line 32: Line 32:
  
  
−
[ ]  Q:  What type of data element does the following line of C code declare?
+
[ ]  Given this code fragment:
−
        'typedef uint32_t (*command_function_t)(const char* arguments);
 
−
    A: This line of code declares a function pointer.
 
  
−
    Q:  What does each set of parentheses express, and bring to the overall declaration this line achieves?
+
        typedef uint32_t (*command_function_t)(const char* arguments);
−
    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.
 
  
 +
    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.
  
  

Revision as of 19:51, 2 June 2022

Some resources to review for firmware technical interview questions:


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 type of file typically are dot S files?

    A:  assembly source files

[ ] Q: What are the four compilation stages a typical gcc like toolchain carries out?

    A:  pre-processing, compilation, assembly, linking


[ ] 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 duplicates in the given enum.
        (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: 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: 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.


References