词条 | 程序员求职成功路 |
释义 | 内容简介本书共分三部分。技术篇讲解了程序设计中最通用的技术问题,包括c/c++、数据结构与算法、程序活动记录、内存分配与管理、程序调试、程序测试、多线程编程、进程通信等;开发篇介绍了程序设计的各个领域,包括网络编程、数据库编程、内核编程、界面编程等;求职篇介绍了如何准备面试,发挥自己的正常水平,并通过实际的面试经验为大家揭开大公司面试过程的神秘面纱,也探讨了程序员的软实力培养与职业发展规划。 本书适合计算机专业的在校学生及正在寻找工作的应届毕业生,也适合在职软件开发人员、编程技术爱好者以及更换工作屡败屡战者。 作译者介绍周扬荣,男,四川人,生于1980年2月,毕业于中国科学院研究生院软件研究所。曾就职于北京大学计算机研究所信息安全工程中心,从事计算机犯罪取证与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 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。