當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 嵌(qian)入式(shi)操作系統面(mian)試(shi)題拿(na)在手,面(mian)試(shi)通(tong)通(tong)不懼
嵌入式操作系統面(mian)試(shi)題拿在(zai)手,面(mian)試(shi)通通不懼
時間:2018-08-09 來(lai)源:未知
學(xue)習嵌入式一(yi)來(lai)是(shi)為(wei)興趣(qu),二來(lai)就(jiu)(jiu)是(shi)為(wei)了(le)工作(zuo)(zuo)(zuo)了(le),對于嵌入式工作(zuo)(zuo)(zuo)崗來(lai)說,去找一(yi)份工作(zuo)(zuo)(zuo)最難的(de)(de)(de)就(jiu)(jiu)是(shi)面試了(le),像這(zhe)種技術性的(de)(de)(de)工作(zuo)(zuo)(zuo),一(yi)般是(shi)有(you)筆(bi)試的(de)(de)(de),在這(zhe)里我總(zong)結了(le)一(yi)些關于嵌入式操作(zuo)(zuo)(zuo)系統方面的(de)(de)(de)面試題,這(zhe)是(shi)我在微(wei)軟亞洲技術中心面試時做的(de)(de)(de),還有(you)答(da)案哦,可以收藏來(lai)學(xue)習。
1.什么(me)是進程,線程?它們之間的區別和聯系是什么(me)?
1.進程和線程的差別。
線程是指進程內的(de)一(yi)個執(zhi)行單元,也是進程內的(de)可調(diao)度實體.
與進(jin)程的區別:
(1)調度:線程(cheng)作為調度和分配的基本(ben)單(dan)位(wei),進程(cheng)作為擁(yong)有資源的基本(ben)單(dan)位(wei)
(2)并發(fa)性:不僅進程之間(jian)(jian)可(ke)以并發(fa)執(zhi)行,同一個進程的(de)多個線程之間(jian)(jian)也可(ke)并發(fa)執(zhi)行
(3)擁(yong)有資源(yuan):進程是擁(yong)有資源(yuan)的一個獨立單位,線程不擁(yong)有系(xi)統資源(yuan),但可以訪(fang)問隸屬于進程的資源(yuan).
(4)系(xi)統開銷(xiao)(xiao):在創建(jian)或撤消進程(cheng)時,由于(yu)系(xi)統都要為之分配和回(hui)收(shou)資源,導致系(xi)統的開銷(xiao)(xiao)明顯大(da)于(yu)創建(jian)或撤消線(xian)程(cheng)時的開銷(xiao)(xiao)。
面試題: 線程(cheng)與進程(cheng)的(de)區別和聯(lian)系? 線程(cheng)是否具有相同(tong)的(de)堆棧? dll是否有獨立的(de)堆棧?
進程(cheng)(cheng)是(shi)死的(de)(de)(de)(de),只是(shi)一(yi)些資源的(de)(de)(de)(de)集合(he),真正的(de)(de)(de)(de)程(cheng)(cheng)序執行(xing)都(dou)是(shi)線(xian)程(cheng)(cheng)來完成的(de)(de)(de)(de),程(cheng)(cheng)序啟(qi)動(dong)的(de)(de)(de)(de)時(shi)候操作系統(tong)就幫你創(chuang)建了(le)一(yi)個主線(xian)程(cheng)(cheng)。
每個(ge)線程有自己(ji)的(de)堆棧。
DLL中(zhong)(zhong)有(you)沒有(you)獨立的(de)(de)堆棧(zhan),這(zhe)個問(wen)題(ti)不好回答,或(huo)者說(shuo)(shuo)這(zhe)個問(wen)題(ti)本身是(shi)(shi)否有(you)問(wen)題(ti)。因為DLL中(zhong)(zhong)的(de)(de)代碼(ma)是(shi)(shi)被(bei)某些(xie)線程(cheng)(cheng)所執(zhi)行,只有(you)線程(cheng)(cheng)擁有(you)堆棧(zhan),如果DLL中(zhong)(zhong)的(de)(de)代碼(ma)是(shi)(shi)EXE中(zhong)(zhong)的(de)(de)線程(cheng)(cheng)所調用,那么這(zhe)個時(shi)候(hou)是(shi)(shi)不是(shi)(shi)說(shuo)(shuo)這(zhe)個DLL沒有(you)自己獨立的(de)(de)堆棧(zhan)?如果DLL中(zhong)(zhong)的(de)(de)代碼(ma)是(shi)(shi)由DLL自己創建的(de)(de)線程(cheng)(cheng)所執(zhi)行,那么是(shi)(shi)不是(shi)(shi)說(shuo)(shuo)DLL有(you)獨立的(de)(de)堆棧(zhan)?
以上講的是堆棧,如果(guo)對于堆來(lai)說,每(mei)個(ge)DLL有(you)自己的堆,所以如果(guo)是從DLL中動態(tai)分(fen)配的內存,最好是從DLL中刪除,如果(guo)你從DLL中分(fen)配內存,然后在EXE中,或者另外一個(ge)DLL中刪除,很有(you)可(ke)能導致程序崩潰
2.描述實時系統的基本特(te)性
在特(te)定時間內完成特(te)定的任務,實時性(xing)與可靠性(xing)
3.測試方法(fa)
人(ren)(ren)工測試:個人(ren)(ren)復查、抽查和會(hui)審
機器測試(shi):黑盒測試(shi)和白(bai)盒測試(shi)
4.如(ru)果只想讓(rang)程序有一(yi)個實例運(yun)行(xing),不能運(yun)行(xing)兩個。像(xiang)winamp一(yi)樣,只能開一(yi)個窗口(kou),怎樣實現?
用內存(cun)映射(she)或全局原(yuan)子(互斥變量)、查找窗口句柄(bing)..
FindWindow,互斥(chi),寫(xie)標志到文(wen)件(jian)或注冊表(biao),共享(xiang)內存。.
5.如(ru)何(he)截取(qu)鍵盤(pan)的響應(ying),讓(rang)所(suo)有的‘a’變成‘b’?
鍵(jian)盤鉤(gou)子SetWindowsHookEx
6.Apartment在COM中有什(shen)么用?為什(shen)么要引入(ru)?
7.存儲過(guo)程是什(shen)么?有(you)什(shen)么用?有(you)什(shen)么優點?
我的(de)理解(jie)就是一(yi)堆sql的(de)集(ji)合,可以(yi)建立非常(chang)復雜的(de)查詢,編譯運行,所以(yi)運行一(yi)次(ci)后,以(yi)后再運行速度比(bi)單獨執行SQL快很多
8.Template有什么特點?什么時候用?
9.Windows下(xia)的內(nei)存是如何管(guan)理的?
10.C/C++編(bian)譯器中虛表是如何完成(cheng)的?
11.談(tan)(tan)談(tan)(tan)COM的(de)線程模型。然后討論進程內/外(wai)組件(jian)的(de)差別。
12.談談IA32下的分頁機制(zhi)
小頁(ye)(4K)兩級分(fen)頁(ye)模式,大頁(ye)(4M)一級
13.在IA32中一共有多少(shao)種辦法從(cong)用戶(hu)態跳到內核(he)態?
通過(guo)調用門(men),從ring3到(dao)ring0,中斷從ring3到(dao)ring0,進入vm86等等
上面(mian)都是在面(mian)試中最常(chang)見(jian)的,有些(xie)沒有答(da)案,需要你自己來思考,找答(da)案哦(e)。

