书籍内容
本书是为了满足广大应聘IT岗位的毕业生及社招人士复习所学知识,提高职场竞争力而编写的。书中涵盖了C/C++程序员面试所需掌握的全部知识点,内容涉及C/C++基础、面向对象、字符串、数据结构、算法设计、操作系统、数据库、计算机网络以及综合能力测试题等面试中经常出现的知识点。与此同时,本书还包含了相当篇幅的面试技巧介绍,并精心搜集了面试官常问的20个问题和外企常考的20道英文面试题,帮助求职者在面试过程中展现自身技术硬实力的同时更能充分发挥自身素质和个人魅力等软实力。 本书不只是一部“习题集”,在每节中都对本节所涉及的知识点进行了完整的梳理,这样不仅可以帮读者夯实专业基础,从根本上掌握程序员笔试面试的要领,也为未来的工作打下了坚实的基础。 本书采用笔记体裁方式编写,核心内容用红色高亮标注,重点问题和知识点加批注注释,使读者在阅读此书时易于上手,掌握关键信息,提高学习效率。 为了更好地帮助读者备战笔试面试,本书还对每一节中的知识点梳理以及一些比较有代表性的题目进行了视频讲解,使读者学习起来更加灵活有趣,知识掌握得也更加牢固。 本书涵盖了各大公司近年来C/C++笔试面试真题,具有性,在讲解上力求深入浅出,循序渐进,并配以插图解说,使读者能够学得懂,记得牢,愿意学,帮助读者更好地进行求职准备。 本书是一本计算机相关专业毕业生以及社招人员笔试、面试求职参考书,同时也可作为有志于从事IT行业的计算机爱好者阅读使用。
前言/序言
如何使用本书相比于其他面试类书籍,本书有一些自己的特点。因此在学习本书时,需要重点了解以下几点: 本书采用笔记形式,将重点内容用红色高亮突出,读者阅读时应多多留意这部分内容。 举例: 在VS2005中单击运行按钮,就会看到程序的运行结果。实际上,源程序经过预处理、编译、汇编、链接等多个步骤后,才能生成可以在机器上直接运行的可执行程序。完整的处理流程如图10-1所示。 正文中包含了一些小结和批注,这些内容都是起到强调提醒和归纳总结的作用。 举例: 虽然switch语句完全可以用if语句取代,但是在某些分支较多的情况下,用switch语句可以写出更加优雅的代码。 注意啦——case中的break语句通常每个case分支的最后都有一条break语句, 因为大多数时候每个case分支内的代码只对应当前case的逻辑。 在有特殊需求时, 每个case对应的逻辑是当前case分支内的代码和之后所有case分支的代码。 在有些面试题讲解的后面会额外添加一个“拓展性思考”的专栏,它是对本题解法深度和广度的延伸,阅读这部分内容会给读者带来一些不一样的思路,相信会对读者有所帮助。 举例: 拓展性思考——不改变数据在数组中的先后次序到此为止,本题应当算是一道比较容易的题目,但是我们不应就此满足,如果进一步思考,这道题还是有许多值得寻味的地方…对于编程题和算法设计题,本书中都包含了一个“实战演练”环节,在这里会给出程序的完整源代码,读者可以通过扫描下面这个二维码下载全书的源代码程序,并在计算机中编译、运行、调试该程序,这样大家可以更加直观地了解代码的实现,加深对程序的理解。本书中的源代码都已在Visual Studio 2010环境下编译通过,读者可以直接运行调试。 举例: 4 实战演练本题完整的代码及测试程序见云盘中source/16-1/,读者可以编译调试该程序。在测试函数中首先创建了一个初始大小为MAXSIZE=10的顺序表……书中源代码二维码下载地址本书对每一节的知识点梳理以及一些比较有代表性的题目都进行了视频讲解,并将视频对应的二维码印在章节标题或题目标题的旁边,读者可以通过扫描二维码下载视频并学习。 举例: 1011知识点梳理在VS2005中单击运行按钮,就会看到程序的运行结果……【面试题2】简述#与##在define中的作用。 为了帮助广大读者更好地学习此书,更好更快地掌握笔试面试技巧,我们开通了微信订阅号“程序员面试笔试之家”,我们会将最新鲜的面试笔试资讯和优质的考题素材通过这个订阅号分享给大家。同时订阅号中也提供了作者的线上联系方式,如果读者在阅读本书过程中有任何疑问可以直接联系作者寻求帮助。此外,我们的微博平台“80后传播者”也已上线,在微博中会分享一些与IT相关的好玩的、有用的资讯,助您掌握IT行业的最前沿信息。有兴趣的读者可关注我们的微信订阅号和微博。微信订阅号“程序员笔试面试之家”微博“80后传播者”前言IT行业在中国经历了几十年的发展,当下正处在一个爆炸式高速发展的时代,尤其最近几年,IT市场的行业产值和利润总额正以每年超过20%的速度迅猛增长,对我国经济发展的贡献日趋显著,“互联网+”的经济模式正成为推动中国经济发展的新动力。 在这样的大环境下,IT行业的人才竞争也日趋激烈。每年的招聘季也是广大学子角逐的战场!本书就是为了满足广大应聘IT岗位的莘莘学子及社招人士复习已有知识,提高职场竞争力而编写的。 C/C++语言作为IT行业的入门级语言,无论在各大高校还是在培训机构都被广泛推广和教授,而许多IT公司也将对C/C++语言的考查作为衡量一名IT从业人员技术水平的重要参考标准,因此C/C++语言的相关知识在大小公司的面试笔试中大量出现。此外,根据第三方对国内外大型IT公司技术类岗位招聘信息的统计结果显示,C/C++语言的市场需求在所有开发语言中常年稳居三甲之列,长盛不衰。 此外,基于C/C++的数据结构和算法知识也是各大公司面试笔试中必不可少的内容。数据结构和算法是程序设计的灵魂,也最能考查一个面试者是否真正具备一个优秀程序员的素养,特别是一些知名的IT公司,更加重视对这部分内容的考查。 基于以上考虑,我们精心编写了这本《程序员面试笔记——C/C++、算法、数据结构篇》。希望这本书可以帮助广大应聘程序员岗位的读者更好地提升自己实力,稳操胜券地拿到心目中理想公司的Offer。 本书有哪些亮点?内容丰富,双管齐下:本书不但介绍C/C++、算法和数据结构,还包含了操作系统、计算机网络及数据库等面试常考内容,知识点覆盖全面无死角,读者可通过这本书掌握C/C++面试的全部要领。与此同时,本书还将一些面试攻略、面试官常提问的问题、综合类测试题等通用的面试技巧融入其中,使求职者在面试过程中展现自身技术硬实力的同时更能充分发挥自身素质和个人魅力等软实力,从而给面试官留下良好的印象。 条理清晰,知识点驱动:市面上的程序员面试书籍普遍采用“题目驱动”编写,也就是罗列一些题目,并对题目进行讲解。这样做的缺点就是知识点相对零散,读者很难做到系统地复习。有的读者甚至反映说“题目做的不少,但是题型一变还是不会!”造成这种现象的根本原因在于读者只是在“就题学题”,并没有对知识点进行完整的梳理。所以本书首先通过知识点梳理将每一个章节中的重点难点进行串讲,使读者有一种提纲挈领的全面了解,然后结合各大IT公司的面试题对知识点进行综合应用分析。这样读者在这些经典面试题中反复锤炼,深化这些知识点,做到知其然,更知其所以然,从而提高专业知识水平和应试能力。 讲解深入,追根求源:针对当前计算机面试类书籍讲解肤浅、过于简单的弊端,本书不主张单纯贴代码式的分析方法,而是将题目的思维过程清晰地阐释给读者,把问题讲清讲透,使读者在看懂例题的同时学到正确的思考问题的方法,从而在遇到类似问题时能够举一反三、触类旁通。这也是本书异于其他同类图书的特点之一。 形式新颖,视频教学:这是本书的一个亮点!本书将核心章节的知识点梳理以及一些比较有代表性的题目进行了视频讲解,并将视频对应的二维码印在书中,这样读者需要视频学习时,只需拿出手机扫描对应的二维码,便可从云端下载视频,即学即看。这样不但使读者学得更灵活,更有趣,同时使读者通过读、听、看三个维度进行学习,更加有利于对知识的吸收和巩固。通过扫描书中的二维码,读者也可获得全书的源代码程序,这样读者可在计算机上实际编译、运行、调试该程序,使学习不再是纸上谈兵,更是实战演练,学习效果必然会更好。这也是本书异于其他同类图书的另一个特点。 笔记体裁,易于上手:本书的书名为《程序员面试笔记》,所以在内容形式上与该书名相契合。全书采用双色套印排版,知识点梳理和题目的讲解上采取重点突出的方法,一些关键内容附以批注,重点的语句采用红色高亮的方式突出。这样读者阅读该书时就会有一种翻阅自己学习笔记的感觉,把一些重点难点的内容都归纳提炼出来,学习效率会更高,阅读效果也会更好。 本书的内容概述第一部分,即第1~9章,具体如下。 第1~8章:介绍了面试的技巧和经验。具体来说,从求职前的准备、简历技巧、笔试技巧、面试技巧、Offer选择技巧、职业生涯规划这六个方面介绍了笔试面试过程中应该注意的问题和应对的技巧。另外,这部分还精心总结了面试官常问的20个问题和外企常考的20道英文面试题,让大家在参加面试前可以有所准备,做到知己知彼,百战不殆。 第9章:总结了一些的面试中常考的综合能力测试题。这些题目在程序员笔试考试中虽然不是重点,但能起到画龙点睛的作用。它可以从某种程度上反映出面试者分析问题,解决问题的能力以及逻辑思维能力,所以读者可以在学习之余阅读这部分内容。 第二部分,即第10~22章,具体如下。 第10章:介绍了C++程序设计基础,并精选了各大公司C++基础相关的面试题进行详细讲解。内容涉及程序的编译与执行、变量、条件语句与循环语句、宏定义与内联、sizeof的使用、内存分配、位运算、main函数等,全面解读C++基础在程序员面试中的各种应用。 第11章:介绍了指针及引用的知识。内容包括指针及其应用、指针常量与常量指针、指针数组与数组指针、指向指针的指针、函数指针、this指针、空指针和野指针以及引用。这些内容极易混淆并给广大求职者造成困惑,所以本章力求将这些易混淆而又常考的内容讲透彻,讲明白。 第12章:介绍了内存分配的相关知识。内容包括堆内存与栈内存、内存泄漏以及内存越界等问题。 第13章:介绍了字符串的相关知识。内容包括两部分:C标准字符串函数,以及字符串算法设计题精讲。字符串是各大公司面试中经常考查的知识点,特别是字符串相关的算法设计更是重中之重,希望读者给予重视。 第14章:介绍了面向对象的相关知识。内容包括面向对象的基本概念、类的声明、构造函数和析构函数、函数重载、运算符重载、继承、虚继承、多态与虚函数。这部分内容是面向对象的核心,涉及了面向对象的思想,是C/C++程序员必须掌握的内容,所以读者应当予以重视。 第15章:介绍了模板与泛型编程的相关知识。内容包括模板、顺序容器、容器适配器、关联容器和智能指针。这些内容可能会在实际工作中经常用到,所以面试时也时常出现。 第16章:介绍了线性结构的相关知识。内容包括数组和顺序表、单链表、循环链表、双向链表以及队列与栈。线性结构是各大公司面试中经常考查的内容,特别是数组和单链表的知识,它们是一切数据结构的基础,也是最常用到的数据结构。 第17章:介绍了树结构的相关知识。内容包括树结构的特性、二叉树的基本特性、二叉树的遍历、二叉树相关面试题以及哈夫曼树和哈夫曼编码。 第18章: 介绍了图结构的相关知识。内容包括图结构的特性以及图结构的遍历算法等。 第19章:介绍了排序的相关知识。内容包括直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序以及各种排序算法的比较。 第20章:介绍了查找算法的相关知识。内容主要包括折半查找算法及TOP K问题。 第21章:介绍了一些经典的算法面试题。内容包括斐波那契数列的第n项、寻找数组中的次大数、将大于2的偶数分解成两个素数之和、计算一年中的第几天、相隔多少天、渔夫捕鱼、丢番图的墓志铭、数的分组、寻找丑数、图中有多少个三角形、递归查找数组中的最大值、分解质因数、在大矩阵中找k、上楼梯的问题,以及矩阵中的相邻数。这些题目都十分有趣,同时还可以锻炼大家使用不同的算法解决实际问题的能力,推荐大家认真研读本章内容。 第22章:介绍了操作系统、数据库及计算机网络的相关知识,并详解了许多大公司相关的面试题。这些知识的讲解和题目的练习,可以帮助大家梳理巩固学过的知识,提高职场竞争力。 除此之外,本书还特意为读者精选了一批经典的面试题,大部分出自最近几年知名IT企业的面试真题,并以电子书的形式保存到云盘中,以帮助广大求职者通过考前的强化训练来提高职场竞争力,读者可用手机扫描书中源代码二维码或输入网址http://qr揠洀瀀攀搀甀揠漀洀/CmpBookResource/download_resource擠漀?id=3302下载学习。 由于编者水平有限,编写过程中难免存在不足和缺陷,欢迎广大读者和专家学者批评指正。 编者