C和C++程式設計師面試秘笈

C和C++程式設計師面試秘笈

眾多高級語言都從C/C++有所借鑑,所以說C/C++的語言基礎對從事軟體開發的人員來說非常重要。 《C和C++程式設計師面試秘笈》是一本解析C/C++面試題的書,可以幫助求職者更好地準備面試。《C和C++程式設計師面試秘笈》共包含12章,囊括了目前企業中常見的面試題類型和考點,包括C/C++程式基礎,預處理、const、static與sizeof,引用和指針,字元串,位運算與嵌入式編程,C++面向對象,C++繼承和多態,數據結構,排序,泛型編程,STL,算法和邏輯思維等最常見的面試題。《C和C++程式設計師面試秘笈》通過技術點解析、代碼輔佐的方式讓讀者能深刻領會每個考點背後的技術。 《C和C++程式設計師面試秘笈》緊扣面試精髓,對各種技術的剖析一針見血,是目前想找工作的C/C++程式設計師和剛畢業的大學生的面試寶典。

基本介紹

內容簡介

· 緊扣面試精髓,一冊在手,工作不愁
· 提供最全的C/C++面試題分類,幫你找到好工作
· 涵蓋經典的筆試題+上機題,幫你整理知識庫
· 解析考題的要點和技術原理,幫你溫故而知新

作者簡介

董山海,軟體公司高級工程師,程式媛,2004年畢業於杭州電子科技大學,長期從事軟體開發與設計工作,主要熟悉C、C++等程式開發語言。作者有10年的C++和C語言實際項目開發經驗,參加過多個大型項目的開發,非常了解項目開發的過程,並對C++遊戲開發中需要注意的問題有獨特的見解。

專業推薦

媒體推薦

面試技術人員,不是看他有多深多尖端的技術,而是看他的基礎是否紮實,是否有團隊精神,是否具備可塑能力,是否有奉獻精神,大企業缺少的不是技術人員,是綜合素質人才。本書的講解形式很好,沒有僅僅停留在技術的表面,而是通過原理、技巧和經驗等手段,讓讀者置身於面試實戰中,體會更多技術背後的東西。
—— 世界500強企業HR總監 潘新民
我在工作中接觸了大量的技術公司和技術人員,他們都有對技術的滿腔熱愛。回憶之前面試的經歷,他們都有一個相同的總結:技術基礎決定上層建築。本書給出了史上最全的C/C++面試題,讓讀者可以檢驗自己的所學,也可以在短期內增長自己的所學。只有打好這些基礎,技術或個人才有更好的未來。
—— 北京軟交所產品總監 靳華
C/C++基本上是所有語言的基礎,是學習的重中之重,本書的面試題如果都能做會,那放在任何一個開發崗位上,你都可以成功。任何平台的任何語言,都離不開本書的這些基礎,做會面試題的同時,一定也要掌握它們之所以這么做的原理。
—— 重慶南天數據資訊高級工程師 王浩

名人推薦

面試技術人員,不是看他有多深多尖端的技術,而是看他的基礎是否紮實,是否有團隊精神,是否具備可塑能力,是否有奉獻精神,大企業缺少的不是技術人員,是綜合素質人才。本書的講解形式很好,沒有僅僅停留在技術的表面,而是通過原理、技巧和經驗等手段,讓讀者置身於面試實戰中,體會更多技術背後的東西。
——世界500強企業HR總監潘新民
我在工作中接觸了大量的技術公司和技術人員,他們都有對技術的滿腔熱愛。回憶之前面試的經歷,他們都有一個相同的總結:技術基礎決定上層建築。本書給出了史上最全的C/C++面試題,讓讀者可以檢驗自己的所學,也可以在短期內增長自己的所學。只有打好這些基礎,技術或個人才有更好的未來。
——北京軟交所產品總監靳華
C/C++基本上是所有語言的基礎,是學習的重中之重,本書的面試題如果都能做會,那放在任何一個開發崗位上,你都可以成功。任何平台的任何語言,都離不開本書的這些基礎,做會面試題的同時,一定也要掌握它們之所以這么做的原理。
——重慶南天數據資訊高級工程師王浩

圖書目錄

第1章 C/C++程式基礎 1
面試題1 看代碼寫輸出——一般賦值語句 1
面試題2 看代碼寫輸出——C++域操作符 3
面試題3 看代碼寫輸出——i++和++i的區別 4
面試題4 i++與++i哪個效率更高 6
面試題5 選擇編程風格良好的條件比較語句 7
面試題6 看代碼寫結果——有符號變數與無符號變數的值的轉換 9
面試題7 不使用任何中間變數如何將a、b的值進行交換 10
面試題8 C++與C有什麼不同 12
面試題9 如何理解C++是面向對象化的,而C是面向過程化的 13
面試題10 標準頭檔案的結構 13
面試題11 #include 和#include"head.h"有什麼區別 15
面試題12 C++中main函式執行完後還執行其他語句嗎 15
第2章 預處理、const、static與sizeof 17
面試題1 預處理的使用 17
面試題2 用#define實現宏並求最大值和最小值 19
面試題3 宏定義的使用 20
面試題4 看代碼寫輸出——宏參數的連線 21
面試題5 用宏定義得到一個字的高位和低位位元組 21
面試題6 用宏定義得到一個數組所含的元素個數 22
面試題7 找錯——const的使用 23
面試題8 說明const與#define的特點及區別 24
面試題9 C++中const有什麼作用(至少說出3個) 25
面試題10 static有什麼作用(至少說出2個) 25
面試題11 static全局變數與普通的全局變數有什麼區別 26
面試題12 看代碼寫結果——C++類的靜態成員 27
面試題13 使用sizeof計算普通變數所占空間大小 29
面試題14 使用sizeof計算類對象所占空間大小 30
面試題15 使用sizeof計算含有虛函式的類對象的空間大小 33
面試題16 使用sizeof計算虛擬繼承的類對象的空間大小 35
面試題18 sizeof與strlen有哪些區別 37
面試題19 sizeof有哪些用途 38
面試題20 找錯——使用strlen()函式代替sizeof計算字元串長度 38
面試題21 使用sizeof計算聯合體的大小 40
面試題22 #pragmapack的作用 42
面試題23 為什麼要引入內聯函式 43
面試題24 為什麼inline能很好地取代表達式形式的預定義 43
面試題25 說明內聯函式使用的場合 44
面試題26 為什麼不把所有的函式都定義成內聯函式 45
面試題27 內聯函式與宏有什麼區別 45
第3章 引用和指針 47
面試題1 一般變數引用 47
面試題2 指針變數引用 49
面試題3 看代碼找錯誤——變數引用 50
面試題4 如何交換兩個字元串 51
面試題5 程式查錯——參數引用 52
面試題6 參數引用的常見錯誤 54
面試題7 指針和引用有什麼區別 55
面試題8 為什麼傳引用比傳指針安全 56
面試題9 複雜指針的聲明 57
面試題10 看代碼寫結果——用指針賦值 59
面試題11 指針加減操作 60
面試題12 指針比較 61
面試題13 看代碼找錯誤——記憶體訪問違規 62
面試題14 指針的隱式轉換 63
面試題15 指針常量與常量指針的區別 64
面試題16 指針的區別 65
面試題17 找錯——常量指針和指針常量的作用 66
面試題18 this指針的正確敘述 67
面試題19 看代碼寫結果——this指針 68
面試題20 指針數組與數組指針的區別 69
面試題21 找錯——指針數組和數組指針的使用 71
面試題22 函式指針與指針函式的區別 72
面試題23 數組指針與函式指針的定義 74
面試題24 各種指針的定義 75
面試題25 代碼改錯——函式指針的使用 75
面試題26 看代碼寫結果——函式指針的使用 77
面試題27 typedef用於函式指針定義 78
面試題28 什麼是“野指針” 78
面試題29 看代碼查錯——“野指針”的危害 79
面試題30 有了malloc/free,為什麼還要new/delete 80
面試題31 程式改錯——指針的初始化 81
面試題32 各種記憶體分配和釋放的函式的聯繫和區別 85
面試題33 程式找錯——動態記憶體的傳遞 86
面試題34 動態記憶體的傳遞 88
面試題35 比較分析兩個代碼段的輸出——動態記憶體的傳遞 90
面試題36 程式查錯——“野指針”用於變數值的互換 92
面試題37 記憶體的分配方式有幾種 92
面試題38 什麼是句柄 93
面試題39 指針與句柄有什麼區別 94
第4章 字元串 96
面試題1 使用庫函式將數字轉換為字元串 96
面試題2 不使用庫函式將整數轉換為字元串 98
面試題3 使用庫函式將字元串轉換為數字 100
面試題4 不使用庫函式將字元串轉換為數字 101
面試題5 編程實現strcpy函式 102
面試題6 編程實現memcpy函式 104
面試題7 strcpy與memcpy的區別 105
面試題8 改錯——數組越界 105
面試題9 分析程式——數組越界 107
面試題10 分析程式——列印操作可能產生數組越界 108
面試題11 編程實現計算字元串的長度 108
面試題12 編程實現字元串中子串的查找 110
面試題13 編程實現字元串中各單詞的翻轉 111
面試題14 編程判斷字元串是否為回文 113
面試題15 編程實現stcmp庫函式 115
面試題16 編程查找兩個字元串的最大公共子串 116
面試題17 不使用printf,將十進制數以二進制和十六進制的形式輸出 118
面試題18 編程實現轉換字元串、插入字元的個數 120
面試題19 字元串編碼例題 121
面試題20 反轉字元串,但其指定的子串不反轉 124
面試題21 編寫字元串反轉函式strrev 126
面試題22 編程實現任意長度的兩個正整數相加 129
面試題23 編程實現字元串的循環右移 131
面試題24 刪除指定長度的字元 132
面試題25 字元串的排序及交換 134
面試題26 編程實現刪除字元串中所有指定的字元 135
面試題27 分析代碼——使用strcat連線字元串 137
面試題28 編程實現庫函式strcat 138
面試題29 編程計算含有漢字的字元串長度 139
面試題30 找出01字元串中0和1連續出現的最大次數 140
面試題31 編程實現字元串的替換 142
第5章 位運算與嵌入式編程 144
面試題1 位制轉換 144
面試題2 看代碼寫出結果——位運算 146
面試題3 設定或清除特定的位 147
面試題4 計算一個位元組里有多少bit被置1 148
面試題5 位運算改錯 149
面試題6 運用位運算交換a、b兩數 150
面試題7 列舉並解釋C++中的4種運算符轉化以及它們的不同點 151
面試題8 用#define聲明一個常數 152
面試題9 如何用C語言編寫死循環 152
面試題10 如何訪問特定位置的記憶體 153
面試題11 對中斷服務代碼的評論 154
面試題12 看代碼寫結果——整數的自動轉換 154
面試題13 關鍵字static的作用是什麼 155
面試題14 關鍵字volatile有什麼含義 156
面試題15 判斷處理器是Big_endian還是Little_endian 156
面試題16 評價代碼片斷——處理器字長 157
第6章 C++面向對象 159
面試題1 描述面向對象技術的基本概念 159
面試題2 判斷題——類的基本概念 160
面試題3 選擇題——C++與C語言相比的改進 161
面試題4 class和struct有什麼區別 161
面試題5 改錯——C++類對象的聲明 165
面試題6 看代碼寫結果——C++類成員的訪問 165
面試題7 找錯——類成員的初始化 166
面試題8 看代碼寫結果——靜態成員變數的使用 167
面試題9 與全局對象相比,使用靜態數據成員有什麼優勢 169
面試題10 有哪幾種情況只能用intializationlist,而不能用assignment 169
面試題11 靜態成員的錯誤使用 171
面試題12 對靜態數據成員的正確描述 173
面試題13 main函式執行前還會執行什麼代碼 173
面試題14 C++中的空類默認會產生哪些類成員函式 174
面試題15 構造函式和析構函式是否可以被重載 175
面試題16 關於重載構造函式的調用 175
面試題17 構造函式的使用 176
面試題18 構造函式explicit與普通構造函式的區別 178
面試題19 explicit構造函式的作用 179
面試題20 C++中虛析構函式的作用是什麼 180
面試題21 看代碼寫結果——析構函式的執行順序 182
面試題22 複製構造函式是什麼?什麼是深複製和淺複製 183
面試題23 編譯器與默認的copyconstructor 187
面試題24 寫一個繼承類的複製函式 187
面試題25 複製構造函式與賦值函式有什麼區別 188
面試題26 編寫類String的構造函式、析構函式和賦值函式 189
面試題27 了解C++類各成員函式的關係 192
面試題28 C++類的臨時對象 193
面試題29 複製構造函式和析構函式 196
面試題30 看代碼寫結果——C++靜態成員和臨時對象 198
面試題31 什麼是臨時對象?臨時對象在什麼情況下產生 200
面試題32 為什麼C語言不支持函式重載而C++能支持 202
面試題33 判斷題——函式重載的正確聲明 204
面試題34 重載和覆寫有什麼區別 205
面試題35 編程題——MyString類的編寫 206
面試題36 編程題——各類運算符重載函式的編寫 209
面試題37 看代碼寫輸出——new操作符重載的使用 214
第7章 C++繼承和多態 216
面試題1 C++類繼承的三種關係 217
面試題2 C++繼承關係 219
面試題3 看代碼找錯——C++繼承 221
面試題4 私有繼承有什麼作用 222
面試題5 私有繼承和組合有什麼相同點和不同點 223
面試題6 什麼是多態 226
面試題7 虛函式是怎么實現的 228
面試題8 構造函式調用虛函式 229
面試題9 看代碼寫結果——虛函式的作用 230
面試題10 看代碼寫結果——虛函式 232
面試題11 虛函式相關的選擇題 234
面試題12 為什麼需要多重繼承?它的優缺點是什麼 235
面試題13 多重繼承中的二義性 238
面試題14 多重繼承二義性的消除 239
面試題15 多重繼承和虛擬繼承 240
面試題16 為什麼要引入抽象基類和純虛函式 242
面試題17 虛函式與純虛函式有什麼區別 244
面試題18 程式找錯——抽象類不能實例化 244
面試題19 套用題——用面向對象的方法進行設計 245
面試題20 什麼是COM 248
面試題21 COM組件有什麼特點 249
面試題22 如何理解COM對象和接口 250
面試題23 簡述COM、ActiveX和DCOM 251
面試題24 什麼是DLLHELL 252
第8章 數據結構 259
面試題1 編程實現一個單鍊表的建立 260
面試題2 編程實現一個單鍊表的測長 261
面試題3 編程實現一個單鍊表的列印 262
面試題4 編程實現一個單鍊表節點的查找 263
面試題5 編程實現一個單鍊表節點的插入 264
面試題6 編程實現一個單鍊表節點的刪除 264
面試題7 實現一個單鍊表的逆置 266
面試題8 尋找單鍊表的中間元素 267
面試題9 單鍊表的正向排序 267
面試題10 判斷鍊表是否存在環型鍊表問題 269
面試題11 有序單鍊表的合併 270
面試題12 約瑟夫問題的解答 273
面試題13 編程實現一個雙向鍊表的建立 275
面試題14 編程實現一個雙向鍊表的測長 277
面試題15 編程實現一個雙向鍊表的列印 277
面試題16 編程實現一個雙向鍊表節點的查找 278
面試題17 編程實現一個雙向鍊表節點的插入 279
面試題18 編程實現一個雙向鍊表節點的刪除 279
面試題19 實現有序雙向循環鍊表的插入操作 280
面試題20 刪除兩個雙向循環鍊表的相同結點 283
面試題21 編程實現佇列的入隊、出隊、測長、列印 287
面試題22 佇列和棧有什麼區別 291
面試題23 簡答題——佇列和棧的使用 292
面試題24 選擇題——佇列和棧的區別 292
面試題25 使用佇列實現棧 293
面試題26 選擇題——棧的使用 297
面試題27 用C++實現一個二叉排序樹 298
面試題28 使用遞歸與非遞歸方法實現中序遍歷 305
面試題29 使用遞歸與非遞歸方法實現先序遍歷 306
面試題30 使用遞歸與非遞歸方法實現後序遍歷 308
面試題31 編寫層次遍歷二叉樹的算法 310
面試題32 編寫判別給定二叉樹是否為二叉排序樹的算法 312
第9章 排序 314
面試題1 編程實現直接插入排序 314
面試題2 編程實現希爾(Shell)排序 317
面試題3 編程實現冒泡排序 319
面試題4 編程實現快速排序 322
面試題5 編程實現選擇排序 324
面試題6 編程實現堆排序 326
面試題7 實現歸併排序的算法(使用自頂向下的方法) 329
面試題8 使用基數排序對整數進行排序 332
面試題9 選擇題——各排序算法速度的性能比較 335
面試題10 各排序算法的時間複雜度的比較 336
第10章 泛型編程 338
面試題1 舉例說明什麼是泛型編程 338
面試題2 函式模板與類模板分別是什麼 340
面試題3 使用模板有什麼缺點?如何避免 343
面試題4 選擇題——類模板的實例化 345
面試題5 解釋什麼是模板的特化 346
面試題6 部分模板特例化和全部模板特例化有什麼區別 348
面試題7 使用函式模板對普通函式進行泛型化 349
面試題8 使用類模板對類進行泛型化 351
面試題9 通過類模板設計符合要求的公共類 352
第11章 STL(標準模板庫) 355
面試題1 什麼是STL 356
面試題2 具體說明STL如何實現vector 358
面試題3 看代碼回答問題——vector容器中iterator的使用 360
面試題4 看代碼找錯——vector容器的使用 361
面試題5 把一個檔案中的整數排序後輸出到另一個檔案中 363
面試題6 list和vector有什麼區別 365
面試題7 分析代碼問題並修正——list和vector容器的使用 366
面試題8 stl::deque是一種什麼數據類型 368
面試題9 在做套用時如何選擇vector和deque 369
面試題10 看代碼找錯——適配器stack和queue的使用 370
面試題11 舉例說明set的用法 372
面試題12 舉例說明map的用法 373
面試題13 STL中map內部是怎么實現的 374
面試題14 map和hashmap有什麼區別 375
面試題15 什麼是STL算法 375
面試題16 分析代碼功能——STL算法的使用 377
面試題17 vector中的erase方法與algorithm中的remove有什麼區別 378
面試題18 什麼是auto_ptr(STL智慧型指針)?如何使用 380
面試題19 看代碼找錯——智慧型指針auto_ptr的使用 382
面試題20 智慧型指針如何實現 382
面試題21 使用std::auto_ptr有什麼方面的限制 385
面試題22 如何理解函式對象 386
面試題23 如何使用bind1st和bind2nd 388
面試題24 實現bind1st的函式配接器 389
第12章 智力測試題 392
面試題1 元帥領兵 393
面試題2 兩龜賽跑 393
面試題3 電視機的價格 394
面試題4 這塊石頭究竟有多重 395
面試題5 四兄弟的年齡 396
面試題6 爬樓梯 396
面試題7 3隻砝碼稱東西 397
面試題8 稱米 398
面試題9 比薩餅交易 399
面試題10 伊沙貝拉時裝精品屋 399
面試題11 燒繩子的時間計算問題 400
面試題12 給工人的金條 401
面試題13 被污染的藥丸 401
面試題14 稱量罐頭 402
面試題15 有20元錢可以喝到幾瓶汽水 403
面試題16 判斷鳥的飛行距離 404
面試題17 按勞取酬 405
面試題18 空姐分配物品 405
面試題19 消失的1元錢 406
面試題20 分物品 407
面試題21 稱出4升的水 408
面試題22 通向誠實國和說謊國的路 409
面試題23 排序問題 410
面試題24 兩個同一顏色的果凍 411
面試題25 怎樣稱才能用3次就找到球 412
面試題26 計算生日是哪一天 414
面試題27 3個女兒的年齡 416
面試題28 取回黑襪和白襪 417
面試題29 誰先擊完40下滑鼠 418
面試題30 聰明人是怎樣發財的 419
面試題31 誰打碎了花瓶 419
面試題32 大有作為 421
面試題33 宴會桌旁 422
面試題34 過橋問題 424
面試題35 一句不可信的話 425
面試題36 海盜分寶石 426
面試題37 如何推算有幾條病狗 427
面試題38 判斷誰是盜竊犯 428
面試題39 嚮導 429
面試題40 撲克牌問題 431
面試題41 誰是機械師 432
面試題42 帽子的顏色 433
面試題43 兩個大於1小於10的整數 434
面試題44 誰用1美元的紙幣付了糖果錢 437
面試題45 究竟有哪些人參加了會議 441
面試題46 小蟲 442
面試題47 相遇 443
面試題48 約會 444
面試題49 30秒答題 445
面試題50 1分鐘答題 446
面試題51 現代斯芬克斯之謎 447
面試題52 所有開著的燈的編號 448

相關詞條

熱門詞條

聯絡我們