版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上摘選著名的互聯(lián)網(wǎng)企業(yè)的面試筆試真題:1.extern的作用自己理解:應(yīng)該需要區(qū)分extern在C語言中和C+語言中的作用,C語言中extern聲明的函數(shù)和變量可以被該文件外部模塊引用,C+語言中除了該作用還可以聲明extern “C”聲明一段代碼編譯連接的方法為C語言的方法。參考:其實extern的解釋的很清楚,具體的也是跟我上面自己理解差別不是很大。(a) extern是C/C+語言中聲明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,該關(guān)鍵字告訴編譯器,其聲明的函數(shù)和變量在本模塊或其他模塊中使用(通常,在模塊的頭文件中對本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字e
2、xtern聲明。)(b) 被extern “C”修飾的變量和函數(shù)是按照C語言的方式編譯和鏈接的。(C語言不支持函數(shù)重載,所以函數(shù)的C+和C的編譯方式不同,這一句的作用就是實現(xiàn)C+和C及其他語言混合編程)2.strstr()函數(shù)的作用strstr()函數(shù)的原型一般為extern char * strstr(const char *src , const char *dest) , 其作用就是尋找目標(biāo)字符串在源字符串中第一次出現(xiàn)的位置。3.windows線程優(yōu)先級問題( 進(jìn)程和線程的區(qū)別和聯(lián)系 )我覺得這個概念可能面試、筆試的時候不是很適合,畢竟平臺相關(guān),大多數(shù)公司可能更多的傾向于linux開發(fā),
3、這個問題更換為進(jìn)程和線程的區(qū)別更好,這個是筆試,面試常見的知識考查。(a) 通常一個進(jìn)程可以包含若干個線程,它們可以利用進(jìn)程所擁有的資源。進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位,線程是進(jìn)程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨立運(yùn)行的基本單位。線程自己基本不擁有系統(tǒng)資源,只擁有一些在運(yùn)行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),線程可與同屬于一個進(jìn)程的其他線程共享進(jìn)程所擁有的全部資源。線程和進(jìn)程區(qū)別歸納:· 地址空間和其他資源:進(jìn)程間互相獨立,同一個進(jìn)程的各線程共享。· 通信:進(jìn)程間
4、通信IPC,線程間可以直接讀寫進(jìn)程序數(shù)據(jù)段(如全局變量)來進(jìn)行通信-需要進(jìn)行同步和互斥的輔助。· 調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換快速,高效。· 多線程的OS中,進(jìn)程不是一個可執(zhí)行的實體。4.多方法交換x與y的值5.指針的自加與引用6.前置+與后置+前置+和后置+我覺得一個比較重要的問題是C+中重載兩個操作符的時候如何區(qū)別:區(qū)分前置和后置 函數(shù)的參數(shù)有一個 (函數(shù)重載),后置+有一個(int)參數(shù)。7.inline的作用inline函數(shù)不像正常函數(shù)在調(diào)用時存在壓棧和call的操作,它會把程序代碼直接嵌入到調(diào)用
5、代碼段中,也就是說使用inline函數(shù)會增大二進(jìn)制程序的體積,但是會使執(zhí)行速度加快。同時,編譯期間可以對參數(shù)進(jìn)行強(qiáng)類型的檢查,這是inline優(yōu)于宏的一個方面。8.二維數(shù)組的表示9.ifndef的作用條件編譯的語法,一般情況下,源程序中所有的行都參加編譯。但是有時希望對其中一部分內(nèi)容只在滿足一定條件才進(jìn)行編譯,也就是對一部分內(nèi)容指定編譯的條件,這就是“條件編譯”。有時,希望當(dāng)滿足某條件時對一組語句進(jìn)行編譯,而當(dāng)條件不滿足時則編譯另一組語句。10.KMP算法字符串匹配的高級算法11.函數(shù)調(diào)用方式· _cdecl
6、160; 堆棧由調(diào)用者清除 參數(shù)從右至左的順序壓入堆棧內(nèi)· _stdcall 堆棧由被調(diào)用者清除 參數(shù)從右至左的順序壓入堆棧內(nèi)· _fastcall 堆棧由被調(diào)用者清除 部分參數(shù)保存在寄存器中,然后其他的壓入堆棧內(nèi)· thiscall(非
7、關(guān)鍵字) 堆棧由被調(diào)用者清除 參數(shù)壓入堆棧內(nèi),this指針保存在ECX寄存器內(nèi)12.重載函數(shù) 函數(shù)重載是指在同一作用域內(nèi),可以有一組具有相同函數(shù)名,不同參數(shù)列表的函數(shù),這組函數(shù)被稱為重載函數(shù)。不能利用返回類型進(jìn)行重載!類中函數(shù)const和非const可以進(jìn)行重載,其實原理是利用this指針的類型是const和非const進(jìn)行重載,其實原理就是參數(shù)類型不同,const指針orconst引用調(diào)用的為const版本的函數(shù)更多函數(shù)重載的。13.構(gòu)造函數(shù)和析構(gòu)函數(shù) 虛擬析構(gòu)函數(shù)的使用場景是
8、指向父類的指針實則為子類指針,調(diào)用delete的時候使用虛擬析構(gòu)函數(shù),防止部分內(nèi)存泄露。 構(gòu)造函數(shù)不能聲明為虛擬函數(shù),因為對象的虛擬函數(shù)表的指針其實是在構(gòu)造函數(shù)內(nèi)編譯器添加完成的代碼,所以在構(gòu)造函數(shù)執(zhí)行之前無法訪問到虛擬函數(shù)表的。14.合并兩個有序鏈表 類似歸并排序,兩個指針歸并即可。15.100億條記錄的文本文件,取出重復(fù)數(shù)最多的前10條 類似top k算法,無法全部讀入內(nèi)存的top k算法是利用容量為k的最大堆,達(dá)到線性時間的top k算法。 首先利用hash table預(yù)處理每個元素出
9、現(xiàn)的次數(shù),然后利用次數(shù)執(zhí)行top k算法。16.設(shè)計一個雙向鏈表,并且提供一個可根據(jù)值刪除元素的函數(shù) STL中的list底層及為雙鏈表實現(xiàn)。17.二叉樹的多種遍歷算法實現(xiàn)18.有讀和寫的兩個線程和一個隊列,讀線程從隊列中讀數(shù)據(jù),寫線程往隊列中寫數(shù)據(jù) 生產(chǎn)者和消費者模型: 使用信號燈和互斥量。123456789101112131415161718192021222324semaphore mutex = 1;semaphore fillCount = 0;semaphore emptyCount = BUFFER_SI
10、ZE; procedure producer() while(true) item = produceItem(); down(emptyCount); down(mutex);
11、0; putItemIntoBuffer(item); up(mutex); up(fillCount); procedure consumer() &
12、#160; while(true) down(fillCount); down(mutex); item = removeItemFromBuffer
13、(); up(mutex); up(emptyCount); consumeItem(item); 不使用信號燈和互斥量。12345678910111213141516171819202122volatile un
14、signed int produceCount, consumeCount;TokenType bufferBUFFER_SIZE; void producer(void) while (1) while (produceCount - consumeCount = BUFFER_SIZE)
15、0; sched_yield(); / 緩沖區(qū)滿 bufferproduceCount % BUFFER_SIZE = produceToken(); produceCount += 1; void consumer(void)
16、; while (1) while (produceCount - consumeCount = 0) sched_yield(); / 緩沖區(qū)空 consumeToken( bufferconsumeC
17、ount % BUFFER_SIZE); consumeCount += 1; 19.stack,heap,memory-pool 20.TCP的流量控制和擁塞控制機(jī)制 TCP的流量控制就是讓發(fā)送方的發(fā)送速率不要太快,讓接收方來得及接收。利用滑動窗口機(jī)制可以很方便的在TCP連接上實現(xiàn)對發(fā)送方的流量控制。TCP的窗口單位是字節(jié),不是報文段,發(fā)送方的發(fā)送窗口不能超過接收方給出的接收窗口
18、的數(shù)值。 所謂的擁塞控制為防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。擁塞控制索要做的都有一個前提,就是網(wǎng)絡(luò)能承受現(xiàn)有的網(wǎng)絡(luò)負(fù)荷。流量控制往往指點對點通信量的控制,是一個端到端的問題。因特網(wǎng)建議標(biāo)準(zhǔn)RFC2581定義了進(jìn)行擁塞控制的四種算法,即慢開始(Slow-start),擁塞避免(Congestion Avoidance)快重傳(Fast Restrangsmit)和快回復(fù)(Fast Recovery)。21.寫一個函數(shù),返回一個字符串中只出現(xiàn)一次的第一個字符 目前想到的方法就是利用hash表記錄每個字
19、符出現(xiàn)的次數(shù),然后兩次遍歷即可找到只出現(xiàn)一次的第一個字符。22.求一個數(shù)組中第k大的數(shù)的位置 23.面向?qū)ο罄^承,多態(tài)問題,如多態(tài)的實現(xiàn)機(jī)制 虛擬函數(shù),指針and引用24.內(nèi)聯(lián)函數(shù)什么時候不展開 在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和開關(guān)語句。如果內(nèi)聯(lián)函數(shù)有這些語句,則編譯將該函數(shù)視同普通函數(shù)那樣產(chǎn)生函數(shù)調(diào)用代碼,遞歸函數(shù)(自己調(diào)用自己的函數(shù))是不能被用來做內(nèi)聯(lián)函數(shù)的。內(nèi)聯(lián)函數(shù)只適合于只有15行的小函數(shù)。對一個含有許多語句的大函數(shù),函數(shù)調(diào)用和返回的開銷相對來說微不足道,所以也沒有必要用內(nèi)聯(lián)函數(shù)實現(xiàn)。2
20、5.成員函數(shù)初始化列表有什么作用?什么必須在成員初始化列表中進(jìn)行初始化? 類的static變量在類的構(gòu)造函數(shù)前已進(jìn)行初始化! 類對象的構(gòu)造順序: (a)分配內(nèi)存,調(diào)用構(gòu)造函數(shù)時,隱式/顯式的初始化各數(shù)據(jù)成員(順序和類中聲明對象一致)。如果無成員初始化列表。隱式初始化階段按照聲明的順序依次調(diào)用所有基類的缺省構(gòu)造函數(shù),然后所有成員類對象的缺省構(gòu)造函數(shù)。 (b)進(jìn)入構(gòu)造函數(shù)執(zhí)行函數(shù)體內(nèi)語句,函數(shù)體內(nèi)的數(shù)據(jù)成員的設(shè)置被認(rèn)為賦值,而不是初始化。 所以,使用初始化列表的兩個情況
21、: 1)必須使用初始化列表進(jìn)行初始化!1數(shù)據(jù)成員為類對象并且該類對象僅提供帶參數(shù)的構(gòu)造函數(shù)2const修飾的數(shù)據(jù)成員3引用數(shù)據(jù)成員; 2)考慮效率的時候!因為未利用初始化列表而是在構(gòu)造函數(shù)體內(nèi)進(jìn)行賦值,則調(diào)用了缺省構(gòu)造函數(shù)和賦值運(yùn)算符操作。如果數(shù)據(jù)成員為自定義的類對象,則效率比直接利用構(gòu)造函數(shù)初始化低很多。27.的區(qū)別 相同點:· 都是地址的概念;指針指向一塊內(nèi)存,它的內(nèi)容是所指內(nèi)存的地址;而引用則是某塊內(nèi)存的別名。 不同點:·
22、 指針是一個實體,而引用僅是個別名· 引用只能并且必須在定義時被初始化一次,之后不可變(類似常量指針,引用自帶常量指針屬性);指針可變;· 引用沒有const,指針有const,const的指針不能夠改變;(int & const refer 不存在,因為引用本身就初始化一次不可變,但是const int &refer是存在的,指引用所指向的值不可改變)· 引用不能為空,指針可以為空· sizeof針對指針得到的是指
23、針的大小,針對引用得到的是指向?qū)ο蟮拇笮。?#183; 指針的+操作和引用的+操作完全不同,指針為移動指針地址,引用+操作作用于指向的對象;· 引用是類型安全的,而指針不是類型安全的。28.創(chuàng)建空類時,哪些成員函數(shù)是系統(tǒng)默認(rèn)的? 構(gòu)造函數(shù),拷貝構(gòu)造,賦值函數(shù),析構(gòu)函數(shù),取址運(yùn)算符,const取址運(yùn)算符29.有10W個IP段,這些IP段之間都不重合,隨便給定一個IP,求出屬于哪個IP段 30.(網(wǎng)絡(luò)編程范式,非阻塞connect) 常見的IO模型有阻塞、非阻
24、塞、IO多路復(fù)用、異步。31.TCP/IP 32.LINUX的命令,原理及底層實現(xiàn) 33.LINUX編程,包括所有互斥的方法,多線程編程,進(jìn)程間的通信 34.一個一維數(shù)軸上的不同線段,求重復(fù)最長的兩個線段 35.有向帶權(quán)圖最短路徑 36.內(nèi)存溢出和內(nèi)存泄露有什么區(qū)別?· 內(nèi)存溢出 out of memory,是指程序在申請內(nèi)存時,沒有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory;比如申請了一個integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出。· 內(nèi)存泄露 memory leak,是指程序在申請內(nèi)存后,
25、無法釋放已申請的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無論多少內(nèi)存,遲早會被占光。37.利用互斥量和條件變量設(shè)計一個消息隊列,具有以下功能:1)創(chuàng)建消息隊列(消息中所含的元素);2)消息隊列中插入消息;3)取出一個消息(阻塞方式);4)取出第一個消息(非阻塞方式)。注意互斥量,條件變量和隊列系統(tǒng)提供 38.非遞歸方法實現(xiàn)二叉樹的遍歷 利用棧stack的方法和morris遍歷方法,分別O(lgn)和O(1)的額外空間。wap和cnnet的區(qū)別 CMWAP 和 CMNET 只是中國移動人為劃分的兩個GPRS接入方
26、式。前者是為手機(jī)WAP上網(wǎng)而設(shè)立的,后者則主要是為PC、筆記本電腦、PDA等利用GPRS上網(wǎng)服務(wù)。它們在實現(xiàn)方式上并沒有任何差別,但因為定位不同,所以和CMNET相比,CMWAP便有了部分限制,資費上也存在差別。40.設(shè)計一個內(nèi)存管理策略,要求可以保證多線程安全,防止內(nèi)存越界等,效率不低于malloc()/free()函數(shù) 41.排列組合問題 排列遞歸dfs版本窮舉,另外還可以有一些帶剪枝的題目。42.若有序的關(guān)鍵字序列為b,c,d,e,f,g,q,r,s,t,則在二分查找關(guān)鍵字b的過程中,先后進(jìn)行比較的關(guān)鍵字依次是什么?
27、; 此問題向上取整和向下取整也相關(guān),而且與結(jié)束條件相關(guān)。 0,9->4(f) 0,3->1(c) 0,0->0(b) 如果是向下取整則為以上比較過程,依次f,c,b。43.有一個虛擬存儲系統(tǒng),若進(jìn)程在內(nèi)存中占3頁(初始狀態(tài)為空),若采用先進(jìn)先出頁面淘汰算法,當(dāng)執(zhí)行如下訪問下列后,1,2,3,4,5,1,2,5,1,2,3,4,5, 會發(fā)生多少缺頁? 另外一個比較重要的淘汰算法LRU,最近最久未使用。
28、; 3+8 = 1144.有一個順序棧S,元素s1,s2,s3,s4,s5,s6,依次進(jìn)棧,如果6個元素出棧順序s2,s3,s4,s6,s5,s1,則順序棧的容量至少應(yīng)該有多少? s1進(jìn)入,1,s2進(jìn)入,2,s2彈出,s3進(jìn)入,2,s3彈出,s4進(jìn)入,2,s4彈出,s5進(jìn)入,2,s6進(jìn)入,3,s6彈出,s5彈出,s1彈出。 根據(jù)以上過程所以順序棧的容量至少為3才可以。45.0,2,1,4,3,9,5,8,6,7是以數(shù)組形式存儲的最小堆,刪除堆頂元素0后的結(jié)果是多少? 自己理解:1,2,5,4,3,9,7,8,6,046.
29、某頁式存儲管理系統(tǒng)中,地址寄存器長度為24位,其中號占14位,則主存的分塊大小是多少字節(jié)? 頁式存儲管理是把主存儲器分成大小相等的許多區(qū),每個區(qū)稱為一塊,與此對應(yīng),編制程序的邏輯地址也分成頁,頁的大小與塊的大小相等。 (a) 地址轉(zhuǎn)換:絕對地址 = 塊號 * 塊長 +塊內(nèi)地址 塊號是頁號根據(jù)頁表查詢得到 這里寄存器長度位,號占位,所以頁面大小占位,所以塊的大小也為位。47.運(yùn)算符重載48.各種排序算法的使用與比較49.一維數(shù)組默認(rèn)初始化問題· 如果不對數(shù)組進(jìn)行任何初始化操作, 僅定義一個數(shù)組, 那么數(shù)組中這些元素的值是不確定的, 是系統(tǒng)中隨機(jī)的一個值。50.const char *p1 = "hello"char *const p2 = "hello",有什么區(qū)別。const在指針和引用聲明中位置的不同分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年徐州市邳州市三上數(shù)學(xué)期末調(diào)研模擬試題含解析
- 2024-2025學(xué)年新疆維吾爾巴音郭楞蒙古自治州尉犁縣數(shù)學(xué)三年級第一學(xué)期期末達(dá)標(biāo)測試試題含解析
- 2025年氫能源項目申請報告模板
- 2025年水處理阻垢分散劑系列項目規(guī)劃申請報告模范
- 2021教師辭職報告(15篇)
- 《烏鴉喝水》教案范文匯編5篇
- 高中語文教研工作計劃錦集5篇
- 員工年終總結(jié)體會10篇
- 有關(guān)高中語文周記四篇
- 少年宮活動計劃集錦9篇
- 2024年秋七年級生物上冊 2.1.2 植物細(xì)胞教案 (新版)新人教版
- 全國閩教版初中信息技術(shù)七年級上冊第一單元第3課《網(wǎng)絡(luò)信息的交互和安全》教學(xué)設(shè)計
- 高二數(shù)學(xué)數(shù)列小結(jié)省公開課金獎全國賽課一等獎微課獲獎?wù)n件
- 食品安全處理事故制度
- DB3301-T 0461-2024 電動自行車停放充電場所消防安全管理規(guī)
- 德語語言學(xué)導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年中國海洋大學(xué)
- JT-T-1078-2016道路運(yùn)輸車輛衛(wèi)星定位系統(tǒng)視頻通信協(xié)議
- 扭虧增盈提質(zhì)增效方案
- 侵權(quán)法智慧樹知到期末考試答案章節(jié)答案2024年四川大學(xué)
- 期末考試卷2《心理健康與職業(yè)生涯》(解析卷)高一思想政治課(高教版2023基礎(chǔ)模塊)
- 中醫(yī)病歷書寫基本規(guī)范本
評論
0/150
提交評論