Embedded Software Engineer

  Home  Engineering  Embedded Software Engineer


“Embedded Software Engineer Frequently Asked Questions in various Embedded Software Engineer job interviews by interviewer. The set of questions are here to ensures that you offer a perfect answer posed to you. So get preparation for your new job interview”



100 Embedded Software Engineer Questions And Answers

61⟩ Explain what are the differences between analytical and computational modeling?

Analytical model allows the components to deal with the concurrency that are given during the process and the quantitative constraints that might come in between the components. Whereas, computational model deal with the non-deterministic abstraction hierarchy that has computational complexity to deal with the concurrency and allow it put also the physical constraints.

Analytical models can’t deal with the partial and incremental specifications that are non-deterministic. It is also not good in controlling the computation complexity that is used in the hardware design. Whereas, Computational model can, deal with constraints easily and it provides an upgradeable solution.

Analytical model is the equation based model that doesn’t have the time-sharing and parallelism concepts. Whereas, time-sharing and parallelism is used, in the abstract method that provides the theories of complexity and the real time evaluation.

 183 views

62⟩ Explain me what is Endianness of a system and how do different systems communicate with each other?

Endianness basically refers to the ordering of the bytes within words or larger bytes of data treated as a single entity.

When we consider a several bytes of data say for instance 4 bytes of data,XYZQ the lower byte if stored in a Higher address and others in successively decreasing addresses, then it refers to the Big Endian and the vice versa of this refers to Little Endian architecture.

Intel 80x86 usually follows Little Endian and others like IBM systems follow Big Endian formats.

If the data is being transmitted care has to be taken so as to know as to which byte,whether the higher or the lower byte is being transmitted.

Hence a common format prior to communication has to be agreed upon to avoid wrong interpretation/calculations.

Usually layer modules are written so as to automate these conversion in Operating systems.

 239 views

63⟩ Tell me what is the difference between Hardware design and Software Design?

Hardware design is designed with the collaboration of interconnected parallel components that inherits the properties of each other. Whereas, Software design is designed with sequential components, that are based on objects and threads.

Hardware design structure doesn’t change dynamically and it can’t be created, modified or removed easily. Whereas, Software design structure can be changed dynamically and re-usability features, used to define the components. It also includes easy creation, modification and removal of the components from the software.

Hardware design focuses on individual components that are represented using analytical model that uses the transfer functions. Whereas, Software design represent the components using computation model that can have abstract execution engine or it can use the virtual machine that are non-deterministic.

 195 views

64⟩ Role-specific Embedded Software Engineer Interview Questions

☛ How can you reduce memory requirements in embedded systems?

☛ If a system goes blank, how do you debug it?

☛ Why would you choose Java in embedded systems?

☛ What software configuration management tools are you familiar working with?

☛ Can you name any code testing tools?

☛ Give an example of troubleshooting on embedded targets. Explain the process step-by-step.

☛ What’s your experience with technical documentation?

☛ How can you ensure that debugging a program while it’s being used will not affect its functionality?

☛ Are you familiar with design patterns? What design software have you used and in what situations?

☛ How do you identify hardware errors?

☛ How can you optimize the I/O performance?

☛ What’s your experience with QA engineering?

 192 views

65⟩ Embedded Software Engineer Job Interview Questions

☛ Describe the life-cycle of a software development (application design) process.

☛ What software languages have you used to design, develop, and debug software application interfaces?

☛ Explain the software analysis process, such as code analysis, code metrics, and system risk analysis or software reliability.

☛ What type of software simulator and developer have you used?

☛ If you’ve integrated new software in an existing system, tell us how you evaluated and identified the requirements for this new technology.

☛ Have you designed UI, user interface?

☛ Have you developed software testing procedures for new systems and performed QA, quality assurance, or audits?

 154 views

66⟩ What is interrupt latency and how can we decrease it?

1. Interrupt latency basically refers to the time span an interrupt is generated and it being serviced by an appropriate routine defined, usually the interrupt handler.

2. External signals, some condition in the program or by the occurrence of some event, these could be the reasons for generation of an interrupt.

3. Interrupts can also be masked so as to ignore them even if an event occurs for which a routine has to be executed.

4. Following steps could be followed to reduce the latency

☛ ISRs being simple and short.

☛ Interrupts being serviced immediately

☛ Avoiding those instructions that increase the latency period.

☛ Also by prioritizing interrupts over threads.

☛ Avoiding use of inappropriate APIs.

 199 views

67⟩ Explain me how does the interrupt architecture works?

Interrupt architecture allows the use of interrupt by the processor whenever an Input/output is ready for the processing. The processor in this case calls a special function to handle the request that comes and leave all the work that is getting performed at that time. The special function that is known as interrupt handler or the interrupt service routine consists of all the input, and output queries, or the interrupts handled by it. It is an efficient and simple way to handle the interrupts. It uses only one function to deal with the interrupts. There are properties of starvation that can creep in when handling the input/output requests. The data can be lost if the interrupt doesn’t get handled before the time runs out. This is a technique that is use to deal with the short processes that involve input and output.

 177 views

68⟩ As you know a vast majority of High Performance Embedded systems today use RISC architecture why?

According to the instruction sets used, computers are normally classified into RISC and CISC. RISC stands for 'Reduced Instruction Set Computing' . The design philosophy of RISC architecture is such that only one instruction is performed on each machine cycle thus taking very less time and speeding up when compared to their CISC counterparts.

Here the use of registers is optimised as most of the memory access operations are limited to store and load operations.

Fewer and simple addressing modes, and simple instruction formats leads to greater efficiency, optimisation of compilers, re-organisation of code for better throughput in terms of space and time complexities. All these features make it the choice of architecture in majority of the Embedded systems.

CISC again have their own advantages and they are preferred whenever the performance and compiler simplification are the issues to be taken care of.

 191 views

69⟩ Tell me what are the different types of Buses used by the embedded systems?

The buses are used to pass the messages between different components of the system. There are buses existing as:

Memory Bus: it is related to the processor that is connected to the memory (RAM) using the data bus. This bus includes the collection of wires that are in series and runs parallel to each other to send the data from memory to the processor and vice versa.

Multiplexed Address/Data Bus: Multiplex data bus consists of the bus that can read and write in the memory but it decreases the performance due to the time consumed in reading and writing of the data in the memory.

De-multiplexed Bus: these consists of two wires in the same bus, where one wire consists of the address that need to be passed and the other one consists of the data that need to be passed from one to another. This is a faster method compared to other.

Input/Output bus: it uses the multiplexing techniques to multiplex the same bus input and output signals. This creates the problem of having the deadlock due to slow processing of it.

 201 views

70⟩ Tell me is Count Down_to_Zero Loop better than Count_Up_Loops?

Count down to zero loops are better. Reason behind this is that at loop termination, comparison to zero can be optimized by the compiler. Most processors have instruction for comparing to zero. So they don't need to load the loop variable and the maximum value, subtract them and then compare to zero. That is why count down to zero loop is better.

 170 views

71⟩ Basic Embedded Software Engineer Job Interview Questions

☛ What is something substantive that you've done to improve as a developer in your career?

☛ Would you call yourself a craftsman (craftsperson) and what does that word mean to you?

☛ Implement a <basic data structure> using <some language> on <paper|whiteboard|notepad>.

☛ What is SOLID?

☛ Why is the Single Responsibility Principle important?

☛ What is Inversion of Control? How does that relate to dependency injection?

☛ How does a 3 tier application differ from a 2 tier one?

☛ Why are interfaces important?

☛ What is the Repository pattern? The Factory Pattern? Why are patterns important?

☛ What are some examples of anti-patterns?

☛ Who are the Gang of Four? Why should you care?

☛ How do the MVP, MVC, and MVVM patterns relate? When are they appropriate?

☛ Explain the concept of Separation of Concerns and it's pros and cons.

☛ Name three primary attributes of object-oriented design. Describe what they mean and why they're important.

☛ Describe a pattern that is NOT the Factory Pattern? How is it used and when?

☛ You have just been put in charge of a legacy code project with maintainability problems. What kind of things would you look to improve to get the project on a stable footing?

☛ Show me a portfolio of all the applications you worked on, and tell me how you contributed to design them.

☛ What are some alternate ways to store data other than a relational database? Why would you do that, and what are the trade-offs?

☛ Explain the concept of convention over configuration, and talk about an example of convention over configuration you have seen in the wild.

☛ Explain the differences between stateless and stateful systems, and impacts of state on parallelism.

☛ Discuss the differences between Mocks and Stubs/Fakes and where you might use them (answers aren't that important here, just the discussion that would ensue).

☛ Discuss the concept of YAGNI and explain something you did recently that adhered to this practice.

☛ Explain what is meant by a sandbox, why you would use one, and identify examples of sandboxes in the wild.

 177 views

72⟩ Tell me what is the purpose of using critical sections?

Critical section allows the process to run in an area that is defined by that process only. It is a sequence of instructions that can be corrupted if any other process tries to interrupt it. This process allow the operating system to give the synchronization objects that are used to monitor the processes that are up and running so that no other process will get executed till the critical region consists of a process that is already running. The example includes removal of the data from a queue running in a critical section and if not protected then it can be interrupted and the data have chances of getting corrupted. The processes exit from the critical section as soon as they finish the execution so that the chances can be given to other processes that are waiting for their chance to come.

 182 views

73⟩ Tell me what is interaction semantics used in embedded systems?

Interaction semantics allow the actions to be performed by the system components to allow it to get the global behavior. The interaction can be atomic or non-atomic dependent on the interaction between the components. These components can’t be modified using the interference having the other interactions. Languages that are used, having buffered communication, and other languages, that include multi-threaded languages that use non-atomic interactions. There are two types of interactions that are used:

☛ Strong synchronization: allow the components to participate together and have strong bonding in between.

☛ Weakly synchronizing: are asymmetric that required the communication from both the objects.

 178 views

74⟩ Tell me why is it better to use multi-threading polling then single threading model?

Multi-threading allows a simple thread to be stored and polled. There is no Input/output function that is applied when it is having the poll. When there is no poll available to spawn it makes the system to sleep for an amount of time till the request for another poll reaches. If there is one process that is running then it divides that process into multiple threads and processes it accordingly. It allows the main thread to process all the request and produce the output by combining all other. Multi-threading allows the main thread not to put off the result or the output that will be generated. It also allow the priority of the thread to be changed by allowing to set the priority of the input/output process. It also has some problems with the polling interval that can make a thread starve for some time if the request isn’t handled properly.

 216 views

75⟩ Tell me what are buses used for communication in embedded system?

For embedded system, the buses used for communication includes

I2C: It is used for communication between multiple ICs

CAN: It is used in automobiles with centrally controlled network

USB: It is used for communication between CPU and devices like mouse, etc.

While ISA, EISA, PCI are standard buses for parallel communication used in PCs, computer network devices, etc.

 190 views

76⟩ Tell me significance of watchdog timer in Embedded Systems?

Watchdog timer is basically a timing device that is set for predefined time interval and some event should occur during that time interval else the device generates a time out signal.

One application where it is most widely used is when the mobile phone hangs and no activity takes place, in those cases watchdog timer performs a restart of the system and comes to the rescue of the users.

It is used to reset to the original state whenever some inappropriate events take place such as too many commands being given at the same time or other activities that result in malfunctioning of the GUI. It is usually operated by counter devices.

 182 views

77⟩ Explain me what are the rules followed by Mutexes?

Mutex is also called as Mutual Exclusion is a mechanism that is used to show the preemptive environment and allow providing security methods like preventing an unauthorized access to the resources that are getting used in the system. There are several rules that has to be followed to ensure the security policies:

Mutex are directly managed by the system kernel that provides a secure environment to allow only the applications that passes the security rules and regulations. The mutex consists of objects that are allowed to be called by the kernel.

Mutex can have only one process at a time in its area that is owned by the process using it. This allows less conflict between the different applications or processes that wait for their turn to execute it in the kernel area.

Mutex can be allocated to another mutex that is running some task at a particular time and allow the kernel to have synchronization in between them.

If Mutex is allocated to some other process then the area will consist of the process till the area is having the process in it.

 189 views

78⟩ Tell me why do we need virtual device drivers when we have physical device drivers?

Device drivers are basically a set of modules/routines so as to handle a device for which a direct way of communication is not possible through the user's application program and these can be thought of as an interface thus keeping the system small providing for minimalistic of additions of code, if any.

Physical device drivers can’t perform all the logical operations needed in a system in cases like IPC, Signals and so on...

The main reason for having virtual device drivers is to mimic the behaviour of certain hardware devices without it actually being present and these could be attributed to the high cost of the devices or the unavailability of such devices.

These basically create an illusion for the users as if they are using the actual hardware and enable them to carryout their simulation results.

Examples could be the use of virtual drivers in case of Network simulators,also the support of virtual device drivers in case a user runs an additional OS in a virtual box kind of a software.

 195 views

79⟩ Explain what are the uses of the keyword static?

Static keyword can be used with variables as well as functions. A variable declared static will be of static storage class and within a function, it maintains its value between calls to that function. A variable declared as static within a file, scope of that variable will be within that file, but it can't be accessed by other files.

Functions declared static within a module can be accessed by other functions within that module. That is, the scope of the function is localized to the module within which it is declared.

 183 views

80⟩ Do you know what is virtual memory?

Virtual memory is a technique that allows processes to allocate memory in case of physical memory shortage using automatic storage allocation upon a request. The advantage of the virtual memory is that the program can have a larger memory than the physical memory. It allows large virtual memory to be provided when only a smaller physical memory is available. Virtual memory can be implemented using paging.

A paging system is quite similar to a paging system with swapping. When we want to execute a process, we swap it into memory. Here we use a lazy swapper called pager rather than swapping the entire process into memory. When a process is to be swapped in, the pager guesses which pages will be used based on some algorithm, before the process is swapped out again. Instead of swapping whole process, the pager brings only the necessary pages into memory. By that way, it avoids reading in unnecessary memory pages, decreasing the swap time and the amount of physical memory.

 197 views