程式設計師求職成功路

程式設計師求職成功路

《程式設計師求職成功路》作者是周揚榮,本書共分三部分。技術篇講解了程式設計中最通用的技術問題,包括c/c++、數據結構與算法、程式活動記錄、記憶體分配與管理、程式調試、程式測試、多執行緒編程、進程通信等;

內容簡介

本書共分三部分。技術篇講解了程式設計中最通用的技術問題,包括c/c++、數據結構與算法、程式活動記錄、記憶體分配與管理、程式調試、程式測試、多執行緒編程、進程通信等;開發篇介紹了程式設計的各個領域,包括網路編程、資料庫編程、核心編程、界面編程等;求職篇介紹了如何準備面試,發揮自己的正常水平,並通過實際的面試經驗為大家揭開大公司面試過程的神秘面紗,也探討了程式設計師的軟實力培養與職業發展規劃。

本書適合計算機專業的在校學生及正在尋找工作的應屆畢業生,也適合在職軟體開發人員、編程技術愛好者以及更換工作屢敗屢戰者。

作譯者介紹

周揚榮,男,四川人,畢業於中國科學院研究生院軟體研究所。曾就職於北京大學計算機研究所信息安全工程中心,從事計算機犯罪取證與Rootkit檢測研究與開發:Sun中國工程研究院,從事Solaris核心技術研究與開發;Comodo安全方案公司,從事Windows主機入侵防禦系統(HIPS)的研究與開發。現就職於奇虎360安全公司,從事Windows系統中主動防禦的研究與開發。業餘愛好包括旅遊、歷史、地理、古生物、宇宙學等。

編輯推薦

深入講解技術問題

系統介紹熱門領域

傳授實際面試經驗

探討職業發展規劃

目錄

出版說明

前言

上篇 技術

第1章 c語言 1

1.1 指針 2

1.2 位運算 15

1.3 運算符 19

1.4 數據對齊 21

1.5 實數 24

1.6 整數 26

1.6.1 編碼 26

1.6.2 存儲 27

1.7 字元 29

1.7.1 ascii與unicode 29

1.7.2 char與wchar_t 30

1.7.3 ansi_string與unicode_string 30

1.8 溢出 32

1.8.1 數組溢出 32

1.8.2 數溢出 33

1.8.3 緩衝區溢出 35

.1.8.4 棧溢出 36

1.8.5 指針溢出 36

1.9 雜項 38

1.9.1 變數 38

1.9.2 #pragma 39

1.9.3 位域 40

1.9.4 static 42

第2章 c++ 44

2.1 c++與c的區別 44

2.2 構造函式、析構函式和賦值函式 45

2.2.1 默認生成函式 46

2.2.2 構造函式實現 46

2.2.3 成員初始化方法 47

2.2.4 基類析構函式 49

2.2.5 賦值運算 50

2.3 繼承和多重繼承 52

2.3.1 模板與繼承的選擇 52

2.3.2 菱形繼承 52

2.4 多態與虛函式機制 54

2.4.1 什麼是多態 54

2.4.2 虛函式機制 55

2.4.3 virtual與inline 57

2.5 重載(重整)、重寫 59

2.5.1 重載 60

2.5.2 重寫 60

2.6 stl模板庫 63

2.6.1 vector 64

2.6.2 list 64

2.6.3 deque 65

2.6.4 set/multiset 65

2.6.5 map/multimap 66

2.6.6 stack 66

2.6.7 queue/priority_queue 67

2.6.8 算法 69

2.7 棧和佇列的c++實現 70

2.8 string類 72

2.9 寫時拷貝 73

2.10 智慧型指針 75

2.11 i++與++i 77

2.12 禁止或要求對象產生於堆中 79

第3章 數據結構與算法 81

3.1 算法設計步驟 81

3.2 字元串 86

3.2.1 實現strstr() 86

3.2.2 實現strtok() 88

3.2.3 實現strcpy() 89

3.2.4 實現strcmp() 90

3.2.5 實現tolower() 90

3.2.6 刪除特定字元或字元組 91

3.2.7 識別字元串中的單詞 91

3.2.8 逆置字元串 92

3.2.9 實現memcpy() 92

3.2.10 ip字元串與整數的轉化 93

3.2.11 將一組字元串排序 95

3.2.12 正則式匹配 95

3.3 鍊表 97

3.3.1 逆向鍊表 97

3.3.2 鍊表排序 98

3.3.3 棧和佇列的實現 98

3.3.4 鍊表合併與刪除 101

3.3.5 循環鍊表 103

3.3.6 找出倒數第m個元素 104

3.4 樹 105

3.4.1 樹的遍歷 106

3.4.2 二叉排序樹 109

3.4.3 平衡二叉排序樹 111

3.4.4 公共祖先 112

3.4.5 字典樹 115

3.5 數 117

3.5.1 最大公約數 117

3.5.2 字元串整數轉化 118

3.5.3 素數 119

3.5.4 字元串到實數轉換 120

3.5.5 因式分解 121

3.5.6 不用比較運算符,求兩個數中最大值 121

3.5.7 將一個整數分解為兩個數的和 121

3.6 數組 122

3.6.1 數組的使用 122

3.6.2 找出數組中第二小數 123

3.6.3 找出數組中的最大數和最小數(要求o (3/2n)) 124

3.6.4 找出數組中重複的數 124

3.6.5 刪除數組中重複的數(數組已經排好序) 125

3.6.6 用數組實現棧和佇列 126

3.6.7 求中位數 127

3.7 排序 128

3.7.1 插入排序 129

3.7.2 選擇排序 130

3.7.3 交換排序 132

3.7.4 歸併排序 133

3.7.5 基數排序 135

3.8 查找 136

3.8.1 折半查找 136

3.8.2 二叉排序樹查找 137

3.8.3 hash表查找 138

3.9 遞歸 139

3.9.1 遞歸的概念 139

3.9.2 遞歸與非遞歸轉化 140

3.9.3 遞歸的套用 142

3.10 算法設計關鍵 148

3.10.1 熟練使用循環語句 148

3.10.2 各種情形的完備考慮 149

3.10.3 嘗試用遞歸解決問題 150

第4章 程式活動記錄 151

4.1 記憶體空間 151

4.2 堆和棧的區別 152

4.3 函式調用規約 154

4.3.1 stdcall調用規約 155

4.3.2 cdecl調用規約 155

4.3.3 fastcall調用規約 155

4.3.4 thiscall調用規約 156

4.3.5 naked call調用規約 156

4.4 c語言活動記錄(棧幀) 156

第5章 記憶體分配與管理 162

5.1 記憶體分配 162

5.1.1 virtualalloc() 162

5.1.2 new/malloc() 162

5.1.3 檔案映射 163

5.1.4 分配比較 164

5.1.5 核心記憶體分配 165

5.2 記憶體管理 166

5.3 記憶體泄漏 166

第6章 程式調試 173

6.1 彙編基礎 173

6.1.1 基本概念 173

6.1.2 彙編版hello world程式 176

6.1.3 c代碼與彙編 178

6.1.4 64位彙編 182

6.2 調試方法 182

6.2.1 動態執行調試 183

6.2.2 事後靜態調試 183

6.2.3 列印調試信息 184

6.3 調試工具 185

6.3.1 vc 6.0 185

6.3.2 ollyice 188

6.3.3 windbg 191

6.3.4 gdb 206

6.4 轉儲檔案分析 212

6.4.1 windows轉儲檔案分析 212

6.4.2 solaris轉儲檔案分析 215

6.5 bug修復 216

第7章 程式測試 218

7.1 測試方法 218

7.1.1 基本方法 219

7.1.2 數據測試 219

7.1.3 記憶體泄漏檢測 220

7.2 測試階段 221

7.2.1 單元測試 222

7.2.2 集成測試 222

7.2.3 系統測試 222

7.2.4 驗收測試 223

7.2.5 回歸測試 223

7.2.6 alpha測試 223

7.2.7 beta測試 223

7.3 測試種類 224

7.3.1 黑盒測試 224

7.3.2 白盒測試 224

第8章 檔案讀寫 225

8.1 c語言檔案訪問 225

8.2 c++語言檔案訪問 228

8.3 vc檔案訪問 229

8.4 win32檔案訪問 229

8.5 核心檔案訪問 230

第9章 多執行緒編程 233

9.1 同步機制 234

9.1.1 臨界區 234

9.1.2 互斥量 235

9.1.3 信號量 237

9.1.4 事件 239

9.2 核心同步 240

第10章 進程通信 242

10.1 共享記憶體 242

10.2 管道 244

10.3 信號量 246

10.4 已分享檔案 247

10.5 訊息機制 248

中篇 開發

第11章 網路編程 251

11.1 網路協定 251

11.1.1 協定模型 251

11.1.2 常用協定 253

11.1.3 系統堆疊 256

11.2 tcp編程 258

11.3 udp編程 261

第12章 資料庫編程 263

12.1 sql語言基礎 263

12.2 資料庫連線 265

12.2.1 oracle資料庫 265

12.2.2 sql server資料庫 266

12.2.3 db2資料庫 266

12.2.4 informix資料庫 267

12.2.5 sybase資料庫 267

12.2.6 mysql資料庫 268

12.2.7 postgresql資料庫 268

12.3 sql語句執行 269

12.4 建立索引 270

12.5 存儲過程 272

12.5.1 存儲過程書寫格式 272

12.5.2 存儲過程的優點 273

12.5.3 存儲過程的缺點 273

第13章 核心編程 274

13.1 windows核心編程 274

13.1.1 irp(i/o request packet)結構 275

13.1.2 應用程式與核心驅動緩衝交換 276

13.1.3 ioctl控制 277

13.1.4 代碼結構 278

13.1.5 安裝測試 282

13.2 linux核心編程 283

13.2.1 代碼結構 283

13.2.2 安裝測試 286

第14章 界面編程 287

14.1 mfc界面開發 287

14.2 gtk界面開發 312

14.3 qt界面開發 314

第15章 搜尋引擎 318

15.1 系統架構 318

15.2 網路蜘蛛 320

15.2.1 什麼是網路蜘蛛 320

15.2.2 網路蜘蛛如何抓取網頁 321

15.3 網頁排序 324

15.4 中文分詞 324

15.5 開源引擎 325

下篇 求職

第16章 求職環節 326

16.1 請勿錯過實習 326

16.2 簡歷製作 327

16.2.1 簡歷的內容 328

16.2.2 製作簡歷的原則 329

16.2.3 簡歷實例 330

16.3 簡歷投遞 333

16.4 筆試 334

16.5 面試 335

16.6 offer選擇 339

16.7 如何通過試用期 341

16.8 如何避免被裁員 345

16.9 如何更換工作 346

16.10 如何談薪水 348

第17章 面試實戰 350

17.1 p研究所 350

17.2 m公司 351

17.3 s公司 358

17.4 b公司 360

第18章 程式設計師軟實力 363

18.1 團隊協作 363

18.2 交流溝通 365

18.3 全局視野 365

18.4 學習思考 366

18.5 職業素養 368

第19章 職業規劃 370

19.1 職業發展路線 370

19.1.1 發展路線規劃 370

19.1.2 筆者的發展路線 372

19.2 創業之路 374

附錄 376

附錄a 如何提高編程能力 376

附錄b c代碼風格 380

附錄c 推薦讀物 389

附錄d 推薦網站 390

參考文獻 391

相關詞條

熱門詞條

聯絡我們