Skip to content
Embedded Level
Sign in
Theme

Know your real level in embedded systems.

Practice with 1,100+ questions on C, Cortex-M, RTOS, embedded Linux, IoT and security. Every answer is explained, and the level test is free, with no account needed.

Level test13 questions, about five minutes. You get your level at the end.Try more questions
uart_rx.carm-none-eabi-gcc -O2
1static uint8_t rx_done = 0;
2
3void UART_IRQHandler(void) {
4 uart_clear_rx_flag();
5 rx_done = 1;
6}
7
8int main(void) {
9 uart_start_receive();
10 while (rx_done == 0) { }
11 process_data();
12}

Built with GCC at -O2. The interrupt handler runs, but main never leaves line 10. Why?

How it works

Three steps, from your first answer to your interview.

  1. 1Take the level test

    13 questions, about five minutes, no account needed. You get one overall level at the end.

  2. 2Practice what you need

    Questions adapt to your level in each topic. Every answer is explained, and the questions you miss come back for review.

  3. 3Prepare for your interview

    Paste a job description and get 30 questions written for that role. Part of the paid plan.

Practice that follows your level

Answer, read why each option is right or wrong, and watch your rating for the topic move. The next question is picked for your new rating.

AnswerExplanationYour ratingNext question
Every answer is explained, your rating for the topic moves, and the next question follows your level.Example

Short sets of questions across all topics. Questions you miss come back for review, and your weakest topics come up more often.

Start practicing

More questions to try

Three more questions from the bank. Pick an answer to see the explanation.

Sample question

C for embedded

Question 1 of 3. What does this code print on a 32-bit MCU?

1uint8_t a = 200;
2uint8_t b = 100;
3if (a + b > 250) printf("big");
4else printf("small");

Made for embedded work

Short questions from the daily work of firmware engineers, with the feedback you need to improve.

  • An explanation for every answer

    Each option says why it is right or wrong, with a pointer on what to read next.

  • Difficulty that follows you

    A rating for each topic, like chess Elo. Questions stay close to your level.

  • Review before you forget

    A missed question comes back the next day. Correct ones come back after longer intervals.

  • Real embedded code

    Find the bug in drivers and interrupt handlers, calculate register values, and read C.

A rating for every topic

The level test gives you one overall level in about five minutes. Practice then keeps a rating and a level for each topic. Ratings work like chess Elo: a correct answer to a harder question raises yours more, and a miss on an easier one lowers it more.

Example: levels after some practice
Sample data

Overall

Weakest topics

Power management, DMA

TopicLevelRating
C for embeddedIntermediate1290
InterruptsIntermediate1210
CommunicationIntermediate1160
RTOSNovice1080
DMANovice990
Power managementNovice920

13 topics

More than 1,100 questions, from the daily work of embedded, IoT and embedded Linux engineers.

  • C for embedded

    100 questions

    Pointers, volatile, const, bit manipulation, integer promotion, memory layout

  • MCU architecture

    100 questions

    Cortex-M core, memory map, clock tree, startup code, linker scripts

  • Peripherals

    100 questions

    GPIO, timers, PWM, input capture, ADC and DAC, RTC, watchdog

  • Interrupts

    100 questions

    NVIC, priorities, preemption, ISR design, race conditions, atomicity

  • Communication

    100 questions

    UART, SPI, I2C, CAN, USB basics, framing, error handling

  • DMA

    100 questions

    Channels, circular mode, cache coherency, double buffering

  • RTOS

    100 questions

    Scheduling, priority inversion, mutexes and semaphores, queues, stack sizing

  • Power management

    100 questions

    Sleep modes, wake sources, current budgets

  • Debugging and tooling

    100 questions

    SWD and JTAG, GDB, hard faults, map files, objdump and addr2line, logic analyzers

  • Hardware interface

    100 questions

    Pull-ups, level shifting, decoupling, signal integrity, datasheets

  • Embedded Linux

    41 questions

    Device tree, U-Boot, drivers, Yocto and Buildroot, A/B updates

  • IoT and connectivity

    41 questions

    MQTT, TLS on small devices, provisioning, OTA updates, BLE, LoRaWAN

  • Embedded security

    36 questions

    Secure boot, key storage, TrustZone, debug port locking, side channels

Most questions are general C and Cortex-M. More than 100 are specific to STM32, and a few cover Nordic nRF and ESP32.

Five question types

Two of them are below. You can answer both here.

Find the bug

SysTick fires every 1 ms. delay_ms() works for weeks, then about 49.7 days after reset one call returns immediately. Select the line with the bug.

Numeric answer

An STM32 timer is clocked at 84 MHz, and the prescaler is PSC = 83. What value must go in ARR for one update event every 1 ms?

The bank also has multiple choice and code reading questions, and short answer questions that you answer in your own words. Every question you answer is scheduled for review: a missed question comes back the next day, and correct answers come back after longer intervals.

The paid plan

No daily limit on practice, plus Interview prep: paste a job description, get questions written for that role, and see how ready you are for it.

No daily limit30 questions per jobReadiness report
Paste a job description, get 30 questions for that role, and see how ready you are for each of its topics.Example

One payment for 30 days, with no automatic renewal. The free plan keeps every topic, the level test and the learning path.

See the paid plan

Find out where you stand

13 questions, about five minutes, no account needed.

Take the level test