Some questions for interview - MarekBykowski/readme GitHub Wiki

Interview

  1. Tell me about your experience.

  2. What are the programming languages you have used recently?

  3. C coding

In Uboot we have something like this. What it does?

   void (*entry)(void *, void *);
   void * config = <addr to some useful config, eg. 0x4000>;

   entry = (void (*) (void *, void *))0x8000;
   entry(NULL, config);
  1. Yocto
  • Have you ever been working with Yocto?
  • A recipe for building sdk/toolchain "bitbake core-minimal-image -c populate_sdk"
  • How do you read a recipe variable with bitbake "bitbake -e {recipe} | grep ^variable=" "-e / --environment - show the global environment in which the variables are set
  • Do you know any other Yocto utilities but bitbake? bitbake-layers (bitbake layers utility), devtool (OpenEmbedded development tool)
  1. Virtualization
  • What are the two broad categories the HYP can be divided to? Standalone, or Type 1 and Hosted, or Type 2
  • What are the differences between them two? Type 2 hypervisor runs on top of a host operating system, and a Type 1 hypervisor does not have a host operating system
  • What is an example of Hosted (Type2)? KVM
  • What is an example of Standalone (Type1)? XEN
  1. CPU architecture
  • What architecture (ARM, Intel, MIPS) are you familar with?
  • RISC (reduced instruction set computing) and CISC (complex instruction set computing)?
  • What Exception Level is and how many of them ARMv8 has? EL1 is used to execute OS/Linux kernel, EL0 i sused to to execute user apps
  • What the execution states ARMv8 has? aarch64 and aarch32
    • What are the differences? In aarch64 CPU executes the A64 instruction set, in aarch32 A32 instruction set- What caches are for?
  • What caches are for and how they work?
  • Have you used any memory barriers such as dmb, dsb, isb?
  1. PCIe and CXL
  • root complex, switch, and endpoints
  1. MMU
  • What is the MMU/What are the main functions of MMU? Controls address translation, memory access permissions, and memory attribute. By it it enables the system to run multiple tasks by running in their own private address space,
  • Where do the attributes for an address location come from? Block/Page descriptor
  • What are the two memory Types in Armv8-A? Normal and Device
  1. Linux kernel
  • Have you ever been working with Linux kernel? arch/arm64 or arch/arm?    - that is building, modifying a driver, testing any device from within?
  • What device-tree is used for?
  • Have you worked on preeempt or preempt-rt kernel? May you know the differences?
    • spinlocks are preeemptable but raw spinlock
    • it implements the priority inhertinance to countermeasure priority inversion
    • interrupt handler to preemptible kernel threads
    • changes Linux timer API
  • How do you make defconfig from .config?
  • What is per_cpu vairable? idealne do zbierania statystyk, counterow, tworzysz raz i pojawia sie jedna instancja per core wiec nie ma race’ów
  • What locking mechnisms have you used in kernel? such as mutex, semaphore, spinlock
  • Describe any deadlock you encountered or resolved or that may happen in Linux kernel?
  • Have you you been registering an interrupt? If so how you handled it? Everything in hardirq context or with work queue or it was a threaded irq handler?
  • How do you debug linux kernel?
    • Have you ever used ftrace, trace_event?
  1. HW bringup
  • Describe the system components and their operations when the CPU/system is being brought up? Imean what may happen from reset vector, through Secure Monitor, SPL, Uboot/BIOS or anything else up to Linux prompt?
  • What is the difference between the static (SRAM) and dynamic memory (DRAM)?
  1. Emulation
  • Have you ever worked with FVP (Fixed Virtual Platform), qemu, simics?
  • Have you ever worked with any debuger, ARMDS, gdb?
  1. Working env.
  • Editing c-files? Is it vim, nano?
  • Do you use tmux?
  • What you use for finding defintions of function, variable? Is it cscope?