2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試仿真題
1、簡(jiǎn)答題。下面的題目必須全部答對(duì)才給分:(5分)
1、在UNIX環(huán)境中,編譯流程是什么?
2、ABI,ELF的英文全稱是什么
3、一般UNIX的程序有多少段,舉一個(gè)實(shí)際的例子說(shuō)明。
4、如何在kernel二進(jìn)制代碼中找一個(gè)字符串。
5、段地址F000:FFF0轉(zhuǎn)換為線形地址的值是多少(16進(jìn)制表達(dá))。
6、在一個(gè)UNIX文件系統(tǒng)中,文件的唯一性標(biāo)志是什么?
2、問(wèn)答題。
1、———————————————————–
寫一些代碼。如何用文件實(shí)現(xiàn)信號(hào)燈?要求如果程序崩潰了,這個(gè)文件也將自動(dòng)被刪除。
為什么可以這樣實(shí)現(xiàn)信號(hào)燈?(5分)
傳統(tǒng)的signal函數(shù)信號(hào)處理為什么是不可靠的,信號(hào)和系統(tǒng)調(diào)用有何關(guān)系?(5分)
在圖形庫(kù)系統(tǒng)中往往提供timer的功能,除了使用ALARM信號(hào)外,你還可以使用什么系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)timer?(5分)
2、———————————————————–
寫一些代碼,演示如何正確使用write系統(tǒng)調(diào)用。注意看好手冊(cè)再回答。(2分)
如果一個(gè)文件以rw模式打開(kāi),在進(jìn)行read/write操作轉(zhuǎn)換時(shí),需要進(jìn)行什么操作。(2分)
3、———————————————————–
解釋終端結(jié)構(gòu)termios.c_cc的MIN/TIME數(shù)值變化的帶來(lái)read/write的特性。(5分)
如何理解終端、控制終端、虛擬終端、控制臺(tái)、tty等類同的概念?(5分)
4、———————————————————–
解釋計(jì)算機(jī)中Copy-On-Write的概念。(2分)
調(diào)用fork之后,子進(jìn)程沒(méi)有繼承父進(jìn)程的屬性有哪些?(5分)
解釋為什么每個(gè)程序在裝入執(zhí)行之后,總是已經(jīng)預(yù)先打開(kāi)了stdout、stdin、stderr?(2分)
在fork之前,父進(jìn)程打開(kāi)了一個(gè)文件。在fork之后,如果子進(jìn)程移動(dòng)了文件指針,父進(jìn)程的文件指針有什么變化;如果子進(jìn)程關(guān)閉了文件,父進(jìn)程有什么變化?為什么會(huì)這樣?(5分)
標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤輸出分別是什么類型的緩沖,這些緩沖在用戶空間還是在核心空間?
怎樣關(guān)閉他們的緩沖?如果父進(jìn)程關(guān)閉了緩沖,在fork之后建立的子進(jìn)程是否也關(guān)閉了緩沖?(5分)
vfork和fork相比,有什么特色?(2分)
system函數(shù)是否等同于fork+exec?(2分)
wait系統(tǒng)調(diào)用有多少種條件可以退出?(2分)
5、———————————————————–
系統(tǒng)調(diào)用和庫(kù)函數(shù)調(diào)用有什么區(qū)別。(2分)
在linux2.4.x上的glibc和newlib(一種嵌入式C庫(kù))的系統(tǒng)調(diào)用有什么不同?(2分)
在linux2.4.x上,對(duì)系統(tǒng)調(diào)用execve如果調(diào)用成功,它返回的值是多少。(2分)
6、———————————————————–
列出你所知道的.2個(gè)內(nèi)存跟蹤庫(kù)。(2分)
設(shè)計(jì)一個(gè)內(nèi)存跟蹤方案,為什么選擇這個(gè)方案(5分)
3、分析題。
本題(各5分)。假設(shè)下面代碼中的變量都是合法變量,調(diào)用外部的函數(shù)都是正確的。回答幾個(gè)問(wèn)題:
這些代碼意圖要干什么?
是否有問(wèn)題?
如果有問(wèn)題,該如何修改,或者如何避免類似錯(cuò)誤發(fā)生?
如果沒(méi)有問(wèn)題,如果代碼有輸出,輸出是什么?
1、———————————————————–
int isvowel (char c)
{
return c==’a’’’’’’’’||c==’e’’’’’’’’||c==’i’’’’’’’’||c==’o’’’’’’’’||c==’u’’’’
}
2、———————————————————–
while (c==’\t’||c=’ ‘||c==’\n’)
c=getc(f);
3、———————————————————–
/* 當(dāng)x=2, y=3, z=? */
if (x==0)
if (y==0)
z=-1;
else
z=x+y;
4、———————————————————–
/* 處理網(wǎng)絡(luò)事件 */
void process_network_code(int x, int y)
{
/* 選擇modes_pointer資源 */
switch (line) {
case THING1:
/* 處理異常1#, 使用老的modes_pointer資源 */
doit1();
break;
case THING2:
/* 處理異常2#, 需要重新啟動(dòng)服務(wù) */
if (x == STUFF) {
/* 重新申請(qǐng)modes_pointer資源,沒(méi)有初始化 */
do_first_stuff();
/* 在這種條件下,有些資源不用重新申請(qǐng) */
if (y == OTHER_STUFF)
break;
/* 申請(qǐng)剩下的資源,并初始化 */
do_later_stuff();
}
/* 初始化modes_pointer資源 */
initialize_modes_pointer();
break;
default:
/* 處理普通事件, 使用老的modes_pointer資源 */
processing();
}
/* 使用modes_pointer資源,處理事件 */
use_modes_pointer();
}
5、———————————————————–
int is_gb2312_char(char c1, char c2)
{
if (c1 >= 0xa1 && c2 >= 0xa1)
return 1;
else
return 0;
}
【2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試仿真題】相關(guān)文章:
2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試綜合編程題10-17
2017嵌入式系統(tǒng)開(kāi)發(fā)工程師綜合編程題10-01
嵌入式系統(tǒng)開(kāi)發(fā)工程師考試復(fù)習(xí)要點(diǎn)201705-15
2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試模擬試題10-01
2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試重要考點(diǎn)10-01
2017嵌入式系統(tǒng)開(kāi)發(fā)工程師考試復(fù)習(xí)要點(diǎn)10-17
2017年嵌入式系統(tǒng)開(kāi)發(fā)工程師考試試題05-20