嵌入(ru)式操作系統面(mian)試(shi)題+筆試(shi)題集合(經典)
時(shi)間:2018-08-03 來源:未知
學習嵌入式技(ji)術出來了(le)(le)都是(shi)想(xiang)要(yao)找一(yi)個好的(de)工(gong)作,當然找工(gong)作也不(bu)是(shi)那么好找的(de),你需要(yao)經過(guo)層層面試(shi),下面是(shi)我(wo)總結的(de)一(yi)些(xie)面試(shi)題(ti)和(he)筆試(shi)題(ti),都是(shi)常見的(de),而且我(wo)在這里要(yao)建(jian)議一(yi)下,英(ying)語(yu)不(bu)好的(de)同(tong)學有(you)空(kong)多看(kan)看(kan)英(ying)語(yu)。廢話不(bu)多說了(le)(le),直(zhi)接上題(ti)。
----------------------------------筆試(shi)--------------------------------------
Part1.
(1).Linux系統啟動的第一個用戶:
答案:root
(2).創建一(yi)個進程(cheng)的函數(shu):
答(da)案: fork
分析: 面試的時候有可能會問到(dao)用沒用過vfork函數(shu).
fork和vfork函數的區別在于:
<1>.vfork存在一種優化(hua)方式:
vfork并不將(jiang)父(fu)進程(cheng)(cheng)的(de)地址空間復制到(dao)子(zi)進程(cheng)(cheng)中,因(yin)為子(zi)進程(cheng)(cheng)會立即調用exec(或(huo)exit),于是(shi)(shi)也(ye)就不存在(zai)訪問該地址空間.相反(fan),在(zai)子(zi)進程(cheng)(cheng)調用exec或(huo)exit之前,子(zi)進程(cheng)(cheng)是(shi)(shi)在(zai)父(fu)進程(cheng)(cheng)空間運行的(de).這種優(you)化工作方式在(zai)某些UNIX的(de)頁式虛擬存儲器實現中提高(gao)了效(xiao)率.
<2>.vfork能夠保(bao)證子進(jin)程先運行,在子進(jin)程調(diao)用exec或exit之后父進(jin)程才可(ke)能會(hui)被調(diao)度運行.
(3).C++中一用(yong)C語(yu)言庫函(han)數,要在函(han)數前加(jia)什么修飾?
答案:??
(4).程序執(zhi)行的結果:
#include
int main(void)
{
int i=3;
int j;
j = sizeof(++i + ++i);
printf("i = %d, j = %d\n", i, j);
return 0;
}
答案:i=3, j=4;僅僅只在i386平(ping)臺32位機Linux-2.6.29操作系(xi)統下(xia)運行的結果.
分析:
<1>.不同平(ping)臺的(de)考慮,不同的(de)平(ping)臺不能保證(zheng)運(yun)算結果(guo)一致.
<2>.sizeof是C語言的一(yi)(yi)個關鍵字(zi),也是一(yi)(yi)個運(yun)算符(fu),它(ta)在GCC(拿(na)UNIX舉(ju)例)編(bian)譯時(shi)計算結(jie)果,在可執行文(wen)件中不產(chan)生(sheng)代碼.所以sizeof(++i + ++i)不產(chan)生(sheng)代碼,也不會(hui)計算(++i + ++i).
(5).程(cheng)序(xu)執行的結(jie)果:
int foo(int x, int n)
{
int val=1;
if (n%2==1)
val *= x;
val *= foo(x, n/2);
return val;
}
問該函數描述(shu)了的是x和n的什么(me)關系??
A. x^n B.n^x C.x*n D.不確定
答案(an):I don't know.(我們找到規律).
Part2
(1).list all the parameter-passing methods in C and C++ program.
目的考察: C語言傳參(can)方(fang)式和C++傳參(can)方(fang)式有哪些? 有什(shen)么(me)不同.
(2).C語言(yan)的(de)中(zhong)(zhong)的(de)struct和(he)C++中(zhong)(zhong)的(de)class的(de)區別.
(3).簡述(shu)i386架構在保護模式下的內存管(guan)理.
Part3
(1).在Linux下,用任(ren)意方(fang)法產生一個(ge)8KB的文件.
$>dd /dev/zero 8Kfile bs=1 count=8
(2).用一(yi)個結構描述一(yi)個班級的學(xue)生,并且sort mark order.(high to low).
大概(gai)意思(si):用一(yi)(yi)個(ge)(ge)結(jie)構(gou)描述一(yi)(yi)個(ge)(ge)班(ban)級的(de)(de)學(xue)生(sheng),并以單鏈(lian)表(biao)的(de)(de)形式按照(zhao)key進行排(pai)序(xu)(xu),由高(gao)到低(di)排(pai)序(xu)(xu).這里的(de)(de)key可以是(shi)學(xue)號也可以是(shi)學(xue)生(sheng)成績(ji)....
目的考察: 對鏈表(biao)結(jie)構(gou)的認識和使用(yong).至于用(yong)什么key排序,由(you)自己而(er)定(ding).
----------------------------------面試--------------------------------------
綜述: 問(wen)(wen)的問(wen)(wen)題(ti)大都是簡(jian)歷所寫的內(nei)容和(he)筆試(shi)題(ti)的內(nei)容, 比如簡(jian)歷中(zhong)的IT技能, 項(xiang)目經驗, 在以前公司負責哪(na)些事情....
例如(ru):如(ru)果你寫了(le)熟(shu)悉TCP/IP協議(yi),面(mian)試管會(hui)針(zhen)對(dui)TCP/IP協議(yi)開始(shi)對(dui)你"攻(gong)擊";
1.GCC編譯(yi)文(wen)件的(de)(de)幾個步(bu)(bu)驟? 每個步(bu)(bu)驟的(de)(de)參數選項是(shi)什么? 每個步(bu)(bu)驟的(de)(de)原(yuan)理是(shi)怎樣實現(xian)的(de)(de)(尤其是(shi)鏈接是(shi)如(ru)何實現(xian)的(de)(de))?
2.你(ni)是怎樣調試代碼的(de)? 用那些工具? 多(duo)線(xian)程(cheng)(cheng)(cheng)程(cheng)(cheng)(cheng)序和多(duo)進(jin)程(cheng)(cheng)(cheng)程(cheng)(cheng)(cheng)序怎么(me)調試?
3.編(bian)寫多線程程序時需要注(zhu)意那些(xie)問題? 如(ru)何(he)解決(jue)這些(xie)問題?
4.你對TCP/IP協(xie)議的理(li)解? TCP/IP網(wang)絡模型分哪(na)幾(ji)層(ceng)? 每層(ceng)都包(bao)(bao)含(han)了(le)那些(xie)協(xie)議,TCP, UDP, IP報頭(tou)的長(chang)度是多(duo)少? 里面包(bao)(bao)含(han)了(le)哪(na)些(xie)信息?
5.TCP連接(jie)時(shi)三次握手是(shi)怎么(me)一個(ge)過程(cheng)? 斷開連接(jie)時(shi)又是(shi)怎樣一個(ge)過程(cheng), 有個(ge)2倍的(de)timeout時(shi)間使(shi)用來做什么(me)的(de)??
6.套接(jie)字(zi)(socket)在TCP/IP網絡模型的哪一層?
7.你使(shi)用過哪些類型的socket? 最(zui)多寫過多少行的相(xiang)關代碼(ma)?
8.進(jin)程IPC有哪些? 你(ni)使用過哪些? 這里面哪種方式最(zui)快?
9.對(dui)Linux內(nei)核(he)有了解? 看過(guo)源(yuan)代(dai)碼嗎? 能簡單(dan)介紹一下你(ni)對(dui)內(nei)核(he)的了解嗎?
10.你是怎樣(yang)(yang)知道我們(men)公司的(de)? 有了解嗎(ma)? 為(wei)什么選擇(ze)了我們(men)部(bu)門?? (因(yin)為(wei)中科(ke)方德研(yan)發部(bu)也分好幾個部(bu)門,所以才會這樣(yang)(yang)問)
11.你有什(shen)么問題(ti)要問嗎??
12.你的期望待遇是多(duo)少? (一般這(zhe)個問題會最(zui)后問)

