


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、西山居筆試題西山居筆試題1、char szTest= " 12345tnOabcdO ” ,求 strle nszText = 7, sizeofszTest = 14.strlen是函數(shù),運行時才能確定,因此它只計算 了12345tn而sizeof是操作符,它包括所有 的字符 12345tn0abcd0,還要加一個結束字符,因此為 13=1 =142、Intan Test510; i ntnl=&an Test4-&an Test0,n2=&an Test3l-&an Testl3;貝 Unl=4, n2=18;注意計算第一個的時候能夠想一下指向數(shù)組
2、的指針,當指針+1的時候實際上是加了一個數(shù)組長度,這個題反過來想比較好做3、Char szNum= "" , int n=* ( short* )(szNum+4) - * (short* ) (szNum);貝! J n=1028;這里(short*) (szNum)是指向12為內存單元 為00000001 0000 0010即兩個內存單元存儲一個數(shù),(short*) (szNum+4)是指向 56,內存 中存放為 00000101 0000 0110即兩個內存單元 存儲一個數(shù)4、Stl中二分查找法的函數(shù)名,穩(wěn)定排序的函 數(shù)名,部分排序的函數(shù)名各是什么5、Stl中的map
3、常見數(shù)據(jù)結構中的紅黑樹實現(xiàn)。6、比較兩數(shù)大小,返回較大值Int cmp(i nt x,i nt y)(Retur na>b?a:b;7、#include<iostream>Int cc(int i)For(;i<4;)Std: cout? cc(+i);Retur n i;Int mai n()Cc(l);Retur n 0;請輸出結果:4444444&要增加一個類到某種類型的隱式轉換可經過重載賦值操作符實現(xiàn)9、C+64位編譯環(huán)境下,sizeof(i nt)=4,sizeofi nt *=8自己對于64位平臺上各種數(shù)據(jù)類型分別占用多 少 字節(jié),存在一些疑問,因此
4、用 C/C+中的sizeof分 別在這兩種平臺上進行了測試。運行結果如下:(分別用藍色和紅色標記了兩者的差異)機器平臺:X86_64處理器操作系統(tǒng):編譯0626Size1Size1ofcharis:ofun sig nedcharis:Size of sig ned char is:int1is:Sizeof4Sizeofshortis:Sizeoflong i8s:Sizeoflonginti s:8Sizeofsig nedinti s:4Sizeofint i4un sig neds:Size of un sig ned long int is:8Sizeoflonglongint is
5、:8Size of un sig ned long long is:8Size of float is:4Size of double is:8Size of long double is:16Size of (void *) is:8Size of (char *) is:8Size of (int *) is:8Size of (long *) is:8Size of (long long *) is: 8Size of (float *) is:8Size of (double * is:機器平臺:X86_32處理器操作系統(tǒng):Win dows XP SP2編譯器:VS自帶的C+編譯器Si
6、zeof1Size of un sig ned char is:Size of sig ned char is:Size of int is:Size of short is:Size of long is:Size of long int is:Size of sig ned int is:Size of un sig ned int is:Size of un sig ned long int is:Size of long long int is:Size of un sig ned long long is:Size of float is:Size of double is:char
7、is:1142444448848Size of long double is:Size of (void *) is:4Size of (char *) is:4Size of (int *) is:4Size of (long *) is:4Size of (long long *) is: 4Size of (float *) is:4Size of (double *) is:4其實就是所有的指針擴充為 8位,Io ng變?yōu)?位, long doulbe 變?yōu)?16 位,注意 double 是沒 有變化的10、列舉 c+0x 的任意三個新特性11、unsigned int strilen
8、(const charApstr)_asmMov eax,pstrCmp byte ptreax,0Jz zreturnZloop: Cmp byte prteax,0 JnzzloopZreturn:Sub eax,pstr 二、診斷題。若錯誤,請寫出錯在哪里1、 全局變量與靜態(tài)變量在內在中的存儲位置是相同的。正確。lo 全局變量中 static 全局變量和普通全局變量 的區(qū) 別:相同點: 1) 共存于同一塊內存(靜 態(tài)存儲區(qū))中;2)生命期相同, 都是到整個程序的生命期;不同點: 1) 前者是內部連接,后者 是外部連接;2)作用域不同:前者的作用域是局部于它所在的文件的,也就是說在當前程序
9、中其它文件中是不能 使用它的,如果想在想其它文件中聲明它為 extern 的來訪問它,編譯器就會報錯,當然在其 它文件 中即使有同名的變量也不會有名字沖突 的問題;后者的作用域是整個程序中的所有 文件,能夠在其它文件中聲明它為 extern 來訪 問 它,當然在整個程序中不論是否是同一個文件 都 不能有同名的普通全局變量,否則會有名字沖突,(如果在一個函數(shù)體內有與全局變量同名的 局部變量,那么局部變量會屏蔽全局變量,除非 使用作用域運算符 : :);2o 局部變量中的 static 變量和普通變更 的 區(qū)別:相同點:作用域相同,都是局部于 當前所在的函數(shù)體內。不同點: 1) 前者是內部連接,后
10、者 沒有連接,因為普通局部變量是位于堆棧中,連 接器不知道它們;2)存儲區(qū)域不同:前 者存放于靜態(tài)存儲區(qū),后者存放于棧中;3)生命期不同:前者 是整個程序的生命期,后者是所在函數(shù)的生命期 (即隨它所在的函數(shù)調用的結束而結束;4)初始化:前者只在函數(shù)第一 次被調用時初始化,當次調用時的變量值會保存 到下次調用時使用,也就只初始化一次;后者則 是在每次調用函數(shù)時都要重新創(chuàng)立它的存儲空 間,重新初始化一次,即調用一次函數(shù)初始化一 次。2、Windows 操作系統(tǒng)中進程是基本執(zhí)行單位。 答:錯,在 Windows 中,線程是基本執(zhí)行單位 , 進程是一個容納線程的容器。進程是線程的資源 分配單元3、在棧
11、上分配內存和在堆上分配內存,效率 是一樣的 答:堆的效率要低,堆是應用程序在運行的時候 請求操作系統(tǒng)分配給自己內存,由于從操作系統(tǒng) 管理的內存分配,因此在分配和銷毀時都要占用 時間,因此用堆的效率非常低 . 可是堆的優(yōu)點在 于,編譯器不必知道要從堆里分配多少存儲空 不必知道存儲的數(shù)據(jù)要在堆里停留多長的 因此,用堆保存數(shù)據(jù)時會得到更大的靈活 4、 Sizeof 屬于 C+ 內置函數(shù)間,也 時間, 性。答:錯誤 sizeof ()是一個操作符,不是函數(shù), 在第一題中 sizeof 的值是 14,因為它不是運 定因此 行時確5、 構造函數(shù)只能定義為 public, 不能為protected 或 pr
12、ivate. 答:錯誤,如果你不想讓外面的用戶直接構造個類(假設這個類的名字為A)的對象,而希望用戶只能構造這個類 A 的 子類,那你就能夠 將類 A 的構造函數(shù) / 析構函數(shù)聲明為 protected, 而 將類 A 的子類的構造函數(shù) / 析構函數(shù)聲明為 public o如果將構造函數(shù) / 析構函數(shù)聲明為 private, 那只 能 這個類的“內部”的函數(shù)才能構造這個類的對象了。這里所說的“內部”是指類的成員函數(shù)。因為在外部不能定義對象,因此不能經過對象調用成員函數(shù),如果想要調用成員函數(shù)的話,能夠將成員函數(shù)定義為靜態(tài),然后經過類的:操作符調用, A& ra = A:Instance(
13、);ra.Print(); 即可6、C的qsort與C+的std:sort均采用快速 排 序,但 C效率高于 C+,故qsort的效率高 答: 錯,與編譯系統(tǒng)有關7、用new 份配的內存如果用delete釋放,結果是一定會內存泄露。答:錯誤,在林銳的C+高質量編程中提到 如果用new創(chuàng)立對象數(shù)組,那么只能使用對象的無參數(shù)構造函數(shù)。例如Obj objects = new Obj100; / 創(chuàng)立 100 個動 態(tài) 對象不能寫成 Obj 八objects = new Obj100(l);倉J立 1 00個動態(tài)對象的同時賦初值 1在用 delete 釋放對象數(shù)組時,留意不要 丟 了符號 '
14、。例如delete objects; / 正確的用法delete objects; / 錯誤的用法后者相當于 delete objects0, 漏掉了另 外99個對象。而如果我們只是 int *p = new intl;則用 deledte 刪除的時候就能夠釋放 p 指向的內 存,不會造成內存泄露8、全局對象及靜態(tài)對象均在main 函數(shù)執(zhí)行之 前構造。對三、 1 > unresolved extrenal Symbol 是什么錯誤? 原因是什么?不確定的外部“符號”,產生這個錯誤的原因 :如果連接程序不能在所有的庫和目標文件內找到所引用的函數(shù)、變量或標簽,將產生此錯誤消 息。一般來說,發(fā)
15、生錯誤的原因有兩個:一是所引用的函數(shù)、變量不存在、拼寫不正確或者使用 錯誤;其次可能使用了不同版本的連接庫。2、線程死鎖發(fā)生的原因?要防止死鎖在 多線程編程中我們要注意什么?3、什么叫哈希算法?有什么應用?為 進 據(jù) 空4、列 舉 Windows 中進程注入的方式。 了對內存中的某個進程進行操作,而且獲得該 程地址空間里的數(shù)據(jù),或者修改進程的私有數(shù) 結構,必須將自己的代碼放在目標進程的地址 間里運行,這時就避免不了使用進程注入方法 了。進程注入的方法分類如下:帶 DLL 的注入利用注冊表注入 利用 Windows Hooks 注入 利用遠程線程注入 利用特洛伊 DLL 注入 不帶 DLL 的注
16、入直接將代碼寫入目標進程,并啟動遠程線程5、請從程序機制上解釋緩沖區(qū)溢出攻擊原理。當一個超長的數(shù)據(jù)進入到緩沖區(qū)時,超出部分就 會被寫入其它緩沖區(qū),其它緩沖區(qū)存放的可能是 數(shù)據(jù)、下一條指令的指針,或者是其它程序的輸 出內容,這些內容都被覆蓋或者破壞掉。可見一 小部分數(shù)據(jù)或者一套指令的溢出就可能導致一 個 程序或者 * 作系統(tǒng)崩潰。緩沖區(qū)溢出是當前導致“黑客”型病毒橫行的主 要原因。從紅色代碼到 Slammer, 再到日前爆發(fā) 的 “沖擊波 " ,都是利用緩沖區(qū)溢出漏洞的典型。 緩 沖區(qū)溢出是一個編程問題,防止利用緩沖區(qū)溢 出 發(fā)起的攻擊,關鍵在于程序開發(fā)者在開發(fā)程序 時 仔細檢查溢出情
17、況,不允許數(shù)據(jù)溢出緩沖區(qū)。 另 外,用戶需要經常登錄 * 作系統(tǒng)和應用程序提 供商 的網站,跟蹤公布的系統(tǒng)漏洞,及時下載補 丁程 序,彌補系統(tǒng)漏洞6、簡述 copy-on-write 機制及應用。 簡單來說,在復制一個對象時并不是真的在內存 中把原來對象的數(shù)據(jù)復制一份到另外一個地址, 而是在新對象的內存映射表中指向同原對象相 同 的位置,而且把那塊內存的 Copy-On-Write 位設為 lo 在對這個對象執(zhí)行讀操作的時候,內 存數(shù)據(jù)沒 有變動,直接執(zhí)行就能夠。在寫的時候 , 才真正將 原始對象復制一份到新的地址,修改新 對象的內 存映射表到這個新的位置,然后往這里 寫。 這個技術需要跟虛擬
18、內存和分頁同時使用,其好 處是在復制對象的時候因為并不是真的復制,而 只是建了一個“指針”,因而大大提高性能。但 這并不是一直成立的,前提是在復制新對象之 后,進行的寫操作只是在一小部分的內存分頁 上,大部分分頁不會用到或者只是讀取。不然會 產生大量的分頁錯誤,得不償失。作用是提高內存的使用率和共享率,在線程同 步,遲緩寫入等方面都有應用7、解釋函數(shù)聲明中三個 const 作用。Template<class T>void Fun(const T* const &p)const;四、編程題1、以下函數(shù)把傳入的兩個整數(shù)值存到一個 Buffer 里,完成函數(shù)實現(xiàn)。Bool StroredDataToBuffer(int a,int b,char *pBuffer,unsigned int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 痛風關節(jié)考試題及答案
- 強制清算的清算方案
- 2026版《全品高考》選考復習方案生物813 實驗專題5 實驗方案的補充完善以及實驗方案的評價與修訂含答案
- 美食體驗館餐飲合伙經營合同
- 企業(yè)商務禮儀培訓課件
- 卷煙批發(fā)企業(yè)招商方案
- 農業(yè)公司避稅措施方案
- 藥廠氣體泄露處理方案
- 宜興鋼材銷售方案
- 物業(yè)服務方案文庫
- 人工智能算法的倫理規(guī)制研究
- 變電所設備更換申請報告
- 學習2025年全國教育工作會議精神解讀
- 福建省寧德市2024-2025學年八年級上學期期末考試數(shù)學試題
- 三二一人民調解員培訓講稿
- 中醫(yī)基礎學題庫(附答案)
- 初級中式面點師培訓教學大綱和教學計劃
- 銀行外包人員培訓課件
- 四級人工智能訓練師(中級)職業(yè)技能等級認定考試題及答案
- 典型單級離心泵拆裝項目要求和評分標準
- 數(shù)控銑床編程與操作項目教程 第4版 課件 項目三 孔加工 任務四 鏜孔
評論
0/150
提交評論