|
我是老溫,一名熱愛學習的嵌入式工程師
0 O) s# |+ c6 C8 z2 m, y* X6 c; e關(guān)注我,一起變得更加優(yōu)秀!有些工程師可能覺得單片機沒啥技術(shù)含量,但事實是單片機涵蓋的技術(shù)非常之多,從底層到應用,應該沒有一個人能熟練掌握其中所有的技術(shù)。
+ P! }0 |/ z' Y' |' B0 R2 m& p6 t% ]0 X0 Q' k
這里就站在面試的角度來說說:單片機工程師面試常見問題。: }* I5 K6 }- u3 {4 B
+ {# d8 Y( `5 n, R9 Z1、單片機上電之后不運行,可能的原因有哪些?
) |, F7 r d: e7 h1 R可能的原因包括供電問題(如VCC電壓偏離正常范圍)、晶振問題(如晶振損壞或未起振)、RESET引腳電平邏輯錯誤(如一直處于復位狀態(tài))、程序下載或擦除問題(如flash無法下載或損壞)以及控制程序問題(如程序存在bug)。3 s- A X7 e" i. |
. M7 Y( M4 l, a3 B3 K) A2、看門狗定時器的作用?- q& k+ w0 d- i) H- N9 _7 r* g
看門狗定時器(Watchdog Timer)在嵌入式系統(tǒng)中用于監(jiān)控和重置系統(tǒng),以防止因軟件故障導致的系統(tǒng)崩潰。它通過定時檢查系統(tǒng)是否正常運行,并在超時后觸發(fā)系統(tǒng)重置,從而提高系統(tǒng)的可靠性和穩(wěn)定性。8 n9 d0 R7 p% w9 s( S! S) \# r
1 Z. R0 R @* V" o
3、單片機中斷處理流程是怎樣的?
- G& h/ p4 p4 h d2 Q6 p' e單片機中斷處理流程通常包括三個步驟:中斷響應、中斷處理和中斷返回。
8 }. [: o& j5 q0 ]- j# Z當中斷發(fā)生時,中斷系統(tǒng)通過硬件自動生成長調(diào)用指令(LACLL),將斷點地址壓入堆棧保護,并將對應的中斷入口地址裝入程序計數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址執(zhí)行中斷服務程序。中斷服務程序完成后,計算機通過中斷返回指令RE將斷點地址從堆棧中彈出,返回到程序計數(shù)器PC,并通知中斷系統(tǒng)已完成中斷處理。9 G r3 }9 \( M( X
* j; f8 F4 s. F8 j0 W: Z
4、解釋一下進程、線程、協(xié)程的概念
+ s$ f9 R8 w r進程:進程是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位,是一個動態(tài)概念,競爭計算機系統(tǒng)資源的基本單位。8 @, k% g& r' Y$ ^" z
4 r6 \$ {- p2 _
線程:線程是進程的一個執(zhí)行單元,是進程內(nèi)科調(diào)度實體。比進程更小的獨立運行的基本單位。線程也被稱為輕量級進程。1 ]1 D, A, c0 n( d+ v* x
: Z% T2 V! ^4 n; }- }+ x
協(xié)程:是一種比線程更加輕量級的存在。一個線程也可以擁有多個協(xié)程。其執(zhí)行過程更類似于子例程,或者說不帶返回值的函數(shù)調(diào)用。3 y8 _3 M. B$ s
wwszqs4mczi64095463034.jpg (126.72 KB, 下載次數(shù): 12)
下載附件
保存到相冊
wwszqs4mczi64095463034.jpg
2024-11-5 23:44 上傳
8 P3 ]4 p: o8 n" `9 r6 A5、什么是嵌入式系統(tǒng)?
6 z: Q* L+ |' s$ w) r4 g/ H# T嵌入式系統(tǒng)是以應用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪的專用計算機系統(tǒng)。它適用于應用系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴格要求的場合。嵌入式系統(tǒng)通常由處理器、存儲器、輸入輸出設(shè)備、軟件等組成,具有體積小、功耗低、可靠性高、功能專用等特點。
; |, ^& o' ^' C% M% h( k. R5 q4 x" f0 |7 }6 r
6、C語言中堆和棧的區(qū)別是什么?' K! y) d1 N6 e+ G
堆和棧是C語言中用于存儲數(shù)據(jù)的兩種不同區(qū)域。棧由系統(tǒng)自動分配和管理,通常用于存儲局部變量和函數(shù)調(diào)用時的臨時數(shù)據(jù);而堆需要程序員自己申請和釋放,通常用于存儲動態(tài)分配的數(shù)據(jù)。兩者在存儲內(nèi)容、管理方式、空間大小、能否產(chǎn)生碎片、生長方向、分配方式和分配效率等方面都存在差異。( E4 U- W2 b& k0 G$ P; ]+ z
7 L, |0 S. q% l L0 F S7、請簡單說下嵌入式系統(tǒng)中的RTOS調(diào)度策略
% E; [5 T, \# E3 x7 sRTOS(實時操作系統(tǒng))的調(diào)度策略包括基于優(yōu)先級的調(diào)度、輪詢調(diào)度、時間片輪轉(zhuǎn)調(diào)度等。這些策略直接影響系統(tǒng)的實時性和效率,確保任務能夠按照預定要求得到執(zhí)行。( z# P. U% G I& p6 E3 }
# q" \2 s/ f% s; \
8、你如何保證單片機代碼的質(zhì)量和可靠性?
9 a! T& o" x; K5 i3 W在單片機項目中,我通常會采取以下措施來保證代碼的質(zhì)量和可靠性:首先,我會對代碼進行嚴格的測試和驗證,包括單元測試、集成測試和系統(tǒng)測試等;其次,我會遵循良好的編程規(guī)范和代碼風格,以提高代碼的可讀性和可維護性;最后,我會定期回顧和更新代碼,以消除潛在的錯誤和漏洞。: {+ j4 C0 D5 z4 ?
* ?% v6 l/ u' H+ n, K9、程序的局部變量、全局變量和動態(tài)申請數(shù)據(jù)分別存在于哪里?- ^1 E) X3 t5 ^: z( d+ I
局部變量存在于棧區(qū)。全局變量存在于靜態(tài)區(qū)(數(shù)據(jù)段)。動態(tài)申請的數(shù)據(jù)存在于堆區(qū)。+ d+ ^) y7 L+ q5 p
10、在C語言中,如何實現(xiàn)鏈表?請舉例說明。
) W& h1 F2 l' { M. N3 B0 C0 Y鏈表是一種動態(tài)數(shù)據(jù)結(jié)構(gòu),由節(jié)點組成,每個節(jié)點包含數(shù)據(jù)部分和指向下一個節(jié)點的指針。
# ^, W' w. X1 k7 J5 K1 F8 J在C語言中,可以通過結(jié)構(gòu)體和指針來實現(xiàn)鏈表。例如,單鏈表的節(jié)點可以定義為:' J$ v' N. }" ~
struct Node { int data; struct Node* next;};/ x9 y3 H1 G4 s
然后通過動態(tài)分配內(nèi)存和設(shè)置指針來構(gòu)建鏈表。例如,創(chuàng)建一個新的節(jié)點并插入到鏈表的開頭:
|% F' \4 e3 B6 M: gstruct Node* head = NULL;struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = 10;newNode->next = head;head = newNode;" q& r+ | P+ K5 C" P& J2 w
由于篇幅有限,今天就分享這些,其實還有很多很多,大家面試之前,盡量先刷一波面試題。' z7 B! M! s! T8 W7 k R
' Z; Q3 D2 n4 J. Q' ]6 O2 c" ]2 _
作者 | strongerHuang
6 a* M9 l, V/ P# l) ^: F微信公眾號 | strongerHuang, |" O- E0 u% A8 T! z" g8 R/ M
-END-
- G- K7 y- K# E* p- B往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀
- j' l" S( Q8 Q' _1 F! e 2 W9 l- |- O' p% w, l/ S. a' |% M
' a, `' O, O3 Y
& p4 a( o: m7 g
( W7 L9 ]8 w! ?- y3 j, a# x
zixvifsym0564095463134.jpg (117.64 KB, 下載次數(shù): 11)
下載附件
保存到相冊
zixvifsym0564095463134.jpg
2024-11-5 23:44 上傳
$ L. Y7 ]; a7 R3 w9 u
9 ]6 k" D7 c" q 硬件都做出來了,客戶說想改一下,結(jié)果,全部推倒重做!
) q7 v k$ Q9 R3 {1 _
% G" `5 j0 e: l/ Q# H1 q' f1 }
. I$ B+ t& F/ v3 b( |9 Q+ M8 n ) S* ?- v Z% P2 h
: v. l" p1 Q# y
tw04f5t5stg64095463234.jpg (183.69 KB, 下載次數(shù): 13)
下載附件
保存到相冊
tw04f5t5stg64095463234.jpg
2024-11-5 23:44 上傳
8 a V0 c+ T9 }8 b# A f$ w
* q" ~0 F" q. N7 E 嵌入式架構(gòu)設(shè)計,淺談"驅(qū)動分離式"設(shè)計思想。
2 e* G* c) ]" u( `7 H 7 l2 n/ L: \% X4 a, M- D6 ]1 K
0 b- q6 ^8 B! n0 y" F4 l
8 z4 u, N# z* p$ E7 J4 y
3zkpel5jkn464095463334.jpg (111.84 KB, 下載次數(shù): 12)
下載附件
保存到相冊
3zkpel5jkn464095463334.jpg
2024-11-5 23:44 上傳
0 D! a& M" l; [: X9 s
9 z& P' w3 J8 |, \2 e0 I1 `* _3 `; |
分享一個跨平臺通用的 GUI 框架!
4 ^4 r) l: ^. H
6 |* p/ L+ H* }) N9 A3 O1 p, b
% _0 s# I+ o8 w! y) U& C: P , N( o6 X" N$ r( L' P) D% M; D
我是老溫,一名熱愛學習的嵌入式工程師% C, i+ U+ h% S: N. p- a
關(guān)注我,一起變得更加優(yōu)秀! |
|