2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)
{
if(Edit1->text() == "example")
{
QMessageBox::warning(this, "warning", "Pass!", QMessageBox::Yes);
}
else
{
QMessageBox::warning(this, "warning", "Error!", QMessageBox::Yes);
}
}
#include
#include "window.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
CWinDlg dlg;
return dlg.exec();
}
答案要點(diǎn):
1)什么是Qt中的信號(hào)插槽機(jī)制?與回調(diào)函數(shù)機(jī)制有何不同?(3分)
答案要點(diǎn):回調(diào)函數(shù)機(jī)制是事先將一個(gè)回調(diào)函數(shù)指針傳遞給一個(gè)處理過(guò)程,當(dāng)這個(gè)處理過(guò)程得到執(zhí)行時(shí),回調(diào)預(yù)先定義好的回調(diào)函數(shù)以期實(shí)現(xiàn)激活其他處理程序的目的。不同與回調(diào)函數(shù)機(jī)制,Qt提供了信號(hào)和插槽機(jī)制,信號(hào)是一個(gè)特定的標(biāo)識(shí);一個(gè)槽就是一個(gè)函數(shù),與一般函數(shù)不同,槽函數(shù)既能和信號(hào)關(guān)聯(lián),當(dāng)某個(gè)事件出現(xiàn)時(shí),通過(guò)發(fā)送信號(hào),可以將與之相關(guān)聯(lián)的槽函數(shù)激活,執(zhí)行相應(yīng)代碼。
2)應(yīng)用程序中用到了哪些控件,列舉2個(gè)并說(shuō)明該控件的特點(diǎn)?(4分)
答案要點(diǎn):應(yīng)用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用來(lái)顯示或接收用戶的輸入信息。(2)按鈕控件Button,按鈕控件主要響應(yīng)用戶單擊功能。
3)根據(jù)注釋完成程序中相應(yīng)的語(yǔ)句?(4分)
(1)setLayout(Layout1);
(2)connect(Button1, SIGNAL(clicked()), this, SLOT(function()));
9、 在Linux操作系統(tǒng)下,完成下列任務(wù):
1、 編程實(shí)現(xiàn)以下功能
² 主程序hello.c(打印Hello World!)
² 主程序通過(guò)頭文件hello.h調(diào)用message函數(shù)
² 頭文件hello.h(聲明message函數(shù))
² message函數(shù)由message.c定義(打印This is a message!)
1、答:
hello.c:
# include
# include
# include
# include "head.h"
int main (int argc,char *argv[])
{
printf("Hello World!\n");
message();
return 0;
}
head.h:
void message(void);
message.c:
# include
void message (void){
printf("This is a message!\n");
}
10. 用C語(yǔ)言編寫一個(gè)源程序main.c,(1)用以在打開(kāi)當(dāng)前目錄下的文件“test.txt”,如果沒(méi)有創(chuàng)建該文件,并使其具有讀寫屬性,(2)編寫一個(gè)makefile實(shí)現(xiàn)自動(dòng)編譯,生成可執(zhí)行文件main。注:頭文件可忽略。
1、
(1)(5分)
Void main(void)
{
int fid;
fid = open(“./test.txt”,O_RDWR|O_CREAT);
if(fid==-1)
{
Printf(“open or create error \n”);
exit(0);
}
Close(fid);
}
(2)(5分)
objects = main.o
exec = main
all:$(objects)
gcc –o $(exec) $(objects)
main.o:main.c
gcc –c main.c
clean:
rm –r $(exec) $(objects)
11、假如你需要設(shè)計(jì)并編寫一個(gè)音頻采集程序。該程序每50ms采集一次數(shù)據(jù),大小為1480個(gè)字節(jié)。為了進(jìn)一步壓縮處理的需要,你需要建立一個(gè)能夠至少保存5次所采集數(shù)據(jù)的緩存,該緩存的大小會(huì)根據(jù)系統(tǒng)的負(fù)載情況動(dòng)態(tài)調(diào)整。請(qǐng)利用你所學(xué)的C語(yǔ)言內(nèi)存管理及相關(guān)數(shù)據(jù)結(jié)構(gòu)的知識(shí),設(shè)計(jì)一個(gè)緩存結(jié)構(gòu),包括其內(nèi)存分配的形式(如堆、棧等)及其組織結(jié)構(gòu)(如數(shù)組、鏈表等)。
參考答案:
堆適合大塊連續(xù)內(nèi)存的分配,需要自行管理(2分)
棧適合小塊局部使用內(nèi)容的分配,程序自動(dòng)管理(2分)
數(shù)組查找快,但大小固定,而鏈表正好相反。(2分)
題目需要大容量存儲(chǔ),且需要?jiǎng)討B(tài)改變大小,因此可設(shè)計(jì)為采用動(dòng)態(tài)(堆)分配的鏈表型緩存結(jié)構(gòu)。每個(gè)鏈表節(jié)點(diǎn)為1480B。(4分)
12、 假定你在目錄/home/arm下有一個(gè)C程序,他由幾個(gè)單獨(dú)的文件組成,而這幾個(gè)文件又分為包含了其他文件,如下圖所示:
文件 |
包含文件 |
main.c |
stdio.h, table.h |
list.c |
list.h |
symbol.c |
symbol.h |
table.c |
table.h |
table.h |
symbol.h, list.h |
完成下列任務(wù):
1. 編寫makefile文件,最終的目標(biāo)文件為hello(交叉編譯器為arm-linux-gcc)
2. 在目標(biāo)機(jī)上通過(guò)網(wǎng)絡(luò)文件系統(tǒng)掛載/mnt 到宿主機(jī)上的/home/arm目錄
1、答:
hello: main.o list.o symbol.o table.o
gcc -o prog main.o list.o symbol.o table.o
main.o: main.c table.h symbol.h list.h
gcc -c -o main.o main.c
list.o: list.c list.h
gcc -c -o list.o list.c
symbol.o: symbol.c symbol.h
gcc -c -o symbol.o symbol.c
table.o: table.c table.h symbol.h list.h
gcc -c -o table.o table.c
clean:
rm hello *.o
2、Mount –t nfs –o noclock 192.168.0.10:/home/armtest/hello /mnt
13、假如你需要設(shè)計(jì)一個(gè)BootLoader,在具體開(kāi)發(fā)之前,你需要確定哪幾個(gè)主要問(wèn)題?
參考答案:
需要考慮的問(wèn)題:(1)與主機(jī)連接的方式(2)硬件CPU類型,如何初始化(3)內(nèi)存空間大小以及如何使用 (4)內(nèi)核運(yùn)行前需要準(zhǔn)備哪些條件(5)BootLoader需要支持幾種模式。(每點(diǎn)各2分)
14、Linux系統(tǒng)中線程的同步方式有互斥量、信號(hào)量和條件變量等。假設(shè)現(xiàn)在需要設(shè)計(jì)一個(gè)多線程的應(yīng)用程序,試分析一下以上幾種同步方式分別可在什么場(chǎng)合下使用。
參考答案:
Mutex互斥量,用于操作某個(gè)臨界資源時(shí)對(duì)該資源上鎖,以實(shí)現(xiàn)互斥地對(duì)獨(dú)占資源的使用(3分)
Semophore信號(hào)燈,信號(hào)燈內(nèi)有一計(jì)數(shù)器,可以用于對(duì)多個(gè)同類資源的分配。當(dāng)資源用完時(shí),申請(qǐng)資源的線程會(huì)在信號(hào)量上睡眠,有線程釋放資源時(shí),再將該線程喚醒繼續(xù)運(yùn)行。(3分)
Condition條件變量,條件變量用于等待信號(hào)。當(dāng)一個(gè)線程需要等待某個(gè)信號(hào)時(shí),就可到條件變量上等待,當(dāng)信號(hào)具備時(shí),系統(tǒng)會(huì)喚醒該線程繼續(xù)運(yùn)行。(4分)
15、進(jìn)程間通信的方式有多種,假設(shè)需要在Linux系統(tǒng)上設(shè)計(jì)本地運(yùn)行的兩個(gè)進(jìn)程,一個(gè)負(fù)責(zé)采集視頻,另一個(gè)負(fù)責(zé)播放。試為兩者設(shè)計(jì)一種數(shù)據(jù)的通信方式。進(jìn)一步考慮當(dāng)兩個(gè)進(jìn)程處于不同機(jī)器上時(shí),需要采用的通信方式。說(shuō)明你的設(shè)計(jì)理由。
參考答案:
本地:共享內(nèi)存+信號(hào)量, 適合于大量數(shù)據(jù)傳輸。Linux支持系統(tǒng)V和POSIX的共享內(nèi)存和信號(hào)量。(5分)
遠(yuǎn)程:Socket+應(yīng)用協(xié)議。適合于跨網(wǎng)絡(luò)的(大量)數(shù)據(jù)傳輸。Linux支持BSD的socket。應(yīng)用層協(xié)議需要自行設(shè)計(jì)。(5分)
【2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)】相關(guān)文章:
1.2016年嵌入式硬件助理工程師認(rèn)證考試試題題庫(kù)
2.ADOBEphotoshop國(guó)際認(rèn)證題庫(kù)
3.photoshop國(guó)際認(rèn)證題庫(kù)
4.關(guān)于Photoshop認(rèn)證試題題庫(kù)