《程序员面试笔试宝典 第3版》针对当前各大IT企业面试笔试中常见的问题以及注意事项,进行了深层次地分析。本书除了对传统的计算机相关知识(C/C++、数据结构与算法、操作系统等)进行介绍外,还根据当前计算机技术的发展潮流,对面试笔试中常见的海量数据处理进行了详细地分析。同时,为了更具说服力,本书对面试过程中求职者存在的问题进行了深度剖析,总结提炼了大量程序员面试笔试技巧,这些技巧生动形象,对求职者能够起到一定的指引作用。本书也从历年的程序员面试笔试真题中精挑细选多套完整试题,以供读者学完本书后检测自我能力,通过这些试卷与讲解,能够帮助求职者有针对性地进行求职准备。
《程序员面试笔试宝典 第3版》是一本计算机相关专业毕业生面试笔试的求职用书,同时也适合期望在计算机软硬件行业大显身手的计算机爱好者阅读。
在这里,有面试笔试常见技巧的提炼与总结;
在这里,有面试笔试高频知识点的整理与剖析;
在这里,有面试笔试历年真题的解答与拓展。
本书覆盖了近三年程序员面试笔试中超过98%的高频知识点。当你细细品读完本书后,各类企业的offer将任由你挑选。一书在手,工作不愁。
自《程序员面试笔试宝典》第1版、第2版发行以来,在读者群中产生了强烈反响,被广大读者奉为求职必备之宝典,获取工作之利器。图书的畅销并没有让我们作者团队产生丝毫懈怠,我们也并没有因此而沾沾自喜,反而是如履薄冰。使用本书的读者多了,自然而然地我们肩上的责任与担当就更重了,如果我们的图书中有任何错误或者是无法完全满足当前求职者的需求,我们必然会被读者唾弃、抛弃,所以,在图书出版后,我们并没有停止前进的步伐,我们一直在思考,如何才能让图书与时俱进,让读者看完该书后能够尽可能好地找到自己满意的工作。
《程序员面试笔试宝典 第3版》在保留第1版、第2版原有精华内容的基础上,考虑到近两年IT行业的背景以及程序员的求职情况,进行了以下几方面的工作:
(1)结合当下的企业招聘侧重点,去掉了第1版、第2版中部分不常出现在程序员面试笔试中的相关内容:智力题、英语面试攻略、软件工程等内容,新增面试笔试经验技巧,更加突出重点,从而节省了读者的大量时间,保证每一部分内容都是重点、难点,提高阅读 效率。
(2)以附录的形式新增近两年各大IT名企的面试笔试真题两套,同时给出答案,使得读者能够及时了解当前企业招聘的重点、难点,把握复习方向,提高求职的成功率。
(3)结合近两年以来程序员求职面试笔试真题的一些变化,本书在讲解知识点的同时,引入了更多的真题,并给出了解答,力求做到真题全覆盖。
希望本书能够继续为求职者提供必要的帮助,希望每个阅读过本书内容的人都能获得一份理想的工作。
有求职困惑的程序员或是对本书内容存在疑惑的读者都可以通过yuancoder@foxmail.com联系作者。
编 者
前言
上篇:面试笔试经验技巧篇
经验技巧1 如何巧妙地回答面试官的问题
经验技巧2 如何回答技术性的问题
经验技巧3 如何回答非技术性问题
经验技巧4 如何回答快速估算类问题
经验技巧5 如何回答算法设计问题
经验技巧6 如何回答系统设计题
经验技巧7 如何解决求职中的时间冲突问题
经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
经验技巧9 在被企业拒绝后是否可以再申请
经验技巧10 如何应对自己不会回答的问题
经验技巧11 如何应对面试官的“激将法”语言
经验技巧12 如何处理与面试官持不同观点这个问题
经验技巧13 什么是职场暗语
下篇:面试笔试技术攻克篇
第1章 程序设计基础
1.1 C/C++关键字
1.1.1 static(静态)变量有什么作用
1.1.2 const有哪些作用
1.1.3 switch语句中的case结尾是否必须添加break语句
1.1.4 volatile在程序设计中有什么作用
1.1.5 断言ASSERT( )是什么
1.1.6 枚举变量的值如何计算
1.1.7 char str1[] = "abc"; char str2[] = "abc"; str1与str2不相等,为什么
1.1.8 为什么有时候main( )函数会带参数?参数argc与argv的含义是什么
1.1.9 C++里面是不是所有的动作都是main( )函数引起的
1.1.10 *p++与(*p)++等价吗?为什么
1.1.11 前置运算与后置运算有什么区别
1.1.12 a是变量,执行(a++) += a语句是否合法
1.1.13 如何进行float、bool、int、指针变量与“零值”的比较
1.1.14 new/delete与malloc/free的区别是什么
1.1.15 什么时候需要将引用作为返回值
1.1.16 变量名为618Software是否合法
1.1.17 C语言中,整型变量x小于0,是否可知x×2也小于0
1.1.18 exit(status)是否与从main( )函数返回的status等价
1.1.19 已知String类定义,如何实现其函数体
1.1.20 在C++语言中如何实现模板函数的外部调用
1.1.21 在C++语言中,关键字explicit有什么作用
1.1.22 C++中异常的处理方法以及使用了哪些关键字
1.1.23 如何定义和实现一个类的成员函数为回调函数
1.2 内存分配
1.2.1 内存分配的形式有哪些
1.2.2 什么是内存泄漏
1.2.3 栈空间的最大值是多少
1.2.4 什么是缓冲区溢出
1.3 sizeof
1.3.1 strlen("\0")=?sizeof("\0")=?
1.3.2 对于结构体而言,为什么sizeof返回的值一般大于期望值
1.3.3 指针进行强制类型转换后与地址进行加法运算,结果是什么
1.4 指针
1.4.1 使用指针有哪些好处
1.4.2 引用还是指针
1.4.3 指针和数组是否表示同一概念
1.4.4 指针是否可进行>、<、>=、<=、= =运算
1.4.5 指针与数字相加的结果是什么
1.4.6 野指针?空指针
1.5 预处理
1.5.1 C/C++头文件中的ifndef/define/endif的作用有哪些
1.5.2 #include 和#include “filename.h” 有什么区别
1.5.3 #define有哪些缺陷
1.5.4 如何使用define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
1.5.5 含参数的宏与函数有什么区别
1.5.6 宏定义平方运算#define SQR(X) X*X是否正确
1.5.7 不能使用大于、小于、if语句,如何定义一个宏来比较两个整数a、b的大小
1.5.8 如何判断一个变量是有符号数还是无符号数
1.5.9 #define TRACE(S) (printf("%s\n", #S), S)是什么意思
1.5.10 不使用sizeof,如何求int占用的字节数
1.5.11 如何使用宏求结构体的内存偏移地址
1.5.12 如何用sizeof判断数组中有多少个元素
1.5.13 枚举和define有什么不同
1.5.14 typdef和define有什么区别
1.5.15 C++中宏定义与内联函数有什么区别
1.5.16 定义常量谁更好?#define还是const
1.6 结构体与类
1.6.1 C语言中struct与union的区别是什么
1.6.2 C和C++中struct的区别是什么
1.6.3 C++中struct与class的区别是什么
1.7 位操作
1.7.1 一些结构声明中的冒号和数字是什么意思
1.7.2 最有效的计算2乘以8的方法是什么
1.7.3 如何使用位操作求两个数的平均值
1.7.4 如何求解整型数的二进制表示中1的个数
1.7.5 不能用sizeof( )函数,如何判断操作系统是16位,还是32位
1.7.6 嵌入式编程中,什么是大端?什么是小端
1.7.7 考虑n位二进制数,有多少个数中不存在两个相邻的1
1.7.8 不用除法操作符如何实现两个正整数的除法
1.8 函数
1.8.1 怎么样写一个接受可变参数的函数
1.8.2 函数指针与指针函数有什么区别
1.8.3 C++函数传递参数的方式有哪些
1.8.4 重载与覆盖有什么区别
1.8.5 无参数构造函数是否可以调用单参数构造函数
1.8.6 C++中函数调用有哪几种方式
1.8.7 什么是可重入函数?C语言中如何写可重入函数
1.9 数组
1.9.1 int a[2][2]={{1},{2,3}},则a[0][1]的值是多少
1.9.2 如何合法表示二维数组
1.9.3 a是数组,(int*)(&a+1)表示什么意思
1.9.4 不使用流程控制语句,如何打印出1~1000的整数
1.9.5 char str[1024];?scanf("%s",str)是否安全
1.9.6 行存储与列存储中哪种存储效率高
1.10 变量
1.10.1 全局变量和静态变量有什么异同
1.10.2 局部变量需要“避讳”全局变量吗
1.10.3