當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式招聘 > 嵌入式面試題 > 嵌入式操作系統(tǒng)面試題+筆試題集合(經(jīng)典)
學(xué)習(xí)嵌入式技術(shù)出來了都是想要找一個好的工作,當(dāng)然找工作也不是那么好找的,你需要經(jīng)過層層面試,下面是我總結(jié)的一些面試題和筆試題,都是常見的,而且我在這里要建議一下,英語不好的同學(xué)有空多看看英語。廢話不多說了,直接上題。
----------------------------------筆試--------------------------------------
Part1.
(1).Linux系統(tǒng)啟動的第一個用戶:
答案:root
(2).創(chuàng)建一個進(jìn)程的函數(shù):
答案: fork
分析: 面試的時候有可能會問到用沒用過vfork函數(shù).
fork和vfork函數(shù)的區(qū)別在于:
<1>.vfork存在一種優(yōu)化方式:
vfork并不將父進(jìn)程的地址空間復(fù)制到子進(jìn)程中,因為子進(jìn)程會立即調(diào)用exec(或exit),于是也就不存在訪問該地址空間.相反,在子進(jìn)程調(diào)用exec或exit之前,子進(jìn)程是在父進(jìn)程空間運行的.這種優(yōu)化工作方式在某些UNIX的頁式虛擬存儲器實現(xiàn)中提高了效率.
<2>.vfork能夠保證子進(jìn)程先運行,在子進(jìn)程調(diào)用exec或exit之后父進(jìn)程才可能會被調(diào)度運行.
(3).C++中一用C語言庫函數(shù),要在函數(shù)前加什么修飾?
答案:??
(4).程序執(zhí)行的結(jié)果:
#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平臺32位機(jī)Linux-2.6.29操作系統(tǒng)下運行的結(jié)果.
分析:
<1>.不同平臺的考慮,不同的平臺不能保證運算結(jié)果一致.
<2>.sizeof是C語言的一個關(guān)鍵字,也是一個運算符,它在GCC(拿UNIX舉例)編譯時計算結(jié)果,在可執(zhí)行文件中不產(chǎn)生代碼.所以sizeof(++i + ++i)不產(chǎn)生代碼,也不會計算(++i + ++i).
(5).程序執(zhí)行的結(jié)果:
int foo(int x, int n)
{
int val=1;
if (n%2==1)
val *= x;
val *= foo(x, n/2);
return val;
}
問該函數(shù)描述了的是x和n的什么關(guān)系??
A. x^n B.n^x C.x*n D.不確定
答案:I don't know.(我們找到規(guī)律).
Part2
(1).list all the parameter-passing methods in C and C++ program.
目的考察: C語言傳參方式和C++傳參方式有哪些? 有什么不同.
(2).C語言的中的struct和C++中的class的區(qū)別.
(3).簡述i386架構(gòu)在保護(hù)模式下的內(nèi)存管理.
Part3
(1).在Linux下,用任意方法產(chǎn)生一個8KB的文件.
$>dd /dev/zero 8Kfile bs=1 count=8
(2).用一個結(jié)構(gòu)描述一個班級的學(xué)生,并且sort mark order.(high to low).
大概意思:用一個結(jié)構(gòu)描述一個班級的學(xué)生,并以單鏈表的形式按照key進(jìn)行排序,由高到低排序.這里的key可以是學(xué)號也可以是學(xué)生成績....
目的考察: 對鏈表結(jié)構(gòu)的認(rèn)識和使用.至于用什么key排序,由自己而定.
----------------------------------面試--------------------------------------
綜述: 問的問題大都是簡歷所寫的內(nèi)容和筆試題的內(nèi)容, 比如簡歷中的IT技能, 項目經(jīng)驗, 在以前公司負(fù)責(zé)哪些事情....
例如:如果你寫了熟悉TCP/IP協(xié)議,面試管會針對TCP/IP協(xié)議開始對你"攻擊";
1.GCC編譯文件的幾個步驟? 每個步驟的參數(shù)選項是什么? 每個步驟的原理是怎樣實現(xiàn)的(尤其是鏈接是如何實現(xiàn)的)?
2.你是怎樣調(diào)試代碼的? 用那些工具? 多線程程序和多進(jìn)程程序怎么調(diào)試?
3.編寫多線程程序時需要注意那些問題? 如何解決這些問題?
4.你對TCP/IP協(xié)議的理解? TCP/IP網(wǎng)絡(luò)模型分哪幾層? 每層都包含了那些協(xié)議,TCP, UDP, IP報頭的長度是多少? 里面包含了哪些信息?
5.TCP連接時三次握手是怎么一個過程? 斷開連接時又是怎樣一個過程, 有個2倍的timeout時間使用來做什么的??
6.套接字(socket)在TCP/IP網(wǎng)絡(luò)模型的哪一層?
7.你使用過哪些類型的socket? 最多寫過多少行的相關(guān)代碼?
8.進(jìn)程IPC有哪些? 你使用過哪些? 這里面哪種方式最快?
9.對Linux內(nèi)核有了解? 看過源代碼嗎? 能簡單介紹一下你對內(nèi)核的了解嗎?
10.你是怎樣知道我們公司的? 有了解嗎? 為什么選擇了我們部門?? (因為中科方德研發(fā)部也分好幾個部門,所以才會這樣問)
11.你有什么問題要問嗎??
12.你的期望待遇是多少? (一般這個問題會最后問)