前言
本书的思路
从涉及的开发领域来说,C/C++无疑是目前所有语言之中的翘楚,在Windows编程、嵌入式编程、各种通信编程中都有C/C++的影子。因为涉及的领域众多,社会对C/C++的人才需求也越来越多。不管招聘的职位是嵌入式下的开发还是Windows下的开发,熟悉C/C++语言基础是必需的招聘要求。
虽然全世界每个月都可能会出现新的语言,但从TIOBE世界编程语言排行榜的数据来看,从2009年到现在,C/C++一直都在前3甲中。不论历史的车轮如何滚滚向前,学好C/C++永远不会落后。
本书针对的是刚毕业或刚学完C/C++的入门读者,目的是帮助读者找到更好的工作并复习所学的C/C++基础。
本书的特点
本书全面讲解了C/C++面试的各种知识点,并对一些重点和难点进行了细致的分析。特点如下:
❑ 本书条理清晰,章节内容由易至难,由浅入深,先从C程序设计入手,再详细讲解C++面向对象的高级特性,最后讲解泛型编程和STL。
❑ 本书对于每个面试例题都有详细的讲解以及源代码分析。
❑ 书中还讨论了数据结构和算法,给出了一些经典的数据结构和算法的C语言实现,便于读者快速掌握面试中所需的知识。
❑ 针对面试中出现越来越多的智力测试部分,本书对大部分常见的智力题和逻辑思维题进行了归类及分析解答。
本书的内容
本书内容突出了在C/C++面试中或者是项目开发中,必须掌握的技能和容易忽略的内容。对C/C++面试者来说,可以快速掌握面试过程中考查的知识点,减少面试准备时间,提高面试成功率。本书共分为12章,有310余道面试题。
第1章C/C++程序基础
本章介绍了赋值语句、递增语句、类型转换、数据交换等程序设计的基本概念。希望读者在面试之前复习这些概念,并重视那些比较细微却基础的考点。
第2章 预处理、const、static与sizeof
本章介绍了C/C++设计语言中的难点,这也是各个企业面试中反复出现的考点。尤其是static和sizeof,它们在许多笔试以及面试的题目中都出现过。
第3章 引用和指针
本章介绍了引用和指针,这是C/C++的基础,又是学习过程中最难翻越的一道坎。本章通过编写实例的方式讲解了数组指针、函数指针、常量指针、指针传值、多维指针等容易让读者混淆的概念。
第4章 字符串
本章介绍了字符串的应用和字符串处理的一些函数。字符串是笔试以及面试的热门考点,通过字符串测试可以考察程序员的编程规范以及编程习惯。其中也包括了许多知识点,例如内存越界、指针与数组操作等。许多公司在面试时会要求应试者写一段strcpy复制字符串或字符串子串操作的程序。
第5章 位运算与嵌入式编程
本章介绍了在位运算与嵌入式开发中容易出现的面试题。C语言是嵌入式开发所必需的编程技术,因此在招聘嵌入式系统程序员时会要求必须非常熟悉C/C++语言。
第6章C++面向对象
C语言是面向过程的,而C++作为C语言的超集支持,它是面向对象的。面向对象(Object Oriented)是当前计算机界关心的重点,它是当今软件开发方法的主流,因此也是各大公司的重要考点。
第7章C++继承和多态
继承和多态是C++面向对象程序设计的关键。继承机制使得派生类能够获得基类的成员数据和方法,只需要在派生类中增加基类没有的成员。多态是建立在继承的基础上的,它使用了C++编译器最核心的一个技术,即动态绑定技术。这些都是面试必考题型。
第8章 数据结构
算法的设计依赖于数据的逻辑结构,算法的实现依赖于数据的存储结构,所以数据结构选择得好坏,对程序的质量影响甚大。掌握基本的数据结构知识,是程序设计水平提高的必要条件。算法和数据结构也是面试中的必考题型。
第9章 排序
排序法属于算法中解决数据排列问题的解决方案。本章演示了插入排序、选择排序、交换排序、归并排序和分配排序的实现过程。每一种排序法都可能成为一道面试题。
第10章 泛型编程
泛型编程是一种新的编程思想,它基于模板技术,有效地将算法与数据结构分离,降低了模块间的耦合度。本章演示了泛型在C/C++中的应用,如函数模板和类模板。这些内容是难点,也是考点。
第11章STL
STL是标准模板库,它涵盖了常用的数据结构和算法,并且具有跨平台的特点。将泛型编程思想和STL库用于系统设计中,明显降低了开发强度,提高了程序的可维护性及代码的可重用性。这也是越来越多的笔试和面试中考查STL相关知识的原因。
第12章 智力测试题
有很多有趣的逻辑思考题目出现于跨国企业的招聘面试中,它对考查一个人的思维方式及思维方式的转变能力有极其明显的作用。据一些研究显示,这样的能力往往也与工作中的应变与创新状态息息相关。本章面试题不一定都有固定的答案,有时候只是考查应聘者的逻辑思维。
本书的读者群
❑ 即将步入IT行业的应届大学毕业生;
❑ 有一定工作经验但C/C++编程基础不好的程序员;
❑ 想跳槽又怕找不到适合自己的工作的C/C++程序员;
❑ 刚从培训机构学习完C/C++的入门者;
❑ C/C++培训机构的课后阅读图书;
❑ C/C++语言爱好者。
编者