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.
1static uint8_t rx_done = 0;23void UART_IRQHandler(void) {4 uart_clear_rx_flag();5 rx_done = 1;6}78int 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.
1Take the level test
13 questions, about five minutes, no account needed. You get one overall level at the end.
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.
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.
Short sets of questions across all topics. Questions you miss come back for review, and your weakest topics come up more often.
Start practicingMore questions to try
Three more questions from the bank. Pick an answer to see the explanation.
Sample question
C for embeddedQuestion 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.
Overall
Weakest topics
Power management, DMA
| Topic | Level | Rating | Position on the scale |
|---|---|---|---|
| C for embedded | Intermediate | 1290 | |
| Interrupts | Intermediate | 1210 | |
| Communication | Intermediate | 1160 | |
| RTOS | Novice | 1080 | |
| DMA | Novice | 990 | |
| Power management | Novice | 920 |
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
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.
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 planFind out where you stand
13 questions, about five minutes, no account needed.