(完整版)往年的深信服筆試題(齊全)_第1頁
(完整版)往年的深信服筆試題(齊全)_第2頁
(完整版)往年的深信服筆試題(齊全)_第3頁
(完整版)往年的深信服筆試題(齊全)_第4頁
(完整版)往年的深信服筆試題(齊全)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一,六道選擇題 (可以多選)1 char*p="helloworld"p 存儲(chǔ)在()指向/堆棧charp="helloworld"p 存儲(chǔ)在()指向全局變量/數(shù)據(jù)段static 變量/數(shù)據(jù)段分別在哪個(gè)地方?1 數(shù)據(jù)段2 代碼段3 堆4 堆棧(此題可以配合同文件夾下的char.cpp)(二、例子程序這是一個(gè)前輩寫的,非常詳細(xì)/main.cppinta=0;全局初始化區(qū)char*p1;全局未初始化區(qū)main()intb;棧chars="abc"棧char*p2;棧char*p3="123456"1234560 在常量區(qū)

2、,p3 在棧上。staticintc=0;全局(靜態(tài))初始化區(qū)p1=(char*)malloc(10); p2=(char*)malloc(20);分配得來得 10 和 20 字節(jié)的區(qū)域就在堆區(qū)。strcpy(p1,"123456");1234560 放在常量區(qū),編譯器可能會(huì)將它與 p3 所指向的"123456" 優(yōu)化成一個(gè)地方。不知道是那個(gè)高人怎么想的和我一樣,我估計(jì)中間應(yīng)該有錯(cuò)誤)2%&.&&.&%<=&&3<= = 那個(gè)優(yōu)先級(jí)別最高=4 以下哪些通信方式是可靠的通訊方式1 信號(hào) 2 管道

3、3 消息 4tcp 5udp 6 串口I/O5 是(M)?(a+):( a-),此處的M 等于我選C A,M=O,B,M=1,C,M!=O,D,M!=16 是Unix 的啟動(dòng)順序排序。(6 個(gè)選項(xiàng))二1 是數(shù)制轉(zhuǎn)換 151 轉(zhuǎn) 2 進(jìn)制和九進(jìn)制。100101111772 已知 0 的 ASCII 碼為 0x40,那么int120;在內(nèi)存中的表示形式是 0x CII 碼為 0x40,應(yīng)該為 0x30)31、在 linux 下,查看目錄大小的命令是:du sh dirname 2、修改文件屬性的命令是:chomd/chgrp3、切換為其他用戶身份的命令是:su78(0 的 AS4 還有一道指針交換

4、數(shù)值 int i=0,j=10,int* p=&i, int* q=&j, int fun (*a,*b)int* temp=a;*a*=10;*b*=10; a=b; b=temp;最后問調(diào)用fun(&p,q)問i、j、p、q 的最終值(具體形式大概如此,但中間指針肯定記的錯(cuò)誤)此題主要考察指針指向一個(gè)整數(shù),然后利用指針改變變量,最后交換指針5 有道填插入排序的算法。有一個(gè)數(shù)組a0到 ai-1為從小到大排序,ai ount-1沒有排序,請您添加 3 條語句使它們按照從小到大排序int insert_sort(int a,int count)到 acfor(int i=

5、1;i<count;+i)int j,t; t=ai;(j=i-1;)while(j>=0&&t<aj) (aj+1=aj;) j-; (aj+1=t;)return 0;三,編程與邏輯題1 自己寫一個(gè)strstr(單鏈表判斷有無環(huán),)char* strstr(char* buf, char* sub)char* bp; char* sp; If(!*sub) returnbuf; while(*buf)bf=buf; sp=sub;doif(!*sp) return buf;while(*bp+=*sp+) buf+=1;return 0;2 遍歷文本找單詞

6、并刪掉出現(xiàn)頻率最少的單詞,fun (char* pText)#include <stdio.h>#include <stdarg.h> /定義 av_list、av_start、av_arg 等宏· 3 實(shí)現(xiàn)一個(gè)與printf 功能相似的函數(shù)#include <iostream> #include <conio.h> #include <stdio.h>#include <stdarg.h> /定義 av_list、av_start、av_arg 等宏/*此函數(shù)的作用:實(shí)現(xiàn)一個(gè)參數(shù)個(gè)數(shù)可變的函數(shù),此函數(shù)的功能與

7、printf 類似, 但在格式處理上,不如 printf 豐富無異常,返回一個(gè) true,否則返回 false format 字符串的合法情況如下:1."%zyk%zyk%",OUTPUT:%zyk%zyk% 2."%dzyk%fzyk%s",OUTPUT:(int)zyk(float)zyk(string) 3."zyk",OUTPUT:zyk非法情況如下:1. "%zyk%"ERROR:不存在%z 格式、%后面必須跟一個(gè)格式字符*/ bool zykPrintf(const char * format,.)/定

8、義一個(gè)可用于指向參數(shù)的指針(實(shí)為 char *), va_list argPtr;/把函數(shù)的第一個(gè)參數(shù) format 的地址傳給 argPtr va_start(argPtr,format);const int size = strlen(format)+1; char *tmp = new charsize; memset(tmp, 0, size);·int i;while (*format != 0)for (i=0; i<size && *format!='%' && *format!=0; i+)tmpi=*format

9、+;tmpi = 0; /在有效的字符串末尾作 0 值防護(hù)printf("%s",tmp);if (*format = 0) return true;switch(*+format)/按指定類型讀取下一個(gè)參數(shù),并打印case 'd': printf("%d", va_arg(argPtr, int); break; case 's': printf("%s", va_arg(argPtr, char *); break; case 'c': printf("%c",

10、va_arg(argPtr, char); break; case 'f': printf("%f", va_arg(argPtr, float); break;/對(duì)%的處理case '%': printf("%"); break; /格式錯(cuò)誤default : printf(" Error Ocurr!Please Check the Format!"); return false;+format;delete tmp; return true;int main(int argc,char * arg

11、v)zykPrintf("%zyk"); /error zykPrintf("zyk%"); /errorzykPrintf("%zyk%zyk%"); /OUTPUT: %zyk%zyk%zykPrintf("nzyk is a pretty boy! His age is %d and %s",5,"I love zyk_!");getch(); return 0;4 是一道邏輯題,有的數(shù)是2,3,5 的倍數(shù),在三位數(shù)中出去可整除這三個(gè)數(shù)的和( 5 升和 3 升桶量 4 升水) 四,改錯(cuò)題三

12、道1tozero 算法2 比較簡單3 是高質(zhì)量里的一道題五,問答題1VC 中有哪些方法避免C 編程中的頭文件重復(fù)包含: #ifndef!#def ! #endif2 在C+中extern c 的作用(按鍵轉(zhuǎn)換,比如點(diǎn)擊p 輸出 q)作為 extern 是C/C+語言中表明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,該關(guān)鍵字告訴編譯器,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用。extern "C"是連接申明(linkage declaration),被 extern "C"修飾的變量和函數(shù)是按照C 語言方式編譯和連接的3 編程中異步IO 和同步IO 有

13、什么區(qū)別?說說你可知道的幾種IO?4 使用異步socket 編程,通常因?yàn)榫W(wǎng)絡(luò)擁塞send 不出數(shù)據(jù),會(huì)獲得什么樣的錯(cuò)誤碼(windo ws 下舉例),通常如何處理這種情況?(核心太與用戶太的區(qū)別,x86 如何轉(zhuǎn)換。)5 將程序移植到不同的 32 位 cpu 中,經(jīng)常出現(xiàn)結(jié)構(gòu)字節(jié)對(duì)齊和大小端的問題,有哪能些方法避免?(是子網(wǎng)源碼的判斷,計(jì)算,ABCDE 網(wǎng)絡(luò)的區(qū)別,DE 網(wǎng)絡(luò)的用途,)6 怎樣解決在vc 中內(nèi)存泄漏的問題(release 版本)(1) 放置關(guān)鍵字assert()(2) 生成map 文件。它并不往exe 文件中添加任何東西,僅僅只是把編譯連接時(shí)的所有函數(shù)入口地址記錄在后綴為.ma

14、p 文件。程序崩潰的時(shí)候,可以得到一個(gè)崩潰時(shí)的 EIP 地址, 通過地址可以很容易的查到崩潰所在的函數(shù)。(在vc setting 下有個(gè)link 按鈕選上generat e mapfile)(3) Release 版本也是可以設(shè)置斷點(diǎn)的,在希望設(shè)置斷點(diǎn)處加入_asm int 3 (4)熟悉匯編,通過編譯時(shí)的匯編看出(5) 使用第三方調(diào)試器。(6) 關(guān)掉發(fā)行版中的一些優(yōu)化選項(xiàng),生成調(diào)試信息。(是 p2p 軟件在nat 用戶里實(shí)現(xiàn)數(shù)據(jù)互傳的原理開發(fā)類筆試全部是 C/C+,要求對(duì)底層有一定的了解開發(fā)類的筆試題目比較暈,共五頁紙,要求兩個(gè)鐘頭完成(我的簡歷沒有通過篩選,我是去霸王筆的 -_-)好像考的

15、內(nèi)容都跟網(wǎng)上流傳的差不多,題目內(nèi)容大致如下:希望對(duì)參加深信服筆試和面試的同學(xué)有所幫助:)1. 選擇題:6 題 第一題是考變量和值的存儲(chǔ)位置(堆/棧/代碼段/數(shù)據(jù)段等) 最后一題是 Unix 系統(tǒng)的啟動(dòng)順序,其他幾題比較簡單。2. 填空題:4/5 題 考 sizeof、指針、數(shù)制轉(zhuǎn)換、排序等,看過高質(zhì)量 C/C+應(yīng)該都沒有問題。3. 改錯(cuò)題:3 題 有道題跟高質(zhì)量 C/C+中一道指針題類似,不過那題中沒有錯(cuò),原本不需要修改,卻反倒被我改錯(cuò)了,汗.另外兩題比較簡單。4. 編程題: 4/5 題 判斷鏈表有沒有環(huán)(要求用兩種方法); 實(shí)現(xiàn) C 中的 printf深圳某公司幾個(gè) vc/mfc 筆試題目(

16、含參考答案)1:Release 版本下如何解決memory leak 以及非法操作的BUG。(搞不清什么非法操作)2: 在異步socket 時(shí),為什么有時(shí)send 不出數(shù)據(jù),會(huì)報(bào)什么錯(cuò)誤(分windows/linux 下),你一般怎么處理?下面是幾個(gè)編程的3:實(shí)現(xiàn)strstr 模型 (我暈,我寫了個(gè)函數(shù),只是不是strstr,而是 strchr)4: 實(shí)現(xiàn)printf 類似的函數(shù), void myprintf(char *str,.)(用 console API 嗎?好像在哪書上看到可用那些API 實(shí)現(xiàn),嘿,我就寫了個(gè)std:cout<<) 5: 刪除文本文件中出現(xiàn)頻率最小的單詞,

17、(文件里以空格表示間隔一個(gè)單詞)void func(char *pTxt)1、strstr 的實(shí)現(xiàn)原型。char *my_strstr(const char *str, const char *strSearch)while (*str != '0')char *p = (char *)str;char *ps = (char *)strSearch; while ( ps && *p = *ps )p , ps ;if ('0' = *ps) return (char *)str; str ;return NULL;2、從指定文本中刪除出現(xiàn)頻率

18、最少的單詞,如果有多個(gè),則都刪除。實(shí)現(xiàn) void func(char* pTxt)函數(shù)。. 看 單詞處理, 論壇中很多都有涉及3、printf 的實(shí)現(xiàn)。int printf(const char *format, .)va_list arglist; int buffing;int retval; va_start(arglist, format);_ASSERTE(format != NULL);#ifdef _MT_lock_str2(1, stdout); try #endif /* _MT */ buffing = _stbuf(stdout);retval = _output(std

19、out,format,arglist);_ftbuf(buffing, stdout); #ifdef _MT finally _unlock_str2(1, stdout);#endif /* _MT */return(retval);4、VC 中有哪些方法避免 C 編譯頭文件重復(fù)。(除了#ifndef/#define/#endif 外,就想不出來了)#pragma once5、extern "C"的用法。用于 提供 C 接口, 如使用 C 命名方式 等 .6、異步socket 編程中,send 不出數(shù)據(jù)的錯(cuò)誤碼是什么,(舉 Linux 或 Windows 為例),你是怎

20、么處理的?非阻塞 SOCKET,SEND 不出數(shù)據(jù)的原因有 2 個(gè)吧,TCP 下連接斷開了和該SOCKET 處在阻塞狀態(tài)(也就是說在發(fā)送數(shù)據(jù)中)。UPD 發(fā)不出只有TCP 后面的情況。處理的辦法就是記錄下該SOCKET 的狀態(tài),當(dāng)狀態(tài)為阻塞的時(shí)間,放入緩沖,當(dāng)該 SOCKET再次可寫時(shí),發(fā)送。7、異步 IO 和同步 IO 有什么區(qū)別?舉例說明有幾種(如read)?異步 IO 當(dāng)函數(shù)返回時(shí)不一定就完成了IO 操作,而同步 IO 已經(jīng)完成了。所以異步 IO 需要有一個(gè)事件,當(dāng)IO 完成時(shí)會(huì)設(shè)置此事件,調(diào)用者在事件上等待。8、32 位系統(tǒng)中,出現(xiàn)結(jié)構(gòu)字節(jié)對(duì)齊的問題和大小端的問題的避免?#pragma

21、 pack(4)9、如何查出內(nèi)存泄漏和非法操作的BUG(在Release 版本下)? 使用 map 文件1, PostMessage 只把消息放入隊(duì)列,不管其他程序是否處理都返回,然后繼續(xù)執(zhí)行,這是個(gè)異步消息投放函數(shù)。而 SendMessage 必須等待其他程序處理消息完了之后才返回,繼續(xù)執(zhí)行,這是個(gè)同步消息投放函數(shù)。而且,PostMessage 的返回值表示 PostMessage 函數(shù)執(zhí)行是否正確;而 SendMessage 的返回值表示其他程序處理消息后的返回值。這點(diǎn)大家應(yīng)該都明白。2, 如果在同一個(gè)線程內(nèi),PostMessage 發(fā)送消息時(shí),消息要先放入線程的消息隊(duì)列,然后通過消息循環(huán) Dispatch 到目標(biāo)窗口。SendMessage 發(fā)送消息時(shí),系統(tǒng)直接調(diào)用目標(biāo)窗口的消息處理程序,并將結(jié)果返回。SendMessage 在同一線程中發(fā)送消息并不入線程消息隊(duì)列。 如果在不同線程內(nèi)。最好用PostThreadMessage 代替 PostMessage,他工作的很好。SendMessage 發(fā)送消息到目標(biāo)窗口所屬的線程的消息隊(duì)列,然后發(fā)送消息的線程等待(事實(shí)上,他應(yīng)該還在做一些監(jiān)測工作,比如監(jiān)視 QS_SENDMESSAGE 標(biāo)志),直到目標(biāo)窗口處理完并且結(jié)果返回,發(fā)送消息的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論