Firmware/Embedded面试复习
This training course schedule can be used a reference for interview review!
http://www.ac6-training.com/cours.php/cat_FSCA/ref_RT3/print_true.xphp
https://docs.google.com/document/pub?id=1a9WmPuE3F_WfnJAPHceVIoihJSK1t5_wtxM0QjSomwc
1. write C to generate segmentation fault and Stack overflow.
Ans: http://web.mit.edu/10.001/Web/Tips/tips_on_segmentation.html, http://embeddedgurus.com/stack-overflow/2007/06/understanding-stack-overflow/, http://www.devx.com/tips/Tip/14276
2. give example to use function pointer
Ans: K&R-qsort; or in <a modern approach>: function pointer mostly used as an argument for a method, or it can be an element in a struct, say in uCos to realize OOP in C.
or, In concurrency in OS three easy pieces: http://pages.cs.wisc.edu/~remzi/OSTEP/threads-api.pdf
3. which to use in simple embedded systems: arrays or dynamic memory using malloc and why?
Ans: http://thesynchronousblog.wordpress.com/2013/05/20/dynamic-memory-management-in-embedded-systems , http://en.wikibooks.org/wiki/C_Programming/Memory_management, http://stackoverflow.com/questions/1725923/how-bad-is-it-to-use-dynamic-datastuctures-on-an-embedded-system
4. when to use volatile
Ans: http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword, or CMPE 244 preet notes
5. How to use Static/Exten, where do they locate, what's problem of a static large array?
Ans: CMPE 244 note, http://stackoverflow.com/questions/13415321/difference-between-static-auto-global-and-local-variable-in-the-context-of-c-a
6. What is different of preemptive and cooperative RTOS?
Ans: http://electronics.stackexchange.com/questions/78439/what-are-the-benefits-of-a-non-preemptive-os-and-the-price-for-these-benefits
7. Why not use RTOS?
Ans: http://www.barrgroup.com/Embedded-Systems/How-To/Preemption-Perils, Get by without RTOS
As mentioned in the 2nd paper, it mentioned: for Time-critical aspect, RTOS is negatively affect due to ISR latency, context switch...
8. Compare macro and function.
Ans: http://stackoverflow.com/questions/9104568/macro-vs-function-in-c
9. When to use inline function?
Ans: http://www.gotw.ca/gotw/033.htm, http://stackoverflow.com/questions/132738/why-should-i-ever-use-inline-code
10. difference between malloc and calloc
Ans: http://stackoverflow.com/questions/1538420/difference-between-malloc-and-calloc
11. difference between malloc and new
Ans: http://stackoverflow.com/questions/184537/in-what-cases-do-i-use-malloc-vs-new, http://www.geeksforgeeks.org/malloc-vs-new/
12. How do you pass variable number of arguments in “C” and why this is a generally bad idea?
Ans: http://www.cprogramming.com/tutorial/lesson17.html
13. Diff between struct and union
Ans: http://stackoverflow.com/questions/346536/difference-between-a-structure-and-a-union-in-c
14. Diff between func(void) and func()
Ans: http://stackoverflow.com/questions/1163879/in-c-funcvoid-vs-func
15. Memory errors: memory leak, OutofMemory, ...
Ans: http://www.cprogramming.com/tutorial/memory_debugging_parallel_inspector.html
16. try/catch in C++
Ans: http://www.cplusplus.com/doc/tutorial/exceptions/
17. Data structures, focus on linked lists, dynamic arrays, trees and graphs.
Ans: CC150. Hawstein.
18. Remove spaces in a string in C
Ans: http://stackoverflow.com/questions/13084236/function-to-remove-spaces-from-string-char-array-in-c
19. Why cannot use malloc in RTOS? malloc = BAD! (ARM M3 or MSP430 or 18F4550 have NO MMU, so don't support Virtual Memory)
Ans: http://www.rockbox.org/wiki/WhyNoMalloc, http://www.freertos.org/a00111.html, http://www.embedded.com/design/programming-languages-and-tools/4416457/EMB-tm-6-15-13-Dynamic-memory-and-heap-contiguity
20. Write a C program to find big or little endian:
Ans: http://www.geeksforgeeks.org/little-and-big-endian-mystery/
21. When to use virtual deconstructor?
Ans: when use polymorphism, such as factory DP: http://www.programmerinterview.com/index.php/c-cplusplus/virtual-destructors/
============//////////////////////////////======================////////////////////////////=====
From Qualcomm interview:
1. How to find the size of one var type without using sizeof()?
Ans: use offsetof() which: size_t size = (size_t)(1 + ((X*)0));
2. Design Circular buffer without STL.
http://www.embedded.com/electronics-blogs/embedded-round-table/4419407/3/The-ring-buffer, http://kamyarns.wordpress.com/2013/05/02/implement-circular-queue-in-cpp/
3. Write C code for convolution. In Baidu, use cuda.
4. what is priority inversion and how it is solved?
http://www.drdobbs.com/jvm/what-is-priority-inversion-and-how-do-yo/230600008, or http://www.embedded.com/electronics-blogs/beginner-s-corner/4023947/Introduction-to-Priority-Inversion
5. phone interview operating systems- priority inversion, ISR & interrupt vector table, order of complexity of sorting algorithms
6. "Difference between const char * and char const *"
http://www.glassdoor.com/Interview/Difference-between-const-char-and-char-const-QTN_233063.htm
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步