Skip to content

Latest commit

 

History

History
580 lines (521 loc) · 29.7 KB

File metadata and controls

580 lines (521 loc) · 29.7 KB

Embedded System is Life, Embedded System is love.

Concepts by Domain:

A. C/C++ Coding Specific

  1. C Overview
  2. C++ Overview
  3. Tenouk's Ultimate C/C++ Tutorials
  4. Attributes
  5. C/C++ Preprocessor Directives
  6. C/C++ Type Specifiers
  7. Structure Member Alignment, Padding and Data Packing
  8. Memory Alignment
  9. The Function Stack
  10. C/C++ Compile, Link and Running Programs
  11. C Storage Class, Scope and Memory allocation
  12. C/C++ Storage Classes: const, volatile, local and global
  13. Inline functions
    1. GCC Inline Assembly
    2. Inline Assembly
    3. Inline Assembly examples
  14. Declarations in C
  15. C/C++ typedef
  16. Runtime data strtuctures
  17. Buffer Overflow
    1. The Basic of x86 Architecture
    2. An Assembly Language
    3. A Compiler, Assembler, Linker & Loader
    4. C/C++ Process Memory Layout & Function Call
    5. The Function Stack
    6. The Stack Operation
    7. A Stack-based Buffer Overflow
    8. A Shellcode: The Payload
  18. C++ New Standard Specific Topics
    1. auto vs auto & vs auto &&
    2. Copy by value, by reference, by move
  19. C++ Big O Cheat Sheet
  20. C++ STL Cheat Sheet
  21. Concurrency
    1. C/C++ MULTI-THREADED programming with Pthread
    2. POSIX Threads Programming
    3. OpenMP Programming

B. Programming Languages

  1. C
  2. C++
  3. Bash
  4. Python
  5. Assembly

C. Data Structures & Implementation

  1. Finite State Machine
    1. FSM for tasks state
  2. Task Scheduler
    1. Roud Robin + preemptive in RTOS
  3. Endianess Check
  4. Swap Endianess
  5. Array of Bits (bit sets/bit map)
  6. Low Pass Filter
  7. Memory map IO register manipulation
  8. Simple One-layer Timer list/wheel
  9. Memory Pool Allocation
  10. Simple Slab Allocator
  11. Data Structure
    1. Ring Buffer
    2. Hash Table
    3. Heap (priority queue)
    4. Stack
    5. Queue
    6. Binary Search Tree
    7. Red Black Tree
    8. Minium Spanning Tree (MST)
    9. Bitwise tries
  12. Math
    1. Rolling average
    2. Taylor Series
    3. Dividing by a constant
    4. Sine Functions with Lookup table
    5. Linear Interpolation
    6. Floating Point Arthimetic
    7. Multiply 16-bit integers using an 8-bit multiplier
  13. Common STL function implementation
    1. Safe memcpy (memmove)
    2. itoa
    3. atoi
    4. sizeof
    5. Aligned Malloc
    6. Malloc()
    7. strstr()
  14. Bits Manipulation
    1. Reverse Bits
    2. Flip a monochrome bitmap
    3. Count bits with lookup table
    4. Length of the Longest Consecutive 1s in Binary Representation
    5. Find most significant set bit of a number
    6. Swap two number without temporary varaible
    7. Number is a power of 2
    8. Swap all odd and even bits
    9. Find position of the only set bit
    10. Find the element that appears once and other elements appear 3 times
    11. Signness Check for two integers
    12. Turn off the rightmost set bit
    13. Rotate bits to left/rigtht
    14. Swap bits in a given number
  15. Concurrency
    1. Implement a Spinlock/Mutex/Semaphone
      1. Test-and-set
      2. Compare-and-swap
      3. Test-and-clear
      4. Implement Semaphone with Mutex
    2. Producer and consumer problem (Bounded Buffer)
    3. Reader Writer Problem
    4. Leetcode Concurrency Tag
    5. FizzBuzz MultiThread
    6. Bouned Queue
    7. Print In Order
    8. Building H2O
    9. The Dining Philosophers
  16. Other Implementations
    1. Shuffle cards
    2. Accurately (emphasize) read 64bit register with read32
    3. Given a matrix and its center coordinates, draw the circle
    4. Find a 32 bit frame start sequence in a raw byte stream buffer
    5. Memory tracker to hook into glibc library to keep track of dynamic memory allocations, including statistics
    6. Given an array of angles and an array of voltages for these angles, now there is a new angle coming in, calculate its voltage.
  17. Other Common C algorithm

D. Basic Algorithms

  1. Sort
    1. Bubble Sort
    2. Merge Sort
    3. Quick Sort
    4. Heap Sort
    5. Insertion Sort
    6. Binary Insertion Sort
  2. Search
    1. Hash
    2. Binary search Tree
    3. Graph

E. Programming API

  1. Memory management
  2. Multi-thread/Multi-processing
    1. POSIX Thread
    2. Unix IPC
  3. Network
    1. POSIX Socket Programming
    2. Unix Socket (private google doc)

F. Bus

  1. Serial Communication
    1. Asynchronous Serial Protocols
      1. UART
      2. RS232/RS422/RS485
    2. Synchronous Serial Protocols
      1. SPI
      2. I2C
      3. CAN
      4. USB
  2. PCIE

G. Linux Commands

  1. Linux Fundamentals
  2. Linux System Administration
  3. Linux Servers
  4. Linux Storage Management
  5. Linux Security
  6. Linux Networking

H. Operating Systems

  1. Interrupt
    1. Exception Handling
    2. System call
    3. Re-entrant & Thread Safe Function
  2. Process Management
    1. Process Manager
      1. Process/Task Control Block
    2. Scheduling
      1. Context Switch
      2. Scheduling policy/algorithm
      3. Dispatcher
    3. Threads and Concurrency
      1. Multithreading/Multiprocessing
  3. Interprocess Synchronization/Communication
    1. IPC
      1. Pipe
      2. Socket
      3. Message Queue
      4. Shared Memory
      5. Signal
    2. Sychronization Facilities
      1. Semaphore
      2. Mutex
      3. Spinlock
  4. Memory Management
    1. Memory Management Reference
    2. Memory Hardware
    3. Virtual Addressing/Memory
    4. Caching
  5. File System Management
    1. Operations on Files
    2. Virtual File System
    3. Concrete File System
    4. Inodes
  6. Device I/O Management
  7. RTOS
    1. FreeRTOS
      1. Firmware Stack Layer
      2. IPC/Sychronization Mechanism
      3. Scheduler
      4. Interrupt
      5. Timers and time management
      6. API Reference
    2. QNX
  8. Linux
    1. Linux Kernel Overview Blogs
    2. Kernel Source Code All Versions
    3. Linux Device Model
    4. Synchronization primitives
    5. Booting
    6. Linux Booting Process
    7. Intialization
    8. Interrupt
    9. System Call
    10. Boot Loader
    11. Timers and time management
    12. Linux Memory Managment
    13. Process Management
    14. Linux Data Structures
    15. Linux Socket Programming
  9. Android
    1. IPC
    2. Activity
    3. Service
    4. Content Provider
    5. Broadcast Receiver

I. Computer Architecture

  1. ARM programmer's model
  2. Pipeline
  3. CPU Architecture
    1. ARM
      1. ARM overview
      2. ARM Assembly
      3. ARM Paging
    2. Intel
      1. GDT Tutorial
      2. Interrupt Descriptor Table
      3. IDT problems
      4. Advanced Programmable Interrupt Controller (APIC)
  4. Memory Hierachy
  5. Memory
    1. Cache memory
    2. Cache coherence
  6. DMA
  7. TCM
  8. TLB
  9. NUMA
  10. Memory translation

J. HW Modules

  1. RAM & ROM
  2. Flash Storage
  3. LED/LCD
  4. Timer
    1. HPET
    2. HPET Spec
    3. APIC Timer
    4. Programmable Interval Timer (PIT)
    5. RTC
  5. Sensors
  6. Bluetooth/BLE
  7. Wifi
  8. LTE Modem
  9. USB devices
  10. Memory Protection Unit (MPU)
  11. Memory Management Unit (MMU)
  12. Floating Point Unit (FPU)
  13. Crypto Engine
  14. STM32 MCU

K. Debugging Techniques

  1. JTAG
  2. Trace
  3. GDB
    1. Remote GDB
  4. Sysfs
  5. Printk
  6. Kernel Debugging

L. Version Control

  1. GIT
  2. SVN

N. Embedded Security

  1. Trusted Platform Module (TPM 2.0)
  2. Arm Trust Zone
  3. Intel SGX
  4. Embedded Reverse Engineering
  5. Encryption Algorithms

O. Network

  1. Network OSI layer
    1. Application layer
      1. DHCP
      2. PTP
      3. HTTP
      4. DNS
    2. Transport layer
      1. TCP/UDP
    3. Network layer
      1. IP
      2. ICMP
      3. NAT
      4. Routing and Protocols (RIP, OSPF, and BGP)
      5. Router
    4. Link layer
      1. PPP
      2. ARP/MAC
      3. PTP/gPTP
      4. Ethernet
      5. Switch
    5. Physical layer
  2. LTE
  3. Wifi
  4. BLE
  5. Bluetooth
  6. Multicast
  7. TSN/AVB

P. Embedded Programming with Modern C++

  1. C++11 Q/A
  2. C++ Core Guidelines
  3. Resources
    1. Modern C++ for Embedded Öffentliche Vorträge Conference Articles
    2. C++ core guideline by topics
    3. Technical Report on C++ Performance
    4. bogotobogo blogs for embedded

Q. Design Patterns

  1. Creation Patterns
    1. Factor Method
    2. Abstract Factory
    3. Builder
    4. Prototype
    5. Singleton
  2. Sturctural Patterns
    1. Adapter
    2. Bridge
    3. Composite
    4. Decorator
    5. Facade
    6. Flyweight
    7. Proxy
  3. Behavior Patterns
    1. Chain of Responsibility
    2. Command
    3. Iterator
    4. Mediator
    5. Memento
    6. Observer
    7. State
    8. Strategy
    9. Template Method
    10. Visitor

Interview Psychological Preparation

A. Symptom

B. Cause

C. Treatment

Interview Questions

  1. Advanced Leetcode Questions
  2. Advanced Leetcode Questions Practices
  3. Linked list
  4. String
  5. Array
  6. Math
  7. Data Structure

B. Other Algorithms Questions

  1. Sliding Window
  2. Two Pointers
  3. Faster & Slow Pointers
  4. Merge Intervals
  5. Cyclic Sort
  6. In-place Reversal of a Linked List
  7. BFS
  8. DFS
  9. Two Heaps
  10. Subsets
  11. Modified Binary Search
  12. Bitwise XOR
  13. Top 'K' Elements
  14. K-way Merge
  15. Knapsack (DP)
  16. Graph Topological Sort
  17. Bitwise operation C questions
  18. Must Do Coding Questions for Companies like Amazon, Microsoft, Adobe
  1. Bus Protocol
    1. I2C Interview Questions
    2. SPI Interview Questions
    3. CAN Interview Questions
    4. UART Interview Questions
    5. USB Interview Questions
    6. PCIe Interview Questions
  2. Operating System
    1. Commonly Asked Operating Systems Interview Questions Sets
    2. Commonly Asked Operating Systems Interview Questions Sets2
    3. Interrupt Interview Questions
    4. Synchronization Interview Questions
    5. General OS questions
    6. Linux
    7. 30 Linux Kernel questions
    8. 70 RTOS interview questions
    9. 50 Linux device driver questions
  3. Programming Language
    1. 10 Questions on dynamic memory allocation in C
    2. Top 15 string Interview Questions in C
    3. C++ Interview Questions
    4. C Puzzles
    5. 50 interesting C interview questions
  4. Computer Architecture
    1. 100 ARM architecture questions
    2. Memory
    3. Computer Organization Architecture
  5. Computer Networks
    1. Networking & Telecom Question List
    2. Computer Networks
    3. Commonly asked Computer Networks Interview Questions
    4. 50 Network Questions
  6. Computer Hardware
    1. 35 Flash memory questions
  7. 10 Most Common Embedded Interview Questions
  8. Embedded Interview Questions
  9. Embedded Interview Questions Repo
  10. Embedded C Interview Questions and answers
  11. 50 Multithreading questions

D. Behavior Question

  1. Most Common 64 HR Interview Questions and Answer
  2. Amazon Leading Principles
  3. Star Method

F. System Design

  1. System Design Primer
  2. System design interview for IT companies Github
  3. System Design CheatSheet
  4. System Design Interview Approach
  5. System Design Basics
    1. Characteristics of distributed systems
    2. Load Balancing
    3. Caching
    4. Data Partitioning
    5. Indexes
    6. Proxies
    7. Redundancy and Replication
    8. SQL vs. NoSQL
    9. CAP Theorem
    10. Consistent Hashing
    11. Long-polling vs WebSockets vs Server-Sent Events
  6. System Design Examples with Embedded Flavor
    1. Design a Cache
    2. Design a Vending Machine
    3. Design a Traffic Control System
    4. Design a ATM Machine
    5. Design a Elevator System
    6. Design a Air Traffic Controller
    7. Design a Amazon Locker System
    8. Design a service for Alexa devices to report battery status
    9. Design a Parking Lot System
    10. Design a File System
    11. Design a Garbage Collector
    12. Design a call center
  7. Embedded System Design Pattern Catalogue
  8. Embedded System Design Topics
    1. Small memory management
    2. Multi-MCU communication/coordination
    3. Scheduling
    4. Execution in place (XIP)
    5. Dynamic memory allocation for embedded systems
  9. Implementations
    1. Consistent Hashing
    2. Memcache

G. By Company

  1. Tesla
  2. Google
  3. Qualcomm
  4. Nvidia
  5. Cisco
  6. Intuitive Surgical
  7. Verkada
  8. Amazon
  9. Lyft
  10. FaceBook
  11. Zoox
  12. Apple

H. Mock Tests

  1. Computer networks mock tests
  2. C++ Mock tests
  3. Operating system mock tests

J. Take-Home challenges

  1. Fan Controll System
  2. Dynamic Memory Profiling

Hands-On Projects

A. Raspberry Pi

  1. Learning operating system development using Linux kernel and Raspberry Pi
  2. Raspberry-Pi-Multicore
  3. David Welch's tutorials
  4. Cambridge tutorials
  5. Bare Metal Programming on Raspberry Pi 3

Book Recommendation

  1. Network
    1. Unix Network Programming, volumes 1-2 by W. Richard Stevens.
    2. Internetworking with TCP/IP, volume I by Douglas E. Comer.
    3. TCP/IP Illustrated, volumes 1-3 by W. Richard Stevens and Gary R. Wright.
    4. TCP/IP Network Administration by Craig Hunt. Published by O’Reilly & Associates, Inc.
    5. Advanced Programming in the UNIX Environment by W. Richard Stevens.
    6. Computer Networking - A Top-Down Approach

Useful Links

Embedded software interview archive

Embedded Noob Engineer Guide

C 语言资源大全中文版

Awesome Embedded Github

Awesome C Github

Awesome Embedded Interview Link

Embedded system guide repo collection

CS Notes

The Linux Documentation Project

tenouk

Linux Journal

Linux Kernel Documentation

Memory Management References

bogotobogo

bogotobogo Linux

OSDev.org

OS projects

Embedded Developers World