《经典C面试真题精讲》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:李亚锋编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302259466
  • 页数:226 页
图书介绍:本书以上百家国际知名IT企业的C语言面试、笔试题为研究对象,深入分析这些典型C面试、笔试题出题意图及解题方法。

第0章 笔试题自测 1

第1章 灵魂——指针 5

1.1 指针与字符串 5

1.1.1 知识点题型 5

101 p++ 5

102 打印内存地址 7

103 sprintf()与snprintf() 7

104 指针常量与常量指针 8

105 字符与字符串 9

106 指针变量与普通变量 10

107 指针运算 11

108 “%-10.5s” 11

1.1.2 综合题型 12

109 字符串复制 12

110 统计字符个数 14

1.2 指针与数组 16

1.2.1 知识点题型 16

111 一维数组与指针 16

112 数组中strlen与sizeof的区别 16

113 多维数组 17

114 数组作为参数传递给函数 19

115 char(*(*x())[5])()与typedef 19

1.2.2 综合题型 20

116 编程求较大数的阶乘 20

117 字符旋转 22

1.2.3 数组总结 25

1.3 指针与结构体 26

1.3.1 知识点题型 26

118 __attribute__((__packed__))含义 26

119 union与struct类型区别 28

1.3.2 综合题型 29

120 Little-endian与Big-endian 29

1.3.3 结构体总结 30

1.4 本章总结 31

第2章 数据存储——内存 32

2.1 数据类型的存储 32

2.1.1 知识点题型 33

201 char*a[3][4]占内存大小 33

202 int*p[M]与int(*p)[M] 33

203 数组元素指针与数组元素大小的计算 33

204 #define与typedef区别 34

205 sizeof(p) 35

206 关键字“static”修饰变量与函数 36

207 char不等于signed char 36

208 unsigned类型值与0的关系 37

209 不同数据类型的赋值 38

2.1.2 综合题型 39

210 验证C语言内存分配 39

2.2 内存相关的bug 41

2.2.1 知识点题型 41

211 返回栈地址 41

212 未初始化与内存访问越界 41

213 使用已释放的内存 42

214 数组越界 43

215 内存泄漏之内存释放顺序 43

216 内存泄漏之重新赋值 44

217 内存泄漏之谨慎使用函数返回值 45

218 内存泄漏之退出函数路径 47

2.2.2 综合题型 48

219 时间GeneralizedTime编码格式 48

220 浮点数的存储格式 49

221 实现小应用——万年历 51

2.3 本章总结 54

第3章 程序的思想——算法 56

3.1 基本数据结构 56

3.1.1 知识点题型 56

301 栈-迷宫问题 56

302 队列——旅行家的预算 62

303 链表——约瑟夫问题 69

304 二叉树遍历 71

305 Modbus CRC 72

3.1.2 综合题型 74

306 汉诺塔问题 74

307 找符合规则的数 77

3.2 查找与排序 78

3.2.1 查找 78

308 二分法查找 78

309 Hash查找 80

3.2.2 排序 83

310 选择排序 83

311 冒泡排序 84

312 插入排序 86

313 快速排序 87

3.3 综合试题 90

314 Colored Cubes 90

3.4 本章总结 95

第4章 程序的基本单位——函数 97

4.1 自定义函数 97

4.1.1 知识点题型 97

401 函数声明与定义 97

402 十六进制转十进制 99

403 函数纠错 101

404 找出子串的个数 102

405 指针函数与函数指针 103

406 回调函数 104

407 可变参数函数 106

408 函数调用 108

409 内联(inline)函数 110

410 main()函数的命令行参数 112

4.1.2 综合题型 114

411 hexdump()函数 114

412 Sequence of Function Execution 115

4.2 库函数 116

4.2.1 知识点题型 117

413 调试相关的宏 117

414 大小写字母的转换 117

415 文件操作 119

416 数学库 122

4.2.2 综合题型 123

417 All Combinations of a Word 123

4.2.3 库函数总结 128

4.3 本章总结 128

第5章 数据的传递——网络 130

5.1 网络基础 130

5.1.1 知识点题型 130

501 网络字节序 130

502 IP地址转换 131

503 设计数据报文头结构 133

504 IP头校验和 135

5.1.2 综合题型 137

505 RC4 Algorithm 137

506 解析URL 141

5.2 Linux Socket编程 143

5.2.1 TCP Socket APIs 143

5.2.2 UDP Socket APIs 146

5.2.3 典型试题 148

507 实现简单ping命令 148

508 实现HTTP GET 156

509 Blocking和Non-blocking 160

510 select()函数用法 161

511 fork()与pthread_create() 166

5.3 综合试题 170

512 SYN洪流攻击 170

5.4 本章总结 179

第6章 专用的计算机系统——嵌入式 181

6.1 嵌入式编程基础 181

601 对寄存器的位操作 181

602 register关键字 182

603*(volatile unsigned long*)0xfff40080; 183

604 #ifdef、#if、#if defined和#ifndef 183

605 -1在内存中的表示 184

606 找出重复的数 185

607 #define中的“##”与“#” 186

608 计算一个整数中含1的比特数 187

609 递归计算 188

610 数值溢出运算 189

611 定义boolean类型 189

612 for()、while()与do{}while() 189

613 位域应用 190

614 break与continue的区别 191

615 指针偏移计算 193

616 判断链表是否存在环 194

617 const与指针 196

618 指向绝对地址执行 196

619 同名变量(全局变量与局部变量) 197

620 gets()与fgets() 198

621 头文件重复引用 199

6.2 可移植性 200

622 u8、u16、u32和u64 200

623 条件编译 200

624 转义字符问题 202

625 提高可移植性常见技巧 203

6.3 代码优化 203

626 i--与i<10 203

627 switch代替if…else 204

628 代码优化的常见技巧 205

6.4 综合试题 205

629 模拟Modbus协议 205

6.5 本章总结 209

第7章 终结语 211

7.1 编程习惯 211

7.2 Bug案例 214

7.3 学习技巧 217

7.4 本章总结 220

附录A ASCII码表 221

附录B C语言运算符优先级 223

附录C 标准C头文件 225

参考文献 226