當前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式招聘 > 嵌入式面試題 > 嵌入式操作系統(tǒng)面試題拿在手,面試通通不懼
學習嵌入式一來是為興趣,二來就是為了工作了,對于嵌入式工作崗來說,去找一份工作最難的就是面試了,像這種技術(shù)性的工作,一般是有筆試的,在這里我總結(jié)了一些關(guān)于嵌入式操作系統(tǒng)方面的面試題,這是我在微軟亞洲技術(shù)中心面試時做的,還有答案哦,可以收藏來學習。
1.什么是進程,線程?它們之間的區(qū)別和聯(lián)系是什么?
1.進程和線程的差別。
線程是指進程內(nèi)的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)度實體.
與進程的區(qū)別:
(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進程作為擁有資源的基本單位
(2)并發(fā)性:不僅進程之間可以并發(fā)執(zhí)行,同一個進程的多個線程之間也可并發(fā)執(zhí)行
(3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進程的資源.
(4)系統(tǒng)開銷:在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。
面試題: 線程與進程的區(qū)別和聯(lián)系? 線程是否具有相同的堆棧? dll是否有獨立的堆棧?
進程是死的,只是一些資源的集合,真正的程序執(zhí)行都是線程來完成的,程序啟動的時候操作系統(tǒng)就幫你創(chuàng)建了一個主線程。
每個線程有自己的堆棧。
DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL中的代碼是被某些線程所執(zhí)行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調(diào)用,那么這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創(chuàng)建的線程所執(zhí)行,那么是不是說DLL有獨立的堆棧?
以上講的是堆棧,如果對于堆來說,每個DLL有自己的堆,所以如果是從DLL中動態(tài)分配的內(nèi)存,最好是從DLL中刪除,如果你從DLL中分配內(nèi)存,然后在EXE中,或者另外一個DLL中刪除,很有可能導(dǎo)致程序崩潰
2.描述實時系統(tǒng)的基本特性
在特定時間內(nèi)完成特定的任務(wù),實時性與可靠性
3.測試方法
人工測試:個人復(fù)查、抽查和會審
機器測試:黑盒測試和白盒測試
4.如果只想讓程序有一個實例運行,不能運行兩個。像winamp一樣,只能開一個窗口,怎樣實現(xiàn)?
用內(nèi)存映射或全局原子(互斥變量)、查找窗口句柄..
FindWindow,互斥,寫標志到文件或注冊表,共享內(nèi)存。.
5.如何截取鍵盤的響應(yīng),讓所有的‘a’變成‘b’?
鍵盤鉤子SetWindowsHookEx
6.Apartment在COM中有什么用?為什么要引入?
7.存儲過程是什么?有什么用?有什么優(yōu)點?
我的理解就是一堆sql的集合,可以建立非常復(fù)雜的查詢,編譯運行,所以運行一次后,以后再運行速度比單獨執(zhí)行SQL快很多
8.Template有什么特點?什么時候用?
9.Windows下的內(nèi)存是如何管理的?
10.C/C++編譯器中虛表是如何完成的?
11.談?wù)凜OM的線程模型。然后討論進程內(nèi)/外組件的差別。
12.談?wù)処A32下的分頁機制
小頁(4K)兩級分頁模式,大頁(4M)一級
13.在IA32中一共有多少種辦法從用戶態(tài)跳到內(nèi)核態(tài)?
通過調(diào)用門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等
上面都是在面試中最常見的,有些沒有答案,需要你自己來思考,找答案哦。