毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計(jì)劃總結(jié) > 工作總結(jié) > 201*年赴泰志愿者面試經(jīng)過及總結(jié)

201*年赴泰志愿者面試經(jīng)過及總結(jié)

網(wǎng)站:公文素材庫 | 時(shí)間:2019-05-29 16:43:08 | 移動端:201*年赴泰志愿者面試經(jīng)過及總結(jié)

201*年赴泰志愿者面試經(jīng)過及總結(jié)

201*年赴泰志愿者面試經(jīng)過

面試時(shí)間:201*年1月28日下午13:30-16:50(其中有兩個(gè)小時(shí)是在等待中度過的)

面試地點(diǎn):廣西民族大學(xué)國教樓5樓和6樓面試內(nèi)容:英語口試、心理測試、綜合測試面試過程:

(1)報(bào)到,當(dāng)天12:45到指定地點(diǎn)報(bào)到,報(bào)到時(shí)要檢查你的普通話等級證書、英語等級證書和身份證,接著到候考室候考,面試內(nèi)容的順序不定,通常是一撥人先考英語口試,一撥人先進(jìn)行心理測試,剩下的去進(jìn)行綜合考試。我面試的順序是:英語口試心理測試綜合測試

(2)英語口試,考場里有兩個(gè)考官,一個(gè)負(fù)責(zé)提問另一個(gè)負(fù)責(zé)計(jì)時(shí),面試我的考官很和藹,先是叫我來一段一分鐘的自我介紹,接著就是英語的簡答題諸如:你的家鄉(xiāng)是哪里?請介紹一下自己的家鄉(xiāng);你最喜歡的老師是誰?她是個(gè)怎樣的老師;介紹一下你最喜歡的電影等等。最后就是論述題,我被問到的是電腦是怎樣改變?nèi)藗兊纳畹模恳?guī)定回答時(shí)間是2分鐘。姐我只蹦出了三句話;第二道題是:介紹一個(gè)中國歷史名人回答時(shí)間是3分鐘,我眼睛都沒眨,“李白”我脫口而出,結(jié)果只說到了李白是唐代的一名詩人,我喜歡他的詩,因?yàn)榈谝坏勒撌鲱}沒答好就緊張得卡了,可怕的是我還蹦了個(gè)中文詞“豪放的”,真是犯了大忌。不知過了是否有一分鐘考官說:你的考試已經(jīng)結(jié)束,請離場。我就謝過老師離開考場了。

(3)心理測試,很簡單,就是測一下你的性格和心理素質(zhì)。筆試,時(shí)間是40分鐘,姐用了7分鐘搞定,結(jié)果在候考室等了差不多兩個(gè)鐘才有人叫我們?nèi)ミM(jìn)行綜合測試,期間我們在候考室聊了足有1個(gè)半小時(shí)的天。

(4)綜合測試,真是糟心!跟我在網(wǎng)上查看到的步驟不一樣,我以為考官會先讓我們抽一份考題然后給30分鐘準(zhǔn)備的(網(wǎng)上是這么說的)。真實(shí)場景是這樣的:考場里有三個(gè)考官(一個(gè)中年男老師據(jù)說是主考,旁邊坐著兩位女老師據(jù)說一個(gè)是副考一個(gè)是志愿者),我比較衰還給我外加了個(gè)旁聽的(別人都沒有這待遇的,多了一張?jiān)u論的嘴巴,我實(shí)在是虧)考官讓我進(jìn)行自我介紹(30秒),接著主考官叫我把“木偶劇可不是一門小兒科的藝術(shù)”寫在黑板上,又讓我把“偶”字工整的寫在黑板上,然后是偏誤分析“下個(gè)星期我們就要考試了!焙汀跋聜(gè)星期我們快要考試了!蹦木湔_請說明理由,我先是說了第一句是正確的,后來又覺得讀起來似乎都沒錯(cuò)啊,糾結(jié)著說了幾句理由,最后還是強(qiáng)調(diào)第一句是正確的。下面就到了近義詞辨析,我被問到的是“最后”和“終于”有什么不同?磨蹭了半天我總結(jié)說“最后”可以表順序,“終于”沒有這種用法。其實(shí)過后我想想應(yīng)該是客觀和主觀的區(qū)別,“最后”通常是陳述客觀事實(shí)的,而“終于”通常帶有較強(qiáng)的主觀色彩,如“最后我贏了”表達(dá)的是一種客觀事實(shí),而“我終于贏了”則帶有說話者很強(qiáng)的感情色彩。主考讓我就“我正在打電話呢?”這句話中的“正在...呢?”這個(gè)語法點(diǎn)組織課堂,先給我一分鐘設(shè)計(jì)課堂,我一緊張本來記得好好的說課步驟全亂了,從導(dǎo)入操練,直接跳到布置作業(yè),那真是個(gè)實(shí)打?qū)嵉摹按筌S進(jìn)”,雖然此時(shí)我心里已經(jīng)慌了,但是我還是站在講臺巋然不動等待考官的下一個(gè)問題:在你上課的時(shí)候,有個(gè)學(xué)生扮蛇把旁邊的同學(xué)嚇哭了這時(shí)你怎么辦?我立馬蹦出一句話:“我就用剛剛講解的語法‘正在...呢?"責(zé)問他,安慰被嚇哭的小孩”,考官又引導(dǎo)我說:“那你是先喝止還是先安慰呢?”我說:“先喝止再安慰”。糟心的時(shí)刻要到了,其中一個(gè)女考官應(yīng)該是副考開始發(fā)問了,她的第一個(gè)問題是:當(dāng)你在國外時(shí)有人問你中國的養(yǎng)老問題,你會怎么回答?我就講了中國的養(yǎng)老金問題,自認(rèn)為前面那截答得不錯(cuò),當(dāng)考官問我:還有要補(bǔ)充的嗎?我又不懂得見好就收,接著又說了一些亂七八糟的東西,哎!好笨啊。!第二個(gè)問題是:當(dāng)你的同事在辦公室議論中國的負(fù)面消息,你怎么辦?自我感覺答得不錯(cuò),第三道題是:你怎么組織一次關(guān)于中國文化的演講,我答得一塌糊涂。最后一道題是你的學(xué)校要組織文藝晚會,你會組織你所教的學(xué)生表演什么節(jié)目,我回答完后真想找個(gè)地洞鉆進(jìn)去。這時(shí)另外一個(gè)貌似志愿者的女考官問:“你現(xiàn)在填報(bào)的是泰國志愿者,如果讓你去柬埔寨,那里的條件很艱苦你愿意去嗎?”我停頓了2秒說:“我不介意,我依然會做好一名志愿者應(yīng)盡的義務(wù)。”她又接著問:“在那里你感到很寂寞,你會怎么辦?”我說:“我有很多愛好,我可以練字,聽音樂,凡是能自娛自樂的方式我都可以用!焙髞砦也胖榔渌硕紱]有被問到這樣的問題,我在想不會真把我派到柬埔寨去吧?Oh,mygod!不要啊......最后的最后是才藝表演我展示了剪紙和十字繡,還說我會煮中國菜,當(dāng)然才藝這部分我肯定是遜掉的了。經(jīng)驗(yàn)總結(jié):機(jī)會是留給有準(zhǔn)備的人的!面試前一定要全面想到考官會問到的問題,提前想好答案,做到心中有數(shù)就不會慌了。如果是到另一個(gè)城市的學(xué)校面試,住宿一定要選離考場最近的地方,如沒有同學(xué)就讀該校就住旅館并且和同去面試的同學(xué)保持聯(lián)系?傊嬖嚨臅r(shí)候一定要做到面不改色,即使內(nèi)心已經(jīng)洶涌澎湃也要泰然自若,沉著應(yīng)對。雖然我面試通過的幾率很小,但是我算是又有了一次寶貴的面試經(jīng)歷,同時(shí)也希望我的這次經(jīng)歷能給學(xué)弟學(xué)妹們帶來一點(diǎn)幫助。

擴(kuò)展閱讀:201*年11月c、c++面試總結(jié)必考題

本人嘔心瀝血制作,經(jīng)歷6次面試所遇的題目,基本上在這個(gè)上面,主要面試的是c/c++軟件工程師,希望對大家有所幫助。下面一C語言部分

1、問:在嵌入式開發(fā)中,為什么能通過C語言去直接操作硬件?

答:因?yàn)橛兄羔槪羔樖荂語言的靈魂,他可以直接訪內(nèi)存。

2、問:鏈表的作用?

答:用于內(nèi)存管理,鏈表節(jié)點(diǎn)中的指針域可以將不連續(xù)的內(nèi)存彼此關(guān)聯(lián)起來,從而實(shí)現(xiàn)內(nèi)存的動態(tài)管理。

3、問:什么變量不能用指針指向?

答:寄存器變量(register修飾),因?yàn)檫@個(gè)變量會優(yōu)先選擇存放到CPU寄存器中,而指針只能指向內(nèi)存的任務(wù)區(qū)域,但不能指向寄存器。

4、問:有符號字符型和無符號字符型變量的最大值和最小值分別是多少(十六進(jìn)制多少),為什么?

答:有符號(-128127,-0x800x7F);無符號(0255,00xFF)

5、局部變量能否和全局變量重名?

答:能,局部會屏蔽全局。

6、全局變量和局部變量的區(qū)別。

全局變量,儲存在靜態(tài)區(qū).進(jìn)入main函數(shù)之前就被創(chuàng)建.生命周期為整個(gè)源程序。局部變量,在棧中分配.在函數(shù)被調(diào)用時(shí)才被創(chuàng)建.生命周期為函數(shù)內(nèi).

7、頭文件中的ifndef/define/endif干什么用?防止重復(fù)包含

8、#include和#include“filename.h”有什么區(qū)別?

#include:告訴預(yù)處理器在標(biāo)準(zhǔn)系統(tǒng)目錄中尋找文件。

#include“filename.h”:""告訴預(yù)處理器先在當(dāng)前目錄中尋找文件,找不到則再在標(biāo)準(zhǔn)目錄下尋找文件。

9、const有什么用途?(請至少說明兩種)(1)定義const常量

(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。

被const修飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動,能提高程序的健壯性。//指向常整形數(shù)的指針變量

constchar*p1=name;//指針?biāo)赶虻膬?nèi)容不能變,指針指向的地址可變。constchar*p;//和charconst*p//指向整形數(shù)的常指針

char*constp2=name;//地址不可變,內(nèi)容可變。//指向常量的常指針

constchar*constname="chen";//地址不變,內(nèi)容不變。10.數(shù)組與鏈表的區(qū)別。

數(shù)組中的數(shù)據(jù)在內(nèi)存是順序存儲的,插入需要移動很多值。由于鏈表是隨機(jī)存儲的,鏈表訪問需要遍歷。

11、內(nèi)存的分配:

1、棧區(qū)(stack)—由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。

2、堆區(qū)(heap)—一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。

3、全局區(qū)(靜態(tài)區(qū))(static)全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。-程序結(jié)束后有系統(tǒng)釋放

4、文字常量區(qū)—常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼。

12、sizeof和strlen()的區(qū)別參考答案:

①sizeof是運(yùn)算符,計(jì)算數(shù)據(jù)所占的內(nèi)存空間;strlen()是一個(gè)函數(shù),計(jì)算字符數(shù)組的字符數(shù);

②sizeof可以用類型作參數(shù);strlen()只能用char*作參數(shù),必須是以’/0’結(jié)束③數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了;

④sizeof操作符的結(jié)果類型是size_t,它在頭文件中typedef為unsignedint類型。該類型保證能容納實(shí)現(xiàn)建立的最大對象的字節(jié)大小

13、在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C”?

答:c++可以重載,c語言不可以被重載,c++函數(shù)提供了c語言連接交換指定函數(shù)extern“c”來解決名字問題。

14.頭文件的作用是什么?答:1.通過頭文件調(diào)用庫2、實(shí)現(xiàn)安全檢查

15、頭文件中的ifndef/define/endif的作用?答:防止頭文件被重復(fù)引用。

16、如果一個(gè)HEADER頭文件要被多個(gè)源文件同時(shí)#include,如何避免對HEADER中變量的重復(fù)定義?答:在某個(gè)源文件中對變量定義,在HEADER中僅對變量進(jìn)行聲明,即前面加extern;

16、分別寫出BOOL,int,float,指針類型的變量a與“零”的比較語句。答:BOOL:if(!a)orif(a)int:if(a==0)or(a!=0)

float:constEPSSION0.000001if(X>=-EPSSION)&&(X

20.解釋堆和棧的區(qū)別。

答:堆(heap)一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。

棧(stack)由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。由系統(tǒng)自動分配,速度較快。但程序員是無法控制的。

注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。速度比較慢,而且容易產(chǎn)生內(nèi)存碎片,不過用起來最方便。21、一個(gè)指針可以是volatile嗎?

可以,因?yàn)橹羔樅推胀ㄗ兞恳粯樱袝r(shí)也有變化程序的不可控性。常見例子:子中斷服務(wù)子程序修改一個(gè)指向buff的指針時(shí),必須用volatile

22、內(nèi)存的分配方式的分配方式有幾種?答:

1)從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量。

2)在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲單元自動被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。

3)從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或new申請任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用free或delete釋放內(nèi)存。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。

23、.函數(shù)模板與類模板有什么區(qū)別?

答:函數(shù)模板的實(shí)例化是由編譯程序在處理函數(shù)調(diào)用時(shí)自動完成的,而類模板的實(shí)例化必須由程序員在程序中顯式地指定。

24.嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?答:while(1){};loop:gotoloop;

25、關(guān)鍵字static的作用是什么?((1)用于全局變量;(2)用于局部變量;(3)用于函數(shù))

在C語言中,關(guān)鍵字static有三個(gè)明顯的作用:static全局變量只初使化一次,防止在其他文件單元中被引用;static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;

static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝;

26、什么是預(yù)編譯,何時(shí)需要預(yù)編譯:1、總是使用不經(jīng)常改動的大型代碼體。

2、程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。

27、結(jié)構(gòu)與聯(lián)合有和區(qū)別?

1.結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類型成員組成,但在任何同一時(shí)刻,聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間),而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。

2.對于聯(lián)合的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對于結(jié)構(gòu)的不同成員賦值是互不影響的。

28、簡述什么是值傳遞,什么是地址傳遞,兩者區(qū)別是什么?參考答案:

值傳遞主調(diào)函數(shù)傳遞給被調(diào)函數(shù)的是值的拷貝,不是原值;地址傳遞主調(diào)函數(shù)傳遞給被調(diào)函數(shù)的是值的地址。

區(qū)別是值傳遞被調(diào)函數(shù)中的操作不改變主調(diào)函數(shù)的值,而地址傳遞則不同。30、比較union和struct的不同;

在分配空間時(shí),union中的各個(gè)域的空間是重疊的,struct中的各個(gè)域的空間是不重疊的。

31、操作系統(tǒng)的內(nèi)存分配一般有哪幾種方式,各有什么優(yōu)缺點(diǎn)?定長和變長。

變長:內(nèi)存時(shí)比較靈活,但是易產(chǎn)生內(nèi)存碎片。

定長:靈活性差,但分配效率較高,不會產(chǎn)生內(nèi)存碎片。

32、操作系統(tǒng)的致命錯(cuò)誤有哪些?

致命錯(cuò)誤主要包括啟動配置錯(cuò)、內(nèi)部資源耗盡和各種其它類型的不可恢復(fù)性錯(cuò)誤。32、關(guān)鍵字volatile在編譯時(shí)有什么含義?并給出三個(gè)不同使用場景的例子(可以偽代碼或者文字描述)。

用volatile關(guān)鍵字定義變量,相當(dāng)于告訴編譯器,這個(gè)變量的值會隨時(shí)發(fā)生變化,每次使用時(shí)都需要去內(nèi)存里重新讀取它的值,并不要隨意針對它作優(yōu)化。建議使用volatile變量的場所:(1)并行設(shè)備的硬件寄存器

(2)一個(gè)中斷服務(wù)子程序中會訪問到的非自動變量(全局變量)(3)多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

33)中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區(qū)別?

異常:處理器遇到編程失誤,特殊情況時(shí),必須內(nèi)核處理(cpu時(shí)鐘同步執(zhí)行)

中斷:外部硬件產(chǎn)生一個(gè)電信號,打斷cpu的執(zhí)行。

34.malloc與calloc

malloc:直接申請空間,并不改變內(nèi)存的內(nèi)容

calloc:把內(nèi)存區(qū)域的空間寫0;

realloc:重新申請空間。

35、操作系統(tǒng)的致命錯(cuò)誤有哪些?

致命錯(cuò)誤主要包括啟動配置錯(cuò)、內(nèi)部資源耗盡和各種其它類型的不可恢復(fù)性錯(cuò)誤。

36、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態(tài)區(qū))中,動態(tài)申請數(shù)據(jù)存在于(堆)中。

二系統(tǒng)編程

1、問:什么是程序?什么是進(jìn)程?本質(zhì)區(qū)別?

答:程序是一些指令的有序集合進(jìn)程是程序執(zhí)行的過程。

本質(zhì)區(qū)別:程序是靜態(tài)的,進(jìn)程是動態(tài)的。

2、問:無名管道為什么只能在具有公共祖先的進(jìn)程間通信?管道的特點(diǎn)?

答:管道無法打開,只能夠通過繼承的方法獲取文件描述符。管道的特點(diǎn):

1.半雙工特性,一個(gè)時(shí)間只能一個(gè)方向流通。2.只在父子之間使用。

3.管道對于管道兩端而言,只是一個(gè)文件,但是存放在內(nèi)存中。4.數(shù)據(jù)從管道的一端寫入,從另一端讀出。5.沒有名字。

6.管道的緩沖區(qū)是有限的。

7.管道所傳送的數(shù)據(jù)是無格式的,這要求管道的讀出方與寫入方必須事先約定好數(shù)據(jù)的格式,如多少字節(jié)算一個(gè)消息等。

8.寫入管道的數(shù)據(jù)讀完之后就從管道中消失。

3、問:管道與消息隊(duì)列的區(qū)別?

答:管道和無名管道收發(fā)數(shù)據(jù)都是先進(jìn)先出的,消息隊(duì)列可以實(shí)現(xiàn)按消息的類型隨機(jī)讀取。

5、問:有名管道相比無名管道最大的優(yōu)點(diǎn)是什么?

答:實(shí)現(xiàn)不同信號之間的相互通信。

6、問:什么是信號量,有什么特點(diǎn),簡述pv操作?

答:信號量就是個(gè)計(jì)數(shù)器,計(jì)數(shù)器的值只能是非負(fù)的。

操作計(jì)數(shù)器的方法是pv操作,pv操作具有原子性(不可中斷),要執(zhí)行就一定要執(zhí)行成功,要么就不執(zhí)行。

P操作使信號量的值減一。

當(dāng)進(jìn)行帶阻塞的p操作的時(shí)候,如果信號量的值已經(jīng)是0了,p操作就會阻塞。V操作使得信號量的值加一。

7.死鎖的四個(gè)條件及處理方法。

(進(jìn)程死鎖的原因:資源競爭及進(jìn)程推進(jìn)順序非法)(1)互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。

(2)請求與保持條件:一個(gè)進(jìn)程因請求資源而阻塞時(shí),對已獲得的資源保持不放。(3)不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。(4)循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。解決死鎖的方法分為死鎖的預(yù)防,避免,檢測與恢復(fù)四種

8、問:什么是進(jìn)程?什么是線程,它們之間的關(guān)系?實(shí)現(xiàn)多任務(wù)的優(yōu)缺點(diǎn)?答:進(jìn)程是系統(tǒng)資源分配的基本單位,擁有獨(dú)立的資源分配。線程是cpu調(diào)度和分配的基本單位。關(guān)系:

1:一個(gè)進(jìn)程中可以有多個(gè)線程,線程必須依賴于進(jìn)程存在,如果進(jìn)程結(jié)束了,線程也就不存在了。

2:每個(gè)進(jìn)程都至少有一個(gè)線程,稱為主線程。

多任務(wù)優(yōu)缺點(diǎn):

進(jìn)程:

優(yōu)點(diǎn):父子進(jìn)程資源獨(dú)享。

缺點(diǎn):資源開銷比較大,子進(jìn)程完全復(fù)制父進(jìn)程的地址空間,父子進(jìn)程共享數(shù)據(jù)不方便。線程:

優(yōu)點(diǎn):資源開銷比較小,共享數(shù)據(jù)比較方

缺點(diǎn):資源共享,多個(gè)線程共享資源比較麻煩。

11、.什么是“zombie”進(jìn)程?在我們的程序中如何防止“zombie”進(jìn)程?(試說出其中的三種方法)

僵尸進(jìn)程:一個(gè)已經(jīng)終止,但其父進(jìn)程沒有對其進(jìn)行處理的子進(jìn)程稱為僵尸進(jìn)程。防止僵尸進(jìn)程:

1)用waitpid(wait)等待子進(jìn)程返回.2)兩次fork也能夠?qū)崿F(xiàn)12、系統(tǒng)調(diào)用與庫函數(shù)的關(guān)系:

并不是所有的系統(tǒng)調(diào)用都被封裝成庫函數(shù),系統(tǒng)提供的許多功能都必須通過系統(tǒng)調(diào)用才能完成。

10.進(jìn)程同步機(jī)制,并比較優(yōu)缺點(diǎn)。

進(jìn)程同步是進(jìn)程之間直接的相互作用

進(jìn)程互斥是進(jìn)程之間發(fā)生的一種間接性作用,一般是程序不希望的。

11、標(biāo)準(zhǔn)I/O提供三種類型的緩沖:

全緩沖、行緩沖、不帶緩沖

12、linux內(nèi)核有幾種鎖,它們有什么不同?Linux的內(nèi)核鎖主要是自旋鎖和信號量。

自旋鎖最多只能被一個(gè)可執(zhí)行線程持有,如果一個(gè)執(zhí)行線程試圖請求一個(gè)已被爭用(已經(jīng)被持有)的自旋鎖,那么這個(gè)線程就會一直進(jìn)行忙循環(huán)旋轉(zhuǎn)等待鎖重新可用。要是鎖未被爭用,請求它的執(zhí)行線程便能立刻得到它并且繼續(xù)進(jìn)行。自旋鎖可以在任何時(shí)刻防止多于一個(gè)的執(zhí)行線程同時(shí)進(jìn)入臨界區(qū)。

Linux中的信號量是一種睡眠鎖。如果有一個(gè)任務(wù)試圖獲得一個(gè)已被持有的信號量時(shí),信號量會將其推入等待隊(duì)列,然后讓其睡眠。這時(shí)處理器獲得自由去執(zhí)行其它代碼。當(dāng)持有信號量的進(jìn)程將信號量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號量。

信號量的睡眠特性,使得信號量適用于鎖會被長時(shí)間持有的情況;只能在進(jìn)程上下文中使用,因?yàn)橹袛嗌舷挛闹惺遣荒鼙徽{(diào)度的;另外當(dāng)代碼持有信號量時(shí),不可以再持有自旋鎖。

13、請說明C++中動態(tài)鏈接庫和靜態(tài)鏈接庫的區(qū)別?答:

a)動態(tài)鏈接是指在生成可執(zhí)行文件時(shí)不將所有程序用到的函數(shù)鏈接到一個(gè)文件,當(dāng)程序運(yùn)行時(shí)直接從操作系統(tǒng)中找,動態(tài)鏈接是只建立一個(gè)引用的接口,而真正的代碼和數(shù)據(jù)存放在另外的可執(zhí)行模塊中,在運(yùn)行時(shí)再裝入;

b)靜態(tài)鏈接就是把所有用到的函數(shù)全部鏈接到exe文件中,所有的代碼和數(shù)據(jù)都復(fù)制到本模塊中,運(yùn)行時(shí)就不再需要庫了。

14、請說明調(diào)用動態(tài)鏈接庫DLL的2種方式?答:

a)載入時(shí)動態(tài)鏈接(load-timedynamiclinking),模塊非常明確調(diào)用某個(gè)導(dǎo)出函數(shù),使得他們就像本地函數(shù)一樣。這需要鏈接時(shí)鏈接那些函數(shù)所在DLL的導(dǎo)入庫,導(dǎo)入庫向系統(tǒng)提供了載入DLL時(shí)所需的信息及DLL函數(shù)定位。

b)運(yùn)行時(shí)動態(tài)鏈接(run-timedynamiclinking),運(yùn)行時(shí)可以通過LoadLibrary或LoadLibraryEx函數(shù)載入DLL。DLL載入后,模塊可以通過調(diào)用GetProcAddress獲取DLL函數(shù)的出口地址,然后就可以通過返回的函數(shù)指針調(diào)用DLL函數(shù)了。如此即可避免導(dǎo)入庫文件了。

15、請說明在程序中使用線程的好處是什么?答:a)耗時(shí)的操作使用線程,提高應(yīng)用程序響應(yīng)

b)并行操作時(shí)使用線程,如C/S架構(gòu)的服務(wù)器端并發(fā)線程響應(yīng)用戶的請求。c)多CPU系統(tǒng)中,使用線程提高CPU利用率

d)改善程序結(jié)構(gòu)。一個(gè)既長又復(fù)雜的進(jìn)程可以考慮分為多個(gè)線程,成為幾個(gè)獨(dú)立或半獨(dú)立的運(yùn)行部分,這樣的程序會利于理解和修改。

16、用戶進(jìn)程間通信主要哪幾種方式?

(1)管道(Pipe):管道可用于具有親緣關(guān)系進(jìn)程間的通信,允許一個(gè)進(jìn)程和另一個(gè)與它有共同祖先的進(jìn)程之間進(jìn)行通信。

(2)命名管道(namedpipe):命名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關(guān)系進(jìn)程間的通信。命名管道在文件系統(tǒng)中有對應(yīng)的文件名。命名管道通過命令mkfifo或系統(tǒng)調(diào)用mkfifo來創(chuàng)建。

(3)信號(Signal):pv操作控制信號,實(shí)現(xiàn)信號的同步互斥。

(4)消息(Message)隊(duì)列:消息隊(duì)列是消息的鏈接表,包括Posix消息隊(duì)列systemV消息隊(duì)列。有足夠權(quán)限的進(jìn)程可以向隊(duì)列中添加消息,被賦予讀權(quán)限的進(jìn)程則可以讀走隊(duì)列中的消息。消息隊(duì)列克服了信號承載信息量少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺

(5)共享內(nèi)存:使得多個(gè)進(jìn)程可以訪問同一塊內(nèi)存空間,是最快的可用IPC形式。是針對其他通信機(jī)制運(yùn)行效率較低而設(shè)計(jì)的。往往與其它通信機(jī)制,如信號量結(jié)合使用,來達(dá)到進(jìn)程間的同步及互斥。(6)信號量(semaphore):通過信號處理器控制同步與互斥。

(7)套接字(Socket):更為一般的進(jìn)程間通信機(jī)制,可用于不同機(jī)器之間的進(jìn)程間通信。

三、網(wǎng)絡(luò)編程

1、TCP/IP(傳輸控制協(xié)議)中的TCP和IP(網(wǎng)際協(xié)議)分別承擔(dān)什么責(zé)任?TCP負(fù)責(zé)你的應(yīng)用軟件(例如你的瀏覽器)和你的網(wǎng)絡(luò)軟件之間的通訊。IP負(fù)責(zé)與其他計(jì)算機(jī)的通訊(發(fā)送主機(jī)的ip地址+接收主機(jī)的ip地址)

TCP負(fù)責(zé)在數(shù)據(jù)被發(fā)送以前把它分裝到IP包,然后在數(shù)據(jù)接受以后再組裝起來。IP負(fù)責(zé)把數(shù)據(jù)包發(fā)送到正確的目標(biāo)計(jì)算機(jī)。

例題1:在tcp/ip模型中進(jìn)程到進(jìn)程之間通信屬于(傳輸)層,主機(jī)到主機(jī)屬于(網(wǎng)絡(luò))層,設(shè)備到設(shè)備屬于(數(shù)據(jù)鏈路)層,程序到程序?qū)儆冢☉?yīng)用)

2.四層模型?七層模型?TCP/IP協(xié)議包括?

這7層是:應(yīng)用層,表示層、會話層,傳出層(udp/tcp),網(wǎng)絡(luò)層(IP),數(shù)據(jù)鏈路層(交換機(jī)),物理層(集成線(hub))

這4層分別為:應(yīng)用層:傳輸層:網(wǎng)絡(luò)層:鏈路層。

TCP/IP協(xié)議族包括(IP)、(ARP)、(ICMP)、(UDP)、(TCP)、(RIP)、Telnet、(SMTP)、DNS等協(xié)議。

3、請簡述DNS、活動目錄、域的概念。參考答案:

DNS:域名服務(wù),作用是將網(wǎng)絡(luò)域名解析成IP地址;

域:網(wǎng)絡(luò)系統(tǒng)的一個(gè)安全邊界,在一個(gè)域當(dāng)中,計(jì)算機(jī)和用戶共享一些列的安全信息。

4、問:select()函數(shù)的作用?

答:用于一個(gè)進(jìn)程同時(shí)監(jiān)聽多個(gè)文件描述符,還可以設(shè)置監(jiān)聽超時(shí)時(shí)間。5、問:tcp、udp、ip、http、telnet協(xié)議分別位于TCP/IP協(xié)議哪一層?

答:tcp、udp位于傳輸層//說出TCP/IP分別對應(yīng)OSI七層中的哪一層傳輸層,網(wǎng)絡(luò)層

Ip協(xié)議位于網(wǎng)絡(luò)層。

http及telnet位于應(yīng)用層。

6、問:路由器工作在TCP/IP協(xié)議中的那一層?答:網(wǎng)絡(luò)層。

7.端口的作用?

端口是一個(gè)軟件結(jié)構(gòu),一個(gè)端口對應(yīng)一個(gè)16比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口。

端口標(biāo)識通信的進(jìn)程:作用:1、區(qū)分系統(tǒng)里的多進(jìn)程

2、被客戶程序或服務(wù)進(jìn)程用來發(fā)送和接收信息

端口號分類:知名端口號(IANA):21號非配給ftp80號端口分配給http動態(tài)端口號

8、網(wǎng)絡(luò)通信過程?

1、面向無連接:需攜帶地址(郵政系統(tǒng)服務(wù)的抽象)。

2、面向連接:無需地址,本質(zhì)上連接是一個(gè)管道。(電話系統(tǒng)服務(wù)模式的抽象)。

8.物理地址轉(zhuǎn)換成IP地址的協(xié)議?反之?

RARP(物理轉(zhuǎn)IP)ARP(IP轉(zhuǎn)物理)

9.MAC層通信協(xié)議有哪些?

ISO2110,IEEE802,IEEE802.2

網(wǎng)卡MAC是由6組什么組成的

4有16進(jìn)制數(shù)據(jù)組成,前三組表示廠商,有IEEE來分配,并可以在細(xì)分,后三組表示該制造商所制造的某個(gè)網(wǎng)絡(luò)產(chǎn)品(如網(wǎng)卡)的系列號。10.對WLAN的了解。

WLAN是指應(yīng)用無線通信技術(shù)將計(jì)算機(jī)設(shè)備互聯(lián)起來,構(gòu)成可以互相通信和實(shí)現(xiàn)資源共享的網(wǎng)絡(luò)體系。無線局域網(wǎng)本質(zhì)的特點(diǎn)是不再使用通信電纜將計(jì)算機(jī)與網(wǎng)絡(luò)連接起來,而是通過無線的方式連接,從而使網(wǎng)絡(luò)的構(gòu)建和終端的移動更加靈活。

12、問:什么是tcp協(xié)議與udp協(xié)議(提供進(jìn)程間通信的能力)?他們的區(qū)別及優(yōu)缺點(diǎn)?

答:tcp:面向連接,可靠的傳輸層協(xié)議

面向連接:建立連接-->使用連接-->釋放連接(虛電路)可靠性:對包進(jìn)行排序并檢錯(cuò),而損壞的包可以重傳。tcp數(shù)據(jù)包包含序號和確認(rèn)序號

窗口式流量控制、慢啟動和擁塞避免(服務(wù)對象:telnet,ftp,Rlogin,STMP等)udp:無連接,不可靠的傳輸層通信協(xié)議面向無連接:發(fā)送數(shù)據(jù)之前不需要建立連接。

不可靠:

不對數(shù)據(jù)包的順序進(jìn)行檢查沒有錯(cuò)誤檢測和重傳機(jī)制

服務(wù)對象:

主要用于那些面向查詢應(yīng)答的服務(wù)(NFS(網(wǎng)絡(luò)文件系統(tǒng))/NTP(網(wǎng)絡(luò)時(shí)間協(xié)議)/DNS(域名解析協(xié)議))

13、問:ip地址192.168.220.22屬于什么IP?(IP地址:主機(jī)ID和子網(wǎng)ID,主機(jī)ID全為0的ip地址表示網(wǎng)段地址,主機(jī)ID全為1的地址廣播地址)

答:私有IP地址。

14、問:什么是大端什么是小端字節(jié)序?網(wǎng)絡(luò)字節(jié)序是大端的還是小端的?答:小端:低地址存放低字節(jié),高地址存放高字節(jié);大端:相反;網(wǎng)絡(luò)字節(jié)序是:大端。

15、網(wǎng)絡(luò)中,如果客戶端突然掉線或者重啟,服務(wù)器端怎么樣才能立刻知道?若客戶端掉線或者重新啟動,服務(wù)器端會收到復(fù)位信號。

16、騰訊筆試題:tcp三次握手的過程,accept發(fā)生在三次握手哪個(gè)階段?accept發(fā)生在三次握手之后。

第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器。

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)ASK包(ask=k)。

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)。三次握手完成后,客戶端和服務(wù)器就建立了tcp連接。這時(shí)可以調(diào)用accept函數(shù)獲得此連接。

tcp面向連接的四次揮手過程:

(1)第一次揮手:Client發(fā)送一個(gè)FIN,用來關(guān)閉Client到Server的數(shù)據(jù)傳送,Client進(jìn)入FIN_WAIT_1狀態(tài)。

(2)第二次揮手:Server收到FIN后,發(fā)送一個(gè)ACK給Client,確認(rèn)序號為收到序號+1(與SYN相同,一個(gè)FIN占用一個(gè)序號),Server進(jìn)入CLOSE_WAIT狀態(tài)。

(3)第三次揮手:Server發(fā)送一個(gè)FIN,用來關(guān)閉Server到Client的數(shù)據(jù)傳送,Server進(jìn)入LAST_ACK狀態(tài)。

(4)第四次揮手:Client收到FIN后,Client進(jìn)入TIME_WAIT狀態(tài),接著發(fā)送一個(gè)ACK給Server,確認(rèn)序號為收到序號+1,Server進(jìn)入CLOSED狀態(tài),完成四次揮手。

(2)為什么建立連接是三次握手,而關(guān)閉連接卻是四次揮手呢?

這是因?yàn)榉⻊?wù)端在LISTEN狀態(tài)下,收到建立連接請求的SYN報(bào)文后,把ACK和SYN放在一個(gè)報(bào)文里發(fā)送給客戶端。而關(guān)閉連接時(shí),當(dāng)收到對方的FIN報(bào)文時(shí),僅僅表示對方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對方了,所以己方可以立即close,也可以發(fā)送一些數(shù)據(jù)給對方后,再發(fā)送FIN報(bào)文給對方來表示同意現(xiàn)在關(guān)閉連接,因此,己方ACK和FIN一般都會分開發(fā)送。

17、騰訊筆試題:用UDP協(xié)議通訊時(shí)怎樣得知目標(biāo)機(jī)是否獲得了數(shù)據(jù)包可以在每個(gè)數(shù)據(jù)包中插入一個(gè)唯一的ID,比如timestamp或者遞增的int。發(fā)送方在發(fā)送數(shù)據(jù)時(shí)將此ID和發(fā)送時(shí)間記錄在本地。接收方在收到數(shù)據(jù)后將ID再發(fā)給發(fā)送方作為回應(yīng)。了解:

路由(網(wǎng)絡(luò)層):可以分割子網(wǎng),廣播域,提供防火墻功能。交換機(jī)(數(shù)據(jù)鏈路層):依據(jù)mac地址進(jìn)行尋址。

18、在子網(wǎng)210.27.48.21/30種有多少個(gè)可用地址?分別是什么?

可用地址是兩個(gè),一個(gè)網(wǎng)段地址,一個(gè)廣播地址。

19、從SOCKET編程到底層以太網(wǎng)物理包要經(jīng)過哪幾次封裝?

SOCKET包、IP包、以太網(wǎng)包

20.列出3個(gè)常用網(wǎng)絡(luò)協(xié)議使用的端口。

答:HTTP協(xié)議用80端口,F(xiàn)TP協(xié)議用21端口,POP3協(xié)議用110端口

四C++與QT(類:具有共性的實(shí)體的抽象。)

3.Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程。答:

Windows程序的入口是WinMain函數(shù)

消息機(jī)制:系統(tǒng)將會維護(hù)一個(gè)或多個(gè)消息隊(duì)列,所有產(chǎn)生的消息都會被放入或是插入隊(duì)列中。系統(tǒng)會在隊(duì)列中取出每一條消息,根據(jù)消息的接收句柄而將該消息發(fā)送給擁有該窗口的程序的消息循環(huán)。每一個(gè)運(yùn)行的程序都有自己的消息循環(huán),在循環(huán)中得到屬于自己的消息并根據(jù)接收窗口的句柄調(diào)用相應(yīng)的窗口過程。而在沒有消息時(shí)消息循環(huán)就將控制權(quán)交給系統(tǒng)。1.面向?qū)ο蟮娜齻(gè)基本特征,并簡單敘述之?答:1)封裝:將客觀事物抽象成類,每個(gè)類對自身的數(shù)據(jù)和方法實(shí)行protection(private,protected,public)

2)繼承:實(shí)現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn))。

3)多態(tài):允許將子類類型的指針賦值給父類類型的指針。

(1).多態(tài)的作用?

答:主要是兩個(gè):1)隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼模塊化。2)類的繼承與派生的時(shí)候,接口重用。

2.重載(overload)和重寫(overried,有的書也叫做“覆蓋”)的區(qū)別?答:從定義上來說:

重載:是指允許存在多個(gè)同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。

重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。從實(shí)現(xiàn)原理上來說:

重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,對同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)。

重寫:當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針,動態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無法確定的(調(diào)用的子類的虛函數(shù)的地址無法給出)。3、使用new與malloc分配內(nèi)存有什么區(qū)別?1、new是c++中的操作符,malloc是c中的一個(gè)函數(shù)

2、new不止是分配內(nèi)存,而且會調(diào)用類的構(gòu)造函數(shù),同理delete會調(diào)用類的析構(gòu)函數(shù),而malloc則只分配內(nèi)存,不會進(jìn)行初始化類成員的工作,同樣free也不會調(diào)用析構(gòu)函數(shù)3、內(nèi)存泄漏對于malloc或者new都可以檢查出來的,區(qū)別在于new可以指明是那個(gè)文件的那一行,而malloc沒有這些信息。4、new和malloc效率比較

new可以認(rèn)為是malloc加構(gòu)造函數(shù)的執(zhí)行。new出來的指針是直接帶類型信息的。而malloc返回的都是void指針

4.C++中,關(guān)鍵字struct和class的區(qū)別僅僅在于:

struct定義的類的缺省成員為公有的,而class定義的類的缺省成員為私有的;5.C++函數(shù)中值的傳遞方式有哪幾種?

答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。

7、構(gòu)造函數(shù)可以是虛函數(shù)嗎?為什么?答:不可以,創(chuàng)建對象時(shí)必須確定類型。

8、析構(gòu)函數(shù)可以是虛函數(shù)嗎?為什么?

答:可以。釋放指向子類的基類指針時(shí),不會造成內(nèi)存泄露。默認(rèn)的析構(gòu)函數(shù)不是虛的,當(dāng)類中至少有一個(gè)虛函數(shù)時(shí),需要虛析構(gòu)函數(shù)。

9、C++語言中的static關(guān)鍵字的作用是什么?答:

在函數(shù)體內(nèi),一個(gè)被聲明為靜態(tài)的變量在這函數(shù)被調(diào)用過程中維持其值不變。

在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所有函數(shù)訪問,但不能被模塊外的其他函數(shù)所問。

在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。

10、面向?qū)ο蟮某绦蛟O(shè)計(jì)思想是什么?

答:把數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的方法封裝形成一個(gè)個(gè)的對象。

11、什么是類?

答:把一些具有共性的對象歸類后形成一個(gè)集合,也就是類。

12、對象都具有兩方面特征是什么?分別是什么?

答:對象具有的特征是靜態(tài)特征與動態(tài)特征。

靜態(tài)特征是只能描述對象的屬性(成員變量),動態(tài)屬性是指對象表現(xiàn)出來的行為(成員函數(shù))

13、在頭文件中進(jìn)行聲明,在對應(yīng)的實(shí)現(xiàn)文件中進(jìn)行類的定義有什么意義?答:這樣可以提高編譯效率只要編譯一次對應(yīng)的.obj文件后,再次應(yīng)用該類的地方,這樣類就無法再次編譯,從而提高編譯效率。

14、在類的內(nèi)部定義成員函數(shù)的函數(shù)體,這種函數(shù)會具備那種屬性?

答:這種函數(shù)會自動為內(nèi)聯(lián)函數(shù),這種函數(shù)在函數(shù)調(diào)用的地方在編譯階段都會進(jìn)行代碼替換。

15.成員函數(shù)通過什么來區(qū)分不同對象的成員數(shù)據(jù)?為什么它能夠區(qū)分?

答:通過this指針指向?qū)ο蟮氖椎刂穪韰^(qū)分的。

16、C++編譯器自動為類產(chǎn)生的四個(gè)缺省函數(shù)是什么?

答:默認(rèn)構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),析構(gòu)函數(shù),賦值函數(shù)。

18.構(gòu)造函數(shù)與普通函數(shù)相比在形式上有什么不同?(構(gòu)造函數(shù)的作用,它的聲明形式來分析)

答:構(gòu)造函數(shù)是類的一種特殊成員函數(shù),一般情況下,它是專門用來初始化對象成員變量的。

構(gòu)造函數(shù)的名字必須與類名相同,它不具有任何類型,不返回任何值。

19、.什么時(shí)候必須重寫拷貝構(gòu)造函數(shù)?

答:當(dāng)構(gòu)造函數(shù)涉及到動態(tài)存儲分配空間時(shí),要自己寫拷貝構(gòu)造函數(shù),并且要深拷貝。

20.構(gòu)造函數(shù)的調(diào)用順序是什么?

答:1.先調(diào)用基類構(gòu)造函數(shù)

2.按聲明順序初始化數(shù)據(jù)成員

3.最后調(diào)用自己的構(gòu)造函數(shù)。

21、哪幾種情況必須用到初始化成員列表?

答:類的成員是常量成員初始化;

類的成員是對象成員初始化,而該對象沒有無參構(gòu)造函數(shù)。

類的成員為引用時(shí)。

22、什么是常對象?

答:常對象是指在任何場合都不能對其成員的值進(jìn)行修改的對象。

23、靜態(tài)函數(shù)存在的意義?

靜態(tài)私有成員在類外不能被訪問,可通過類的靜態(tài)成員函數(shù)來訪問;

當(dāng)類的構(gòu)造函數(shù)是私有的時(shí),不像普通類那樣實(shí)例化自己,只能通過靜態(tài)成員函數(shù)來調(diào)用構(gòu)造函數(shù)。

24、在類外有什么辦法可以訪問類的非公有成員?

答:友元,繼承,公有成員函數(shù)。

25、什么叫抽象類?答:不用來定義對象而只作為一種基本類型用作繼承的類。

26、運(yùn)算符重載的意義?

答:為了對用戶自定義數(shù)據(jù)類型的數(shù)據(jù)的操作與內(nèi)定義的數(shù)據(jù)類型的數(shù)據(jù)的操作形式一致。

27、不允許重載的5個(gè)運(yùn)算符是哪些?

答:

1..*(成員指針訪問運(yùn)算符號)

2.::域運(yùn)算符

3.Sizeof長度運(yùn)算符號

4.?:條件運(yùn)算符號

5..(成員訪問符)

28、運(yùn)算符重載的三種方式?

答:普通函數(shù),友元函數(shù),類成員函數(shù)。

29、流運(yùn)算符為什么不能通過類的成員函數(shù)重載?一般怎么解決?答:因?yàn)橥ㄟ^類的成員函數(shù)重載必須是運(yùn)算符的第一個(gè)是自己,而對流運(yùn)算的重載要求第一個(gè)參數(shù)是流對象。所以一般通過友元來解決。

30、賦值運(yùn)算符和拷貝構(gòu)造函數(shù)的區(qū)別與聯(lián)系?

答:相同點(diǎn):都是將一個(gè)對象copy到另一個(gè)中去。

不同點(diǎn):拷貝構(gòu)造函數(shù)涉及到要新建立一個(gè)對象。

拷貝構(gòu)造函數(shù):complexA(100);exampleB=A;

31、拷貝構(gòu)造函數(shù)在哪幾種情況下會被調(diào)用?

答:1.當(dāng)類的一個(gè)對象去初始化該類的另一個(gè)對象時(shí);

2.如果函數(shù)的形參是類的對象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時(shí);

3.如果函數(shù)的返回值是類對象,函數(shù)調(diào)用完成返回時(shí)。

32、對象間是怎樣實(shí)現(xiàn)數(shù)據(jù)的共享的?

答:通過類的靜態(tài)成員變量來實(shí)現(xiàn)對象間的數(shù)據(jù)共享。靜態(tài)成員變量占有自己獨(dú)立的空間不為某個(gè)對象所私有。

33、友元關(guān)系有什么特性?(類的外部訪問類的私有成員)

答:單向的,非傳遞的,不能繼承的。

34、內(nèi)聯(lián)函數(shù)和宏的區(qū)別在于:

宏是由預(yù)處理器對宏進(jìn)行替代,而內(nèi)聯(lián)函數(shù)是通過編譯器控制來實(shí)現(xiàn)的。

35、結(jié)構(gòu)與聯(lián)合有和區(qū)別?

1.結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類型成員組成,但在任何同一時(shí)刻,聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間),而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。

2.對于聯(lián)合的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對于結(jié)構(gòu)的不同成員賦值是互不影響的。

36、用什么函數(shù)開啟新進(jìn)程、線程。(4分)答:CreateProccess()創(chuàng)建進(jìn)程;

CreateThread()創(chuàng)建線程

MFC中還提供了_beginthread()與_beginthreadex()函數(shù)創(chuàng)建線程

MFC中SendMessage和PostMessage的區(qū)別?

答:PostMessage和SendMessage的區(qū)別主要在于是否等待應(yīng)用程序做出消息處理。PostMessage只是把消息放入隊(duì)列,然后繼續(xù)執(zhí)行;

而SendMessage必須等待應(yīng)用程序處理消息后才返回繼續(xù)執(zhí)行。這兩個(gè)函數(shù)的返回值也不同,

PostMessage的返回值表示PostMessage函數(shù)執(zhí)行是否正確,而SendMessage的返回值表示其他程序處理消息后的返回值。38.MFC中,大部分類是從哪個(gè)類繼承而來

(CCmdTarget、CObject、CWinApp、CWnd)?(2分)__CObject__

39.WaitForSingleObject有何作用;

m_pThrd的類型是CWinThread*時(shí),WaitForSingleObject(m_pThrd->m_hThread,INFINITE);有何作用。(4分)

答:WaitForSingleObject是表示等待線程的一個(gè)函數(shù)。參數(shù)為INFINITE表示一直等待線程CWinThread執(zhí)行結(jié)束后,再繼續(xù)處理自身程序。

6.__stdcall、__cdecl、__pascal在什么方面有所不同。(4分)

答:這些都是一些函數(shù)參數(shù)的調(diào)用約定,告訴編譯器函數(shù)參數(shù)壓棧的順序,以及壓入堆棧的內(nèi)容由誰來清除,是調(diào)用者還是函數(shù)本身清除堆棧的內(nèi)容。簡單列表如下:DirectiveParameterorderClean-upPassesparametersinregisters?pascalLeft-to-rightRoutineNocdeclRight-to-leftCallerNostdcallRight-to-leftRoutineNo

1、為什么要使用命名空間?解決命名沖突的問題。定義類的名稱以及不同廠商。2、內(nèi)聯(lián)函數(shù)和宏的區(qū)別

宏是由預(yù)處理器對宏進(jìn)行替代,而內(nèi)聯(lián)函數(shù)是通過編譯器控制來實(shí)現(xiàn)的。3、voidfunc(intx,inty=40,intz=49);

//只能在聲明時(shí)設(shè)置默認(rèn)參數(shù)缺省參數(shù)都必須是從右到左定義,使用時(shí)卻是從左到右。4、只要函數(shù)參數(shù)的類型不同,或者參數(shù)的個(gè)數(shù)不同,或者二者兼而有之,兩個(gè)或兩個(gè)以上的函數(shù)可以使用相同的函數(shù)名

5、引用與指針有什么區(qū)別?1)引用必須被初始化,指針不必。

2)引用初始化以后不能被改變,指針可以改變所指的對象。2)不存在指向空值的引用,但是存在指向空值的指針。

6、結(jié)構(gòu)與類的區(qū)別:

默認(rèn)訪問權(quán)限不同。struct默認(rèn)public;class默認(rèn)為private;

數(shù)據(jù)成員可以是任何類型,但是不能用auto,register,extern。

4、調(diào)用析構(gòu)函數(shù)的條件:

1、對象自動退出生命周期2、程序員手動釋放對象指針。

5、delete與delete[]區(qū)別

delete只會調(diào)用一次析構(gòu)函數(shù),而delete[]會調(diào)用每一個(gè)成員的析構(gòu)函數(shù)。6、虛函數(shù)的作用?接口重用

2.構(gòu)造函數(shù)可以是虛函數(shù)嗎?為什么?

答:不可以,創(chuàng)建對象時(shí)必須確定類型。從內(nèi)存分配,虛函數(shù)的用處等方面來講都可以。3.析構(gòu)函數(shù)可以是虛函數(shù)嗎?為什么?

答:可以。釋放指向子類的基類指針時(shí),不會造成內(nèi)存泄露。默認(rèn)的析構(gòu)函數(shù)不是虛的,當(dāng)類中至少有一個(gè)虛函數(shù)時(shí),需要虛析構(gòu)函數(shù)。7.MFC中CString是類型安全類么?

答:不是,其它數(shù)據(jù)類型轉(zhuǎn)換到CString可以使用CString的成員函數(shù)Format來轉(zhuǎn)

QT學(xué)習(xí):

1、問:QT區(qū)別于其它應(yīng)用開發(fā)工具有什么優(yōu)點(diǎn)及缺點(diǎn)?答:1、有很強(qiáng)的移植性;2、開源的開發(fā)工具;

3、用C++語言實(shí)現(xiàn),效率相對于其它面向?qū)ο笳Z言執(zhí)行效率更高;4、強(qiáng)大的通信機(jī)制(信號和槽,比MFC回調(diào)好);5、支持openGL可得到更加完美2D/3D效果。2、問:你怎么理解QT,QT是一門語言嗎?

答:QT,是一套應(yīng)用程序開發(fā)框架,也叫做是開發(fā)工具或一套圖形庫,用C++語言來實(shí)現(xiàn)的

3、問:QT中信號和槽的主要作用是什么?

答:主要用來在對象間進(jìn)行通信

4、問:QT中對事件的處理是通過什么方法實(shí)現(xiàn)的?答:通過虛函數(shù)的方法,重新實(shí)現(xiàn)相應(yīng)的事件函數(shù)。5、問:面向?qū)ο笤O(shè)計(jì)與面向過程設(shè)計(jì)的最大區(qū)別是什么?

答:面向?qū)ο蟮脑O(shè)計(jì)中,程序是由一個(gè)或多個(gè)對象組成的,每個(gè)對象負(fù)責(zé)不同的任務(wù),一起讓整個(gè)應(yīng)用程序運(yùn)行起來,每一個(gè)對象又是由不同的類實(shí)現(xiàn),使得程序模塊化更強(qiáng)。而面向過程的設(shè)計(jì),就是程序從頭到尾執(zhí)行的一個(gè)過程,需要自己去劃分模塊。五平臺與驅(qū)動部分

1、問:Bootloader在嵌入式系統(tǒng)中處于什么地位?bootloader的主要作用是什么?答:Bootloader是系統(tǒng)加電后、內(nèi)核運(yùn)行之前執(zhí)行的一段代碼,處于嵌入式系統(tǒng)的最底層。

Bootloader的主要作用有兩個(gè):一、為啟動內(nèi)核準(zhǔn)備好正確的軟硬件環(huán)境,軟件主要指堆、棧等,硬件主要指內(nèi)存、系統(tǒng)時(shí)鐘等,最終將內(nèi)核由固態(tài)存儲器加載到內(nèi)存中;二是為更新、備份、恢復(fù)系統(tǒng)提供控制平臺。

u-boot的配置與編譯過程:

配置u-boot:例如運(yùn)行make名字_config調(diào)用mkconfig腳本文件。

2、問:簡述s3c2440NAND/NOR兩種啟動方式的異同?答:

Nor啟動:

系統(tǒng)加電后會從0x000000開始的三總線位置讀取第一條指令進(jìn)行工作,norFLASH采用總線結(jié)構(gòu),可以直接連在三總線的0x00000位置上,所以將bootloader燒到norflash0x0000位置上,系統(tǒng)加電后即可運(yùn)行bootloader的第一條代碼,單片機(jī)一般采用此種啟動方式。

優(yōu)點(diǎn):硬件連接簡單、可靠

缺點(diǎn):norflash由于結(jié)構(gòu)的原因,容量一般做不了太大,而且其讀寫速度也較慢。

Nand啟動:

因?yàn)閚and不支持總線線性尋址,所以CPU會從nand自動拷4K代碼到內(nèi)部RAM,并從這段RAM開發(fā)運(yùn)行程序,所以這4k代碼往往是bootloader的第一階段代碼,其作用為將bootloadr的主要部分搬到內(nèi)存中運(yùn)行,然后進(jìn)行后續(xù)工作

優(yōu)點(diǎn):此方案充分利用了nand大容量存儲、sdram高速運(yùn)行的特點(diǎn),解決了嵌入式系統(tǒng)存儲與運(yùn)行的容量與速度問題

缺點(diǎn):中間包含了多次的搬運(yùn)過程,效率稍稍有些低。3、問:為什么bootloader大多由兩階段啟動構(gòu)成?以你熟悉的bootloader為例講解一下兩

階段分別干什么事情?

答:bootloader會直接對硬件進(jìn)行操作,為了分離硬件相關(guān)性,一般bootloader有兩部分代碼組成,第一部分一般由匯編完成,完成與體系結(jié)構(gòu)相關(guān)代碼、功能的實(shí)現(xiàn)。

第二部分由C語言完成,完成與系統(tǒng)機(jī)構(gòu)無關(guān)的通用功能的實(shí)現(xiàn)。

vivi的stage1實(shí)際完成的主要任務(wù)://引導(dǎo)內(nèi)核,從flash拷貝到sdram。

1.禁用看門狗、關(guān)閉所有中斷、初始化系統(tǒng)時(shí)鐘2.設(shè)置S3C2410的和內(nèi)存相關(guān)的13個(gè)寄存器3.初始化調(diào)試指示燈(可選)

4.初始化UART,作為調(diào)試口(可選)

5.從NAND或NORFLASH復(fù)制代碼到SDRAM6.跳轉(zhuǎn)到main,進(jìn)入stage2

vivi的stage2實(shí)際完成的主要任務(wù)//啟動內(nèi)核

1.step1:打印版本信息2.step2:初始化GPIO3.step3:MMU初始化4.step4:堆初始化

5.step5:MTD設(shè)備初始化6.step6:存放vivi的私有參數(shù)7.step7:添加vivi支持的命令

8.step8:根據(jù)用戶選擇進(jìn)入vivi命令模式或啟動內(nèi)核

4、問:Linux內(nèi)核由哪幾部分組成,各自有什么作用?

答:進(jìn)程管理:管理linux中的任務(wù)調(diào)度,比如多進(jìn)程、多線程、信號、進(jìn)程間通信等

內(nèi)存管理:管理進(jìn)程調(diào)度中伴隨的內(nèi)存分配與釋放

文件系統(tǒng)管理:管理系統(tǒng)中的存儲設(shè)備,如:U盤、SD卡、FLASH、硬盤等設(shè)備管理:管理系統(tǒng)中的各種字符設(shè)備,如LCD、觸摸屏、串口、傳感器等網(wǎng)絡(luò)管理:管理系統(tǒng)中的網(wǎng)絡(luò)設(shè)備,為用戶提供各種網(wǎng)絡(luò)服務(wù)5、問:簡述Linux模塊編程的含義及意義

答:Linux中采用了模塊的機(jī)制,允許用戶將內(nèi)核代碼如驅(qū)動等編譯成模塊,而不是直接編譯進(jìn)內(nèi)核

這樣可以有效的減小內(nèi)核的開發(fā)周期,減小最終內(nèi)核的體積,避免調(diào)試bug對內(nèi)核的影響,使得開發(fā)更加迅速。6、問:Linux有哪幾種常見的根文件系統(tǒng)格式?簡述其各自特點(diǎn)?

答:cramfs/jffs2/yaffs/yaffs2/

yaffs/yaffs2是專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計(jì)的一種日志型文件系統(tǒng),其特點(diǎn)是可讀可寫。

cramfs是Linux的創(chuàng)始人LinusTorvalds參與開發(fā)的一種只讀的壓縮文件系統(tǒng)在cramfs文件系統(tǒng)中,每一頁(4KB)被單獨(dú)壓縮,可以隨機(jī)頁訪問,其壓縮比高達(dá)2:1,為嵌入式系統(tǒng)節(jié)省大量的Flash存儲空間,使系統(tǒng)可通過更低容量的FLASH存儲相同的文件,從而降低系統(tǒng)成本

JFFS文件系統(tǒng)最早是由瑞典AxisCommunications公司基于Linux2.0的內(nèi)核為嵌入式系統(tǒng)開發(fā)的文件系統(tǒng)。JFFS主要用于NOR型閃存,基于MTD驅(qū)動層。

7、問:簡述boa服務(wù)器與CGI程序通信過程?

答:通過Internet把用戶請求送到服務(wù)器,服務(wù)器接收用戶請求并交給CGI程序處理,CGI程序把處理結(jié)果傳送給服務(wù)器,服務(wù)器把結(jié)果送回到用戶。

8、問:同步與異步串行通信息的區(qū)別?答:同步是通信息雙方使用同一時(shí)鐘線,而一但時(shí)鐘線太長就容易受到干擾,如SPI,I2C等等,所以常用于短距離通信;而異步通信是雙方使用各自的時(shí)鐘,如uart、USB等,傳輸距離更遠(yuǎn)。

9、問:設(shè)備驅(qū)動框架中的宏描述信息那一個(gè)是不能省略的:答:MODULE_LICENSE("GPL");即GPL是不能省的。

10、問:設(shè)備驅(qū)動開發(fā)中,常用到__init__exit聲明函數(shù),其作用是什么?答:表示被修飾的函數(shù)所占內(nèi)存資源用完是可以回收的。

11、問:驅(qū)動開發(fā)中用到的各個(gè)寄存器地址,物理地址嗎?如果不是那怎么得到虛擬地址的?答:不是物理地址,是通過ioremap()宏進(jìn)行重映射的。

12、問:驅(qū)動開發(fā)中,用于并發(fā)操作保護(hù)的信號量和自旋鎖有什么區(qū)別?

答:信號量是睡眠鎖,等待期間不占用CPU資源,但喚醒切換時(shí)很消耗時(shí)間,所以常用于使用不態(tài)頻繁且阻塞時(shí)間較長的地方;而自旋鎖是忙等待,即會被CPU調(diào)度,所以不能長時(shí)間等待,用于等待時(shí)間比較短或頻繁使用的地方。

13、問:內(nèi)核中的工作隊(duì)列是作什么用的?

答:用于某些函數(shù)需要延時(shí)處理的地方,也常用于中斷下半部,從而縮短中斷服務(wù)程序的處理的時(shí)間。

14、.怎樣實(shí)現(xiàn)并發(fā)控制

答:用到鎖和事務(wù)處理,做為一個(gè)事務(wù)的應(yīng)用程序訪問一個(gè)表時(shí),用鎖對該表設(shè)置一個(gè)優(yōu)先級,如果設(shè)置成功就進(jìn)行下一步操作,不成功的話就事務(wù)回滾,返回到最初狀態(tài),保證一個(gè)程序操作完數(shù)據(jù)庫后,才允許其它程序操作15.Linux驅(qū)動程序流程及功能。

設(shè)備驅(qū)動程序的功能:

對設(shè)備初始化和釋放

把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)

讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)檢測和處理設(shè)備出現(xiàn)的錯(cuò)誤

16、Linux內(nèi)核引導(dǎo)時(shí),從文件/etc/fstab中讀取要加載的文件系統(tǒng)。

17、什么是GPIO寄存器?

GPIO寄存器就是cpu分配給GPIO的地址。使用軟件訪問這些地址就可以訪問對應(yīng)的硬件引腳。分類:

上拉寄存器、控制寄存器、驅(qū)動寄存器、數(shù)據(jù)寄存器

常見問題:

chara[]=“hello”;a[0]=‘X’;cout}voidTest(void){char*str=NULL;GetMemory(str);strcpy(str,"helloworld");printf("%s",str);}請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:str并沒有指向新開辟的內(nèi)存空間,出段錯(cuò)誤,訪問了不該訪問的內(nèi)存voidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf("%s",str);}請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:打印出hello,有可能存在內(nèi)存泄露問題

returnp;}voidTest(void){char*str=NULL;str=GetMemory();printf("%s",str);}請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:打印結(jié)果不確定voidTest(void){char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL){strcpy(str,“world”);printf("%s",str);}}請問運(yùn)行Test函數(shù)會有什么樣的結(jié)果?答:打印出world,也有可能出段錯(cuò)誤,因?yàn)樵L問未知的內(nèi)存空間五、c++編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)

已知類String的原型為:classString{

public:

String(constchar*str=NULL);//普通構(gòu)造函數(shù)String(constString&other);//拷貝構(gòu)造函數(shù)~String(void);//析構(gòu)函數(shù)

String&operate=(constString&other);//賦值函數(shù)private:

char*m_data;//用于保存字符串};請編寫String的上述4個(gè)函數(shù)。這個(gè)題目在尚米網(wǎng)絡(luò)科技公司考過

六、編寫strcpy函數(shù)

已知strcpy函數(shù)的原型是char*strcpy(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。

(1)不調(diào)用C++/C的字符串庫函數(shù),請編寫函數(shù)strcpychar*strcpy(char*strDest,constchar*strSrc);{

assert((strDest!=NULL)&&(strSrc!=NULL));//2分assert是個(gè)宏如果條件為假整個(gè)程序?qū)⑼顺觯勺约号袛郼har*address=strDest;//2分while((*strDest++=*strSrc++)!=‘\\0’)//2分;

returnaddress;//2分}

(2)strcpy能把strSrc的內(nèi)容復(fù)制到strDest,為什么還要char*類型的返回值?

為了支持鏈?zhǔn)讲僮,即可以將函?shù)的返回值做為另一個(gè)函數(shù)的參數(shù)。如:strcpy(strDest,strcpy(strDest1,strSrc));可以將strSrccopy到strDest1,strDest。

友情提示:本文中關(guān)于《201*年赴泰志愿者面試經(jīng)過及總結(jié)》給出的范例僅供您參考拓展思維使用,201*年赴泰志愿者面試經(jīng)過及總結(jié):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時(shí)刪除。


201*年赴泰志愿者面試經(jīng)過及總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.seogis.com/gongwen/719717.html