嵌入式混合面試題_第1頁(yè)
嵌入式混合面試題_第2頁(yè)
嵌入式混合面試題_第3頁(yè)
嵌入式混合面試題_第4頁(yè)
嵌入式混合面試題_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、ANSI C/C+方面的知識(shí)一.1、簡(jiǎn)答題。下面的題目必須全部答對(duì)才給分(20分):1、 如何在C中初始化一個(gè)字符數(shù)組。2、 如何在C中為一個(gè)數(shù)組分配空間。3、 如何初始化一個(gè)指針數(shù)組。4、 如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。5、 s10的另外一種表達(dá)方式是什么。6、 GCC3.2.2版本中支持哪幾種編程語(yǔ)言。7、 要使用CHAR_BIT需要包含哪個(gè)頭文件。8、 對(duì)(-1.2345)取整是多少?9、 如何讓局部變量具有全局生命期。10、C中的常量字符串應(yīng)在何時(shí)定義?11、如何在兩個(gè).c文件中引用對(duì)方的變量。12、使用malloc之前需要做什么準(zhǔn)備工作。13、realloc函數(shù)在使用

2、上要注意什么問題。14、strtok函數(shù)在使用上要注意什么問題。15、gets函數(shù)在使用上要注意什么問題。16、C語(yǔ)言的詞法分析在長(zhǎng)度規(guī)則方面采用的是什么策略?17、a+b所表示的是什么意思?有什么問題?18、如何定義Bool變量的TRUE和FALSE的值。19、C語(yǔ)言的const的含義是什么。在定義常量時(shí),為什么推薦使用const,而不是#define。20、C語(yǔ)言的volatile的含義是什么。使用時(shí)會(huì)對(duì)編譯器有什么暗示。一.2、問答題。1、 “匈牙利命名法”有什么優(yōu)缺點(diǎn)?(2分)2、下面x, y, *p的值是多少,有什么問題?(2分)int x, y, z = 2;int *p=&z;x

3、=sizeof*p;y=x/*p; /* x=?, *p=?, y=?, 有什么問題?*/3、下面的語(yǔ)句是什么意思?如何聲明或定義才使它們更易懂?(10分)int (*foo()();int (*foo();int (*foo)();(*(void(*)()0)();void (*signal(int,void(*)(int)(int);4、本題(2分)。一般使用malloc時(shí),需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,如:char *s; s = (char *)malloc(31);下面中?該如何填寫,才可以正確執(zhí)行強(qiáng)制類型轉(zhuǎn)換?int (*monthp)31; monthp = (?)malloc(31);

4、5、關(guān)于C語(yǔ)言運(yùn)算符優(yōu)先級(jí)的記憶技巧是什么?(2分)/* 下面r的值是多少 */int hi, low, r;hi=7;low=3;r=hi4+low;6、指針和數(shù)組的區(qū)別是什么?用一個(gè)簡(jiǎn)單的聲明把它們區(qū)分開。(2分)指針和數(shù)組的聲明在什么情況下是相同的?(2分)7、C語(yǔ)言的左值(lvalue)和右值(rvalue)的含義是什么?(2分)8、為什么C語(yǔ)言可以實(shí)現(xiàn)printf(char *format, )這樣可變參數(shù)的調(diào)用形式?這樣有什么缺點(diǎn)?(2分)9、說明C語(yǔ)言中術(shù)語(yǔ)”聲明”定義”原型”的含義?(2分)10、舉一個(gè)例子,說明使用assert和防錯(cuò)代碼的區(qū)別。(5分)11、對(duì)語(yǔ)句 if el

5、se 與操作符 ? : 使用場(chǎng)合的比較。(2分)12、編寫一個(gè)函數(shù),輸入一個(gè)的整型數(shù)字,可以選擇按照8/10/16進(jìn)制輸出字符串。注意邊界值。(5分)13、本題(2分)。下面是一個(gè)1616的黑白圖標(biāo):static unsigned short stopwatch = 007c6,01ff7,0383b,0600c,0600c,0xc006,0xc006,0xdf06,0xc106,0xc106,0610c,0610c,03838,01ff0,007c0,00000,;如何修改聲明,可以使之在源代碼中形象地表現(xiàn)出圖形的模樣。14、說出可以使用calendar1130變量的四種類型定義。(5分)如

6、:int calendar1231; /* 二維數(shù)組 */15、使用strcmp,當(dāng)字符串相同時(shí)會(huì)返回0。但0一般作為邏輯假,因此下面的語(yǔ)句不容易理解:if (!strcmp(s, “string”) return EQUATION;如何經(jīng)過簡(jiǎn)單修改,使之更易懂?(2分)16、編寫一個(gè)自己的完全C語(yǔ)言版本的memset函數(shù),并且評(píng)價(jià)這個(gè)實(shí)現(xiàn)的性能和可移植性。(5分)17、在樹和圖這些數(shù)據(jù)結(jié)構(gòu)中,通常使用指針來組織數(shù)據(jù)。如果我們要把這些數(shù)據(jù)保存到文件中,指針是沒有意義的。我們?cè)撊绾谓鉀Q這個(gè)問題。(2分)18、用2種不同的方法計(jì)算long變量的”1bit的個(gè)數(shù)。(2分)19、任意給出一個(gè)C的基本數(shù)

7、據(jù)類型,如何編碼判斷這個(gè)數(shù)據(jù)類型是有符號(hào)還是無符號(hào)的?(2分)不得上機(jī)實(shí)驗(yàn),寫出下面代碼的輸出。解釋這個(gè)行為是標(biāo)準(zhǔn)定義的,還是依賴實(shí)現(xiàn)的。(2分)int i;for (i = 0; i = 0xa1 & c2 = 0xa1)return 1;elsereturn 0;6、下面x, y的值是多少,有什么問題?int x = 10, y = 3;x = y;y = x;x = y;/* x=?, y = ? */7、int days=31,28,31,30,31,30,31,31,30,31,30,31,;int calendar1231;int (*monthp)31;int *dayp;int

8、 i;memset(calendar, 0, sizeof(calendar);i = 0;for (monthp = calendar; monthp &calendar12; monthp+) for (dayp = *monthp; dayp &(*monthp)31; dayp+) if (dayp - *monthp dayscalendar - monthp) *dayp = i+ % 7 + 1;8、void printnum(long n)if (n = 10) printnum(n/10);putchar (”0123456789n%10);9、void * memchr(v

9、oid *pv, unsigned char ch, size_t size)unsigned char *pch = (unsigned char *) pv;unsigned char *pchEnd = pch + size;while (pch pchEnd) if (*pch = ch)return (pch);pch+;return NULL;10、void * memchr(void *pv, unsigned char ch, size_t size)unsigned char *pch = (unsigned char *) pv;unsigned char *pchPlan

10、t = pch + size;unsigned char chSave = *pchPlant;*pchPlant = ch;while (pch != ch) pch+;*pchPlant = chSave;return (pch = pchPlant) ? NULL : pch);11、void UnsToStr(unsigned short int u, char *str)char *pch;assert(u 0);strcpy(str, pch);12、void *memmove(void *pvTo, void pvFrom, size_t size)char *pbTo = (c

11、har *)pvTo;char *pbFrom = (char *)pvFrom;(pbTo 0);*pbTo+ = *pbFrom+;return (pvTo);14、#include int main(int argc, char *argv)char s=”0123456789;int i = 0;do printf (”%c”, i+s); while(s?1:printf(”n”)-1);return 0;15、int fibonacci(int x)if (x = 1 | x = 2)return 1;return fibonacci(x - 2) + fibonacci(x -

12、1);16、這里有一個(gè)程序cdecl.c。寫出它的工作流程。寫出它的使用方法。給出一個(gè)典型輸入用例,記錄下它的輸出。一.4、綜合編程題。要求:1、完成需求,程序運(yùn)行正確。2、工作原理文檔,使用文檔完整。3、代碼規(guī)整優(yōu)美。注釋得當(dāng)。4、運(yùn)行速度足夠快。5、用工具分析出是哪些代碼或函數(shù)造成速度瓶頸。1、編寫一個(gè)排序程序。被排序的文件有8MB大小,一行一個(gè)隨機(jī)整數(shù)(ASCII格式)。要求對(duì)這些整數(shù)進(jìn)行排序,并計(jì)算平均值,打印出排序所需的時(shí)間。(20分)2、用dummy header技巧實(shí)現(xiàn)一個(gè)鏈表DEMO。要求具有create, insert, delete, search功能。編寫一個(gè)應(yīng)用程序,使

13、用上面的函數(shù)。使用dummy header技巧有什么優(yōu)點(diǎn)。(20分)3、用heapsort算法實(shí)現(xiàn)優(yōu)先隊(duì)列。要求具有create, insert, delete功能。編寫一個(gè)應(yīng)用程序,使用上面的函數(shù)。使用heapsort算法有什么優(yōu)點(diǎn)。(20分)用trie(一種多叉樹)實(shí)現(xiàn)一個(gè)字典。要求具有create, insert, delete, search功能。編寫一個(gè)應(yīng)用程序,使用上面的函數(shù)。使用trie樹有什么優(yōu)點(diǎn)。(20分)二、POSIX方面的知識(shí)。二.1、簡(jiǎn)答題。下面的題目必須全部答對(duì)才給分:(5分)1、在UNIX環(huán)境中,編譯流程是什么?2、ABI,ELF的英文全稱是什么3、一般UNIX的程

14、序有多少段,舉一個(gè)實(shí)際的例子說明。4、如何在kernel二進(jìn)制代碼中找一個(gè)字符串。5、段地址F000:FFF0轉(zhuǎn)換為線形地址的值是多少(16進(jìn)制表達(dá))。6、在一個(gè)UNIX文件系統(tǒng)中,文件的唯一性標(biāo)志是什么?二.2、問答題。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)用來實(shí)現(xiàn)timer?(5分)2、寫一些代碼,演示如何正確使用write系統(tǒng)調(diào)用。注意看好手冊(cè)再

15、回答。(2分)如果一個(gè)文件以rw模式打開,在進(jìn)行read/write操作轉(zhuǎn)換時(shí),需要進(jìn)行什么操作。(2分)3、解釋終端結(jié)構(gòu)termios.c_cc的MIN/TIME數(shù)值變化的帶來read/write的特性。(5分)如何理解終端、控制終端、虛擬終端、控制臺(tái)、tty等類同的概念?(5分)4、解釋計(jì)算機(jī)中Copy-On-Write的概念。(2分)調(diào)用fork之后,子進(jìn)程沒有繼承父進(jìn)程的屬性有哪些?(5分)解釋為什么每個(gè)程序在裝入執(zhí)行之后,總是已經(jīng)預(yù)先打開了stdout、stdin、stderr?(2分)在fork之前,父進(jìn)程打開了一個(gè)文件。在fork之后,如果子進(jìn)程移動(dòng)了文件指針,父進(jìn)程的文件指針有

16、什么變化;如果子進(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)用成功,它返

17、回的值是多少。(2分)6、列出你所知道的2個(gè)內(nèi)存跟蹤庫(kù)。(2分)設(shè)計(jì)一個(gè)內(nèi)存跟蹤方案,為什么選擇這個(gè)方案(5分)二.3、綜合編程題。要求:1、完成需求,程序運(yùn)行正確。2、工作原理文檔,使用文檔完整。3、代碼規(guī)整優(yōu)美。注釋得當(dāng)。4、運(yùn)行速度足夠快。1、這里有一個(gè)8MB的文件,編寫一個(gè)copy程序,拷貝這個(gè)文件,并計(jì)算所需時(shí)間。用工具分析出是哪些代碼或函數(shù)造成速度瓶頸。提示:如果只是使用read/write調(diào)用,不是一個(gè)好的實(shí)現(xiàn)。(20分)2、Linux系統(tǒng)中,什么時(shí)候會(huì)出現(xiàn)類似Y2K的問題。寫一個(gè)程序證明。(20分)3、編寫一個(gè)程序,測(cè)試系統(tǒng)最小的睡眠時(shí)間間隔。(20分)4、編寫一個(gè)pipe程序

18、,測(cè)試有N個(gè)管道,size大小的buffer情況下,pipe的傳輸性能是多少?(20分)5、在ext2文件系統(tǒng)上,單個(gè)文件最大可以達(dá)到多少?寫一個(gè)程序獲得這方面的限制。(20分)三、Linux編程基本使用知識(shí)。三.1、命令和shell1)編寫一個(gè)腳本,統(tǒng)計(jì)一個(gè)目錄下面所有C代碼的行數(shù)。(2分)2)編寫一個(gè)sed腳本,去除HTML文件中的HTML標(biāo)記。(2分)3)編寫一個(gè)腳本獲得當(dāng)前系統(tǒng)eth0的IP地址。(2分)4)編寫一個(gè)腳本以交互的方式,進(jìn)行DNS的設(shè)定。(2分)5)使用ls命令編寫一個(gè)腳本,實(shí)現(xiàn)ls -R,遞歸列出當(dāng)前目錄下的所有目錄、文件。(2分)6)在一個(gè)目錄下,找soft-link

19、 files,用下面的命令,原理是可行的,但無法操作,該如何解決?要2種方法。(2分)ls -l | grep -7)如何把標(biāo)準(zhǔn)錯(cuò)誤輸出,重定向到標(biāo)準(zhǔn)輸出上。(2分)8)我們的系統(tǒng)中的軟件包是使用RPM管理的。要求下面的問題寫出shell命令和運(yùn)行結(jié)果。(5分)如何知道系統(tǒng)中安裝了幾個(gè)軟件包。如何知道系統(tǒng)中安裝了哪幾類(group)軟件包。如何知道kernel軟件包的簡(jiǎn)述。如何知道kernel軟件包的Changelog。如何知道kernel軟件包有幾個(gè)文件。如何知道kernel軟件包安裝后有多大。三.2、編輯工具的使用。(各2分)1)如何使用vi進(jìn)行塊拷貝、粘貼、刪除的操作2)如何設(shè)置Tab的

20、長(zhǎng)度,以及自動(dòng)縮進(jìn)的長(zhǎng)度3)如何使用tag進(jìn)行代碼閱讀4)如何在110行,有確認(rèn)的進(jìn)把所有的RedHat改為RedFlag5)在SourceNavigator中,如何跳到一個(gè)變量的聲明處?如何得知光標(biāo)當(dāng)前的位置在那個(gè)函數(shù)體內(nèi)?三.3、編譯器與調(diào)試器。(各2分)1)如何使用gcc得到宏展開的中間代碼2)如何通過gcc在命令行中傳入宏定義3)在那一級(jí)優(yōu)化的情況下,內(nèi)聯(lián)函數(shù)才真正的內(nèi)聯(lián)到代碼中4)gdb的watch命令如何使用,有何缺點(diǎn)5)gdb中使用什么命令可以顯式調(diào)用的棧幀,如何查看某個(gè)棧幀上的局部變量6)如何使用gdb調(diào)試多進(jìn)程7)如何使能/禁止core dump?三.4、庫(kù)。(各2分)1)如

21、何知道XSetIMValues這個(gè)符號(hào)在那個(gè)X的庫(kù)文件中2)如何讀取C+的符號(hào)名,更具可讀性3)請(qǐng)解釋動(dòng)態(tài)庫(kù)的soname概念4)解釋在鏈接時(shí)rpath選項(xiàng)的含義三.5、Makefile。(10分)如果有一個(gè)簡(jiǎn)單的Test項(xiàng)目目錄如下:# tree TestTest| common.h| main.cpp| test.cpp test.h1)使用wildcard、patsubst函數(shù)編寫一個(gè)C+項(xiàng)目的Makefile文件2)使用automake、autoconfig編寫一個(gè)支持configure選項(xiàng)的configure.in腳本三.6、CVS。(10分)1)如果一個(gè)CVS項(xiàng)目中,甲添加了一個(gè)子

22、目錄模塊,那么乙在update時(shí)是否會(huì)自動(dòng)檢出這個(gè)新添加的子模塊?如果不能,那么你有什么好的解決方案?2)如何在一個(gè)CVS項(xiàng)目中添加一個(gè)二進(jìn)制文件,這個(gè)二進(jìn)制文件可以進(jìn)行增量的版本管理嗎?3)如何檢出標(biāo)記(tag)為milestone-1的版本,如何創(chuàng)建以milestone-1為基礎(chǔ)的分支milestone-1-b1,并如何把分支的修改合并到milestone-1的主分支上三.7、Linux/GNU編程基本知識(shí)1、Linux2.4.x有多少種類型的設(shè)備文件?分別寫出來。(2分)2、glibc動(dòng)態(tài)庫(kù)的搜尋次序是什么?(2分)glibc 2.1.x 與 2.2.x的動(dòng)態(tài)庫(kù)的搜尋次序有什么不同?為什

23、么會(huì)采用現(xiàn)在的方案?(2分)三.3、綜合編程題。要求:1、完成需求,程序運(yùn)行正確。2、工作原理文檔,使用文檔完整。3、代碼規(guī)整優(yōu)美。注釋得當(dāng)。4、運(yùn)行速度足夠快。1、本題(20分)。寫一個(gè)程序,有三個(gè)功能:a)取得CMOS中的當(dāng)前時(shí)間,按照YY:MM:DD:HH:MM:SS格式輸出。b)取得物理內(nèi)存的大小,格式化輸出。c)取得從物理段地址F000:FFF0起,16個(gè)字節(jié)的值,每字節(jié)按照16進(jìn)制格式輸出。2、本題(20分)。對(duì)串口編程,編寫一對(duì)類似ping的程序,作用在串口上,了解serial的聯(lián)通情況。定義協(xié)議要求:定義一個(gè)聯(lián)通和響應(yīng)協(xié)議。至少具有:發(fā)送、回復(fù)、超時(shí)三種狀態(tài)。除超時(shí)狀態(tài)外,所有

24、狀態(tài)的數(shù)據(jù)必須經(jīng)過校驗(yàn)才可使用。ping_serial_client要求:1,發(fā)送數(shù)據(jù)包;2,等待回復(fù)數(shù)據(jù)包,直到超時(shí);3,如果有回復(fù)數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行校驗(yàn);4,計(jì)算校驗(yàn)通過的數(shù)據(jù)包之間的時(shí)間差;5,重復(fù)直到用戶退出;6,統(tǒng)計(jì)丟包率,時(shí)間。界面:bash# ping_serial_client /dev/ttyS0 baud_value?bytes from ttyS0, time=?msC ttyS0 ping statistics ? packets transmitted, ? received, ?% losstime ?ms, min/avg/max = ?/?/? msping_

25、serial_server要求:1,等待對(duì)方的發(fā)送數(shù)據(jù)包;2,對(duì)發(fā)送數(shù)據(jù)包進(jìn)行校驗(yàn);3,校驗(yàn)通過則回復(fù)數(shù)據(jù)包;4,重復(fù)直到用戶退出;界面:bash# ping_serial_server /dev/ttyS0 baud_value3、編寫一對(duì)socket程序,要求類似于network echo procotol。Client每隔1秒把自己的IP地址輪流循環(huán)發(fā)送給一個(gè)Server.Server接到IP后,在屏幕上打印對(duì)方IP;然后把自己的IP發(fā)送回去。Client收到回復(fù)后,在屏幕上打印對(duì)方IP。程序一直運(yùn)行,直到用戶退出。各自分類統(tǒng)計(jì)接收到的各IP的數(shù)據(jù)包的個(gè)數(shù)。注意:Client可以向多個(gè)S

26、erver發(fā)送請(qǐng)求,Server也可以接收多個(gè)Client請(qǐng)求。注意:輸出信息的美觀,和對(duì)錯(cuò)誤的處理。四、C+題目。1。給定下面的代碼:class Graphpublic:Graph() s_gCount+; virtual Graph() s_gCount;virtual int drawOut() = 0;static int getTotalCount() return s_gCount; protected:int m_x;int m_y;static int s_gCount;回答下列問題:(各5分)1)這個(gè)類能否生成實(shí)例,為什么?2)上述代碼中有什么錯(cuò)誤?3)如果有一個(gè)Rectan

27、gle類公共繼承該類,那么s_gCount對(duì)Rectangle的成員屬性是什么?4)對(duì)Graph及其子類的計(jì)數(shù)是否有效,如果無效應(yīng)該采取什么措施?5)請(qǐng)畫出該類的內(nèi)存布局結(jié)構(gòu)示意圖2。給定下面的代碼:class Aint a;class AA : public Aint aa;class X : public virtual Aint x;class Y : public virtual Aint y;class Z : public X, public Y int z;回答下列問題:(各5分)1)請(qǐng)畫出上述5個(gè)類的UML類圖2)請(qǐng)畫出A、AA、X、Z的內(nèi)存布局結(jié)構(gòu)示意圖3。給定下面代碼:#i

28、nclude #include typedef struct _AAAint a;AAA, *PAAA;class CAAApublic:CAAA() m_a.a = 0; CAAA(CAAA& in) printf(”CAAA(CAAA& in)n”); CAAA(AAA in) printf(”CAAA(AAA in)n”); CAAA(int in) printf(”CAAA(int in)n”); private:AAA m_a;public:operator PAAA ()return &m_a;void test0(PAAA pa)printf(”test0n”);void tes

29、t1(CAAA ca)printf(”test1n”);void test2(CAAA ca)printf (”test2n”);void main(void)CAAA a;test0 (a);AAA b;test1 (b);int i=0;test2 (i);請(qǐng)回答下列問題:(各5分)1)找出程序中的錯(cuò)誤2)test0函數(shù)聲明傳入的參數(shù)為PAAA類型,而在main函數(shù)中,實(shí)際傳入的是CAAA類型,這是否是一個(gè)錯(cuò)誤?如果不是,請(qǐng)解釋原因。4?;卮鹣铝袉栴}:1)C+中的struct和class類型有什么區(qū)別?(2分)2)假定一個(gè)class名為Test,具有構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、operator

30、 =,那么Test a;Test b=a;分別執(zhí)行的是哪一個(gè)函數(shù)?(2分)3)C+程序進(jìn)行鏈接時(shí)是否必須鏈接stdc+函數(shù)庫(kù),如果不必須情況下不需要,什么情況下需要?(2分)4)你所熟悉的關(guān)于C+的中英文經(jīng)典書籍都有哪些,它們分別都側(cè)重于什么方面?(5分)五、QT編程。任選2題完成。(各20分)要求:按照綜合編程題目的要求編寫代碼和文檔。1.編寫一個(gè)簡(jiǎn)單的clock控件, 要求從QWidget繼承, 有一個(gè)指針和表盤,指針每12秒轉(zhuǎn)一圈,并且可以用鼠標(biāo)左鍵,起動(dòng)和停止指針的轉(zhuǎn)動(dòng).2.給定一個(gè)designer生成的UI文件, 讀取指定名字控件的幾何信息,計(jì)算出該控件的面積大小.(用Dom和SAX

31、都可)3.設(shè)計(jì)一個(gè)程序, 建立個(gè)人信息庫(kù),包括:姓名,年齡,性別,住址.建立完之后可以查處特定人的信息,用designer設(shè)計(jì)你的界面, 不要求把信息庫(kù)存在硬盤上.4.把第三題變成國(guó)際化程序, 要求兩種語(yǔ)言中文和英文.需要用qt-linquist等工具.5. 用QSocket實(shí)現(xiàn)兩臺(tái)不同機(jī)器間的收發(fā), 收發(fā)要求用戶動(dòng)態(tài)輸入.提示:以上各題需在qt3.0以上實(shí)現(xiàn),推薦用qt-3.1.1,不限止qt-embedded或qt-desktop.六、MiniGUI編程要求:按照綜合編程題目的要求編寫代碼和文檔。1.裁剪MiniGUI字體庫(kù),使它僅支持英文和繁體中文。(10分)2.描述MiniGUI/MP

32、P的消息機(jī)制(20分)3.使用MPP和MySql,編寫一使用在商場(chǎng)POS機(jī)上的應(yīng)用,要求如下:(50分)1)收銀員帳戶管理:每臺(tái)POS機(jī)供若干個(gè)收銀員和一個(gè)系統(tǒng)管理員使用.收銀員憑密碼登錄POS機(jī),密碼可修改.收銀員只能查看自己的銷售數(shù)據(jù),但不能刪除.系統(tǒng)管理員可以增加刪減收銀員帳戶,查詢銷售記錄.2)收款管理:計(jì)算顧客購(gòu)買商品總金額;計(jì)算找零3)顧客會(huì)員管理:根據(jù)顧客ID,判斷會(huì)員等級(jí)及相應(yīng)打折級(jí)別.4)屏幕鎖定功能:特定按健觸發(fā)屏幕鎖定,輸入密碼后解鎖七、Kernel & Driver內(nèi)核基礎(chǔ)試題1. 簡(jiǎn)答題。(各10分)1.1 Spin Lock 相對(duì)于信號(hào)量的特點(diǎn);在UP/MP/SMP

33、這些不同環(huán)境下,Spin Lock的不同實(shí)現(xiàn)方法。1.2 簡(jiǎn)要說明e2compr壓縮文件系統(tǒng)的壓縮策略;經(jīng)其處理后,上層文件系統(tǒng)(EXT2/3等)是否會(huì)受到影響。1.3 比較linux操作系統(tǒng)內(nèi)核態(tài)和用戶態(tài)的搶占性,及兩者之間存在差異的原因。1.4 linux2.2支持的最大進(jìn)程數(shù)是多少,演進(jìn)至2.4后,這一制約是如何克服的。1.5 列舉中斷屏蔽的類型,并簡(jiǎn)單比較。1.6 列舉linux所要處理的定時(shí)/計(jì)數(shù)器(實(shí)際的外圍硬件設(shè)備,不是指軟件定時(shí)器),及其用途。2. 問答題。(各20分)2.1 窮舉在用戶態(tài)空間,內(nèi)核消息的獲取方式、差異、以及差異的原因。2.2 解釋linux進(jìn)程調(diào)度中的epoc

34、h概念,該機(jī)制的目的。2.3 描述一個(gè)硬件中斷信號(hào)發(fā)生,到為其注冊(cè)的中斷服務(wù)例程開始執(zhí)行,之間所經(jīng)過的內(nèi)核處理過程。并進(jìn)一步分析,制約linux中斷響應(yīng)時(shí)間的因素存在于哪些方面。2.4 比較底半機(jī)制(BH)和Tasklet的特點(diǎn),及運(yùn)行方面的差異。2.5 說明引導(dǎo)過程中initrd.img和linuxrc作用,給出制作initrd.img的偽代碼形式的流程。2.6 在VFS層中如何區(qū)分設(shè)備文件和正規(guī)文件?2.7 內(nèi)核有幾種方式訪問硬件設(shè)備?2.8 內(nèi)核如何訪問iomem?請(qǐng)舉例說明。3. 分析題。3.1 系統(tǒng)時(shí)間設(shè)置問題。(10分)同樣采用date命令,目的在于修改系統(tǒng)時(shí)間,在不同的系統(tǒng)上卻有

35、不同的現(xiàn)象:假定初始時(shí)間(T1)為 03月01日16:00 2003年,期望的修改后時(shí)間(T2)為 12月31日00:00 2002年, 在EDK系統(tǒng)中,執(zhí)行命令 #date 123100002002,系統(tǒng)時(shí)間立即會(huì)變?yōu)門2;但系統(tǒng)重新啟動(dòng)之后,系統(tǒng)時(shí)間仍恢復(fù)為T1的時(shí)間區(qū)間: 03月01日16:02 2003年,修改并未保留下來。 在RedHat7.2/8.0中,重復(fù)上述設(shè)置,系統(tǒng)重新啟動(dòng)之后,時(shí)間設(shè)置得到了保留,系統(tǒng)運(yùn)行于T2的時(shí)間區(qū)間:12月31日00:02 2002年。請(qǐng)分析 中所表現(xiàn)出的現(xiàn)象是由于什么原因造成的;3.2 在大家相關(guān)于串口的工作中,可能會(huì)遇到這樣的問題:(20分)串口在

36、發(fā)送數(shù)據(jù)時(shí),不是連續(xù)且迅速地發(fā)送,而是以一個(gè)固定的節(jié)拍(10秒),且每次只發(fā)送等長(zhǎng)度的一段數(shù)據(jù),請(qǐng)列舉可能造成這一問題的所有原因;3.3 Oops分析。(50分)以下是一段經(jīng)過符號(hào)解析過的Oops信息,我們知道造成這個(gè)Oops的直接原因在于對(duì)于內(nèi)核函數(shù)_wake_up的調(diào)用過程之中出現(xiàn)了問題;基于上述判斷,請(qǐng)基于已經(jīng)給出的_wake_up相關(guān)源碼和反匯編碼,大致分析問題出現(xiàn)在哪個(gè)源碼行,并給出分析結(jié)論;ksymoops信息:ksymoops 2.4.4 on i686 2.2.19-rthal3. Options used-v /usr/src/linux-2.2.19/vmlinux (sp

37、ecified)-k /proc/ksyms (specified)-l /proc/modules (specified)-o /lib/modules/2.2.19-rthal3/ (default)-m /usr/src/linux-2.2.19/System.map (specified)current-tss.cr3 = 07d29000, %cr3 = 07d29000*pde = 00000000Oops: 0000CPU: 0EIP: 0010:Using defaults from ksymoops -t elf32-i386 -a i386eax: 00000014 ebx

38、: c0eabf74 ecx: 00000013 edx: 00000021esi: 00000000 edi: 00000020 ebp: c0eabf6c esp: c0eabf60ds: 0018 es: 0018 ss: 0018Process in.identd (pid: 828, process nr: 6, stackpage=c0eab000)Stack: 00000000 c807ca04 00000021 c0eabf74 c807be21 c0eabfb0 c807bf74c807c94000000000 00000000 00000000 c803fb60 c807e

39、000 00000e20 2b124c280000027c0010a000 c807c900 00000000 0000f944 bffff944 c803d2ec 0000000000000000Call Trace: Code: 8b 02 85 45 fc 74 1b 85 ff 74 10 83 7a 44 00 74 0a 85 f6 75EIP; c01110c1 =Trace; c807ca04 Trace; c807be21 Trace; c807bf74 Trace; c807c940 Trace; c803fb60 Trace; c807e000 Trace; c807c9

40、00 Trace; c803d2ec Trace; c803c0a0 Code; c01110c1 00000000 :Code; c01110c1 =0: 8b 02 movl (%edx),%eax =Code; c01110c3 2: 85 45 fc testl %eax,0xfffffffc(%ebp)Code; c01110c6 5: 74 1b je 22 c01110e3Code; c01110c8 7: 85 ff testl %edi,%ediCode; c01110ca 9: 74 10 je 1b c01110dcCode; c01110cc b: 83 7a 44 0

41、0 cmpl $00,044(%edx)Code; c01110d0 f: 74 0a je 1b c01110dcCode; c01110d2 11: 85 f6 testl %esi,%esiCode; c01110d4 13: 75 00 jne 15 c01110d6Unable to handle kernel paging request at virtual address 66fe4603current-tss.cr3 = 00e94000, %cr3 = 00e94000*pde = 00000000Oops: 0000CPU: 0EIP: 0010:EFLAGS: 0001

42、0a83Warning (Oops_read): Code line not seen, dumping what data is availableEIP; c01113e6 =1 warning issued. Results may not be reliable.1. _wake_up的源碼:void _wake_up(struct wait_queue *q, unsigned int mode)struct task_struct *p, *best_exclusive;struct wait_queue *head, *next;unsigned int do_exclusive

43、;if (!q)goto out;/* this is safe to be done before the check because it* means no deference, just pointer operations.*/head = WAIT_QUEUE_HEAD(q);read_lock(&waitqueue_lock);next = *q;if (!next)goto out_unlock;best_exclusive = 0;do_exclusive = mode & TASK_EXCLUSIVE;while (next != head) p = next-task;next = next-next;if (p-state & mode) if (do_exclusive & p-task_exclusive) if (best_exclusive = NULL)best_exclusive = p;else wake_up_process(p);if (best_ex

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論