往年的深信服筆試題(齊全)_第1頁
往年的深信服筆試題(齊全)_第2頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、33、切換為其他用戶身份的命令是:su一,六道選擇題(可以多選)1 char*p=helloworld;p 存儲在()指向堆棧charp=helloworld;p 存儲在()指向全局變量/數據段static 變量/數據段分別在哪個地方?1 數據段2 代碼段3 堆4 堆棧(此題可以配合同文件夾下的char.cpp )(二、例子程序這是一個前輩寫的,非常詳細/main.cppint a =0;全局初始化區char *p1;全局未初始化區main()int b; 棧chars= abc;棧char*p2;棧char*p3=123456;1234560 在常量區,p3 在棧上。staticint c

2、=0 ;全局(靜態)初始化區pl = (char *)malloc(10);p2 =(char *)malloc(20);分配得來得 10 和 20 字節的區域就在堆區strcpy(p1, 123456);1234560 放在常量區,編譯器可能會將它與p3 所指向的123456優化成一個地方。不知道是那個高人怎么想的和我一樣,我估計中間應該有錯誤)2%&.&=那個優先級別最高.& % = & =34 以下哪些通信方式是可靠的通訊方式1 信號 2 管道 3 消息 4tcp 5udp 6 串口 I/O5 是(M)?( a+):( a-),此處的 M 等于我選 CA,M=O,B,M=1,C,M! =

3、O,D,M ! =16 是 Unix 的啟動順序排序。(6 個選項)1 是數制轉換 151 轉 2 進制和九進制。100101111772 已知 0 的 ASCII 碼為 0 x40,那么 int 120;在內存中的表示形式是0 x_78(0 的 ASCII 碼為 0 x40,應該為 0 x30)1、在 linux 下,查看目錄大小的命令是:du - sh dir name2、修改文件屬性的命令是:chomd/chgrp4 還有一道指針交換數值int i=0,j=10,int* p=&i, int* q=&j,int fun (*a,*b)int* temp=a;*a*=10;*b*=10;a

4、=b;b=temp;最后問調用 fun(&p,q)問 i、j、p、q 的最終值(具體形式大概如此,但中間指針肯定記的錯誤)此題主要考察指針指向一個整數,然后利用指針改變變量,最后交換指針5 有道填插入排序的算法。有一個數組a0到 ai-1為從小到大排序,ai到 acount-1沒有排序,請您添加3 條語句使它們按照從小到大排序int insert_sort(inta,int count)for(int i=1;i=0&taj)(aj+1=aj;)j-;(aj+1=t;)return 0;三,編程與邏輯題1 自己寫一個 strstr(單鏈表判斷有無環,)char* strstr(char* bu

5、f, char* sub)char* bp;char* sp;lf(!*sub)return buf;while(*buf)bf=buf;sp=sub;do if(!*sp)return buf;while(*bp+=*sp+)buf+=1;return 0;2 遍歷文本找單詞并刪掉出現頻率最少的單詞,fun (char*#include #include / 定義 av_list、av_start、av_arg 等宏3 實現一個與 printf功能相似的函數#include #include #include #include / 定義 av_list、av_start、av_arg 等宏/

6、*此函數的作用:實現一個參數個數可變的函數,此函數的功能與printf 類似,但在格式處理上,不如printf 豐富無異常,返回一個 true,否則返回 falseformat 字符串的合法情況如下:1. %zyk%zyk%,OUTPUT:%zyk%zyk%2. %dzyk%fzyk%s,OUTPUT:(int)zyk(float)zyk(string)3. zyk, OUTPUT:zyk非法情況如下:1.%zyk% ERROR:不存在%z 格式、后面必須跟一個格式字符*/bool zykPrintf( const char * format,.)/定義一個可用于指向參數的指針(實為 char

7、 *),va_list argPtr;/把函數的第一個參數 format 的地址傳給 argPtrva_start(argPtr,format);const int size = strlen(format)+1;char *tmp = new char size;memset(tmp, 0, size);while (*format != 0)int i;for (i=0; isize & *format!=% & *format!=0; i+) pText)tmpi=*format+;tmpi = 0; /在有效的字符串末尾作0 值防護printf(%s,tmp);if (*format

8、= 0)return true ;switch (*+format)/按指定類型讀取下一個參數,并打印case d: printf(%d, va_arg(argPtr,case s: printf(%s, va_arg(argPtr,case c: printf(%c, va_arg(argPtr,case f: printf(%f, va_arg(argPtr,/對%的處理case %: printf(%); break ; /格式錯誤default : printf( Error Ocurr!Please Check the Format!); return false; +format;

9、delete tmp;return true ;int main( int argc, char * argv)zykPrintf(%zyk); /errorzykPrintf(zyk%); /errorzykPrintf(%zyk%zyk%); /OUTPUT: %zyk%zyk%zykPrintf(nzyk is a pretty boy! His age is %d and %s,5,I love zykA_A!);getch();return 0;4 是一道邏輯題,有的數是2,3,5 的倍數,在三位數中出去可整除這三個數的和int); break; char*); break ; ch

10、ar);break; float);break ;( 5 升和 3 升桶量 4 升水) 四,改錯題三道1tozero 算法2 比較簡單3 是高質量里的一道題 五,問答題1VC 中有哪些方法避免 C 編程中的頭文件重復包含:#ifndef !#def !#endif2 在 C+ 中 extern c 的作用 (按鍵轉換,比如點擊 p 輸出 q) 作為 extern 是 C/C+語言中表明函數和全局變量作用范圍(可見性)的關鍵字,該關鍵字 告訴編譯器,其聲明的函數和變量可以在本模塊或其它模塊中使用。extern C 是連接申明 (linkage declaration),被 extern C 修飾

11、的變量和函數是按照 C語言方式編譯和連接的3 編程中異步 10 和同步 10 有什么區別?說說你可知道的幾種10?4 使用異步 socket 編程,通常因為網絡擁塞 send 不出數據,會獲得什么樣的錯誤碼 (windo ws 下舉例 ) ,通常如何處理這種情況?(核心太與用戶太的區別, x86 如何轉換。)5 將程序移植到不同的 32 位 cpu 中,經常出現結構字節對齊和大小端的問題,有哪能些方 法避免?(是子網源碼的判斷,計算, ABCDE 網絡的區別, DE 網絡的用途,)6 怎樣解決在 vc 中內存泄漏的問題( release 版本)( 1 )放置關鍵字 assert ()(2)生成

12、 map 文件。它并不往 exe 文件中添加任何東西,僅僅只是把編譯連接時的所有 函數入口地址記錄在后綴為 .map 文件。程序崩潰的時候, 可以得到一個崩潰時的 EIP 地址, 通過地址可以很容易的查到崩潰所在的函數。(在 vc setting 下有個 link 按鈕選上 generat e mapfile )( 3 ) Release 版本也是可以設置斷點的,在希望設置斷點處加入 _asm int 3(4)熟悉匯編,通過編譯時的匯編看出(5)使用第三方調試器。(6)關掉發行版中的一些優化選項,生成調試信息。(是 p2p 軟件在 nat 用戶里實現數據互傳的原理開發類筆試全部是 C/C+ ,

13、要求對底層有一定的了解開發類的筆試題目比較暈,共五頁紙, 要求兩個鐘頭完成(我的簡歷沒有通過篩選,我是去霸王筆的 -_-)好像考的內容都跟網上流傳的差 不多,題目內容大致如下 : 希望對參加深信服筆試和面試的同學有所幫助:)1. 選擇題:6 題 第一題是考變量和值的存儲位置 (堆/棧 /代碼段 /數據段等 ) 最后一題是 Unix 系統 的啟動順序,其他幾題比較簡單。2. 填空題: 4/5 題 考 sizeof 、指針、數制轉換、排序等,看過高質量C/C+ 應該都沒有問題。3. 改錯題: 3 題 有道題跟高質量 C/C+ 中一道指針題類似,不過那題中沒有錯,原本不需要修 改,卻反倒被我改錯了,

14、汗 .另外兩題比較簡單。4. 編程題 : 4/5 題 判斷鏈表有沒有環 ( 要求用兩種方法 ); 實現 C 中的 printf深圳某公司幾個 vc/mfc 筆試題目 (含參考答案 ) 1: Release 版本下如何解決 memory leak 以及非法操作的 BUG。(搞不清什么非法操作)2: 在異步 socket 時,為什么有時 send 不出數據,會報什么錯誤(分 windows/linux 下),你 一般怎么處理?下面是幾個編程的3:實現 strstr 模型(我暈,我寫了個函數,只是不是strstr 而是 strchr)4: 實現 printf 類似的函數 , void myprint

15、f(char *str,.)(用 console API 嗎?好像在哪書上看到可用那些 API 實現,嘿,我就寫了個 std:cout)5: 刪除文本文件中出現頻率最小的單詞, (文件里以空格表示間隔一個單詞)void func(char *pTxt)1、 strstr 的實現原型。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 (

16、0 = *ps)return (char *)str;str ;return NULL;2、 從指定文本中刪除出現頻率最少的單詞, 如果有多個, 則都刪除。實現 void func(char* pTxt) 函數。. 看 單詞處理, 論壇中很多都有涉及3、 printf 的實現。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 #

17、e ndif /* _MT */buffing = _stbuf(stdout);retval = _output(stdout,format,arglist);_ftbuf(buffing, stdout);#ifdef _MT_fin ally _un Iock_str2(1, stdout);#e ndif /* _MT */ return(retval);4、 VC 中有哪些方法避免 C 編譯頭文件重復。(除了 #ifndef/#define/#endif 夕卜,就想不出來 了)#pragma once5、extern C的用法。用于提供 C 接口,如使用 C 命名方式等.6、 異步

18、socket 編程中,send 不出數據的錯誤碼是什么,(舉 Linux 或 Windows 為例),你是 怎么處理的?非阻塞 SOCKET,SEND 不出數據的原因有 2 個吧,TCP 下連接斷開了和該 SOCKET 處在 阻塞狀態(也就是說在發送數據中)。UPD 發不出只有 TCP 后面的情況。處理的辦法就是記錄下該SOCKET 的狀態,當狀態為阻塞的時間, 放入緩沖,當該 SOCKET再次可寫時,發送。7、異步 10 和同步 10 有什么區別?舉例說明有幾種(如read)? 異步 IO 當函數返回時不一定就完成了 10 操作,而同步 10 已經完成了。所以異步 10 需要 有一個事件,當

19、 10 完成時會設置此事件,調用者在事件上等待。8、32 位系統中,出現結構字節對齊的問題和大小端的問題的避免?#pragma pack(4)9、 如何查出內存泄漏和非法操作的BUG (在 Release 版本下)?使用 map 文件1, PostMessage 只把消息放入隊列,不管其他程序是否處理都返回,然后繼續 執行,這是個異步消息投放函數。 而 SendMessage 必須等待其他程序處理消息完 了之后才返回,繼續執行,這是個同步消息投放函數。而且,PostMessage 的返回值表示 PostMessage 函數執行是否正確;而 SendMessage 的返回值表示其他程 序處理消息

20、后的返回值。 這點大家應該都明白。2,如果在同一個線程內,PostMessage 發送消息時,消息要先放入線程的消息 隊列,然后通過消息循環 Dispatch 到目標窗口。SendMessage 發送消息時,系 統直接調用目標窗口的消息處理程序,并將結果返回。Sen dMessage 在同一線程中發送消息并不入線程消息隊列。如果在不同線程內。最好用PostThreadMessage 代替 PostMessage,他工作的很好。SendMessage 發送消息到 目標窗口所屬的線程的消息隊列,然后發送消息的線程等待(事實上,他應該還在做一些監測工作,比如監視 QS_SENDMESSA 標志),直到目標窗口處理完并且 結果返回,發送消息的線程才繼續運行。這是 SendMessage 的一般情況,事實上,處理過程要復雜的多。比如,當發送消息的線程監測到有別

溫馨提示

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

評論

0/150

提交評論