当前位置:主页 > 计算机电子书 > C++ > C/C++面试下载
C和C++程序员面试秘笈

C和C++程序员面试秘笈 PDF 超清版

  • 更新:2023-07-25
  • 大小:64 MB
  • 类别:C/C++面试
  • 作者:董山海
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

《C和C++程序员面试秘笈》是一本非常有价值的书籍。对于准备C面试和C++面试的程序员来说,这本书提供了非常清晰的指导。它涵盖了面试中的关键知识点,包括语法、数据结构和算法等方面。同时, 这本书还提供了一些非常实用的面试技巧和经验,让读者能够在程序员面试中脱颖而出。通过阅读这本书,读者可以获取成功的秘诀,进一步提升自己的面试水平。无论是初学者还是有经验的程序员,都可以从中受益匪浅。这本书是一本不可或缺的面试指南,强烈推荐给所有准备面试的C和C++程序员。

读者评价

虽有一些错误,但这本算很用心的了,整理的也不错,条理性很强。
适合从事C或者是C++工作的程序员进行面试前学习,提前做好准备工作。
一个小白去面试C相关工作的必读书籍

内容介绍

众多高级语言都从C/C++有所借鉴,所以说C/C++的语言基础对从事软件开发的人员来说非常重要。
《C和C++程序员面试秘笈》是一本解析C/C++面试题的书,可以帮助求职者更好地准备面试。《C和C++程序员面试秘笈》共包含12章,囊括了目前企业中常见的面试题类型和考点,包括C/C++程序基础,预处理、const、static与sizeof,引用和指针,字符串,位运算与嵌入式编程,C++面向对象,C++继承和多态,数据结构,排序,泛型编程,STL,算法和逻辑思维等最常见的面试题。《C和C++程序员面试秘笈》通过技术点解析、代码辅佐的方式让读者能深刻领会每个考点背后的技术。
《C和C++程序员面试秘笈》紧扣面试精髓,对各种技术的剖析一针见血,是目前想找工作的C/C++程序员和刚毕业的大学生的面试宝典。

目录

  • 第1章C/C++程序基础
  • 面试题1看代码写输出——一般赋值语句
  • 面试题2看代码写输出——C++域操作符
  • 面试题3看代码写输出——i++和++i的区别
  • 面试题4i++与++i哪个效率更高
  • 面试题5选择编程风格良好的条件比较语句
  • 面试题6看代码写结果——有符号变量与无符号变量的值的转换
  • 面试题7不使用任何中间变量如何将a、b的值进行交换
  • 面试题8C++与C有什么不同
  • 面试题9如何理解C++是面向对象化的,而C是面向过程化的
  • 面试题10标准头文件的结构
  • 面试题11#include 和#include "head.h" 有什么区别
  • 面试题12C++中main函数执行完后还执行其他语句吗
  • 第2章预处理、const、static与sizeof
  • 面试题1预处理的使用
  • 面试题2用#define实现宏并求最大值和最小值
  • 面试题3宏定义的使用
  • 面试题4看代码写输出——宏参数的连接
  • 面试题5用宏定义得到一个字的高位和低位字节
  • 面试题6用宏定义得到一个数组所含的元素个数
  • 面试题7找错——const的使用
  • 面试题8说明const与#define的特点及区别
  • 面试题9C++中const有什么作用(至少说出3个)
  • 面试题10static有什么作用(至少说出2个)
  • 面试题11static全局变量与普通的全局变量有什么区别
  • 面试题12看代码写结果——C++类的静态成员
  • 面试题13使用sizeof计算普通变量所占空间大小
  • 面试题14使用sizeof计算类对象所占空间大小
  • 面试题15使用sizeof计算含有虚函数的类对象的空间大小
  • 面试题16使用sizeof计算虚拟继承的类对象的空间大小
  • 面试题18sizeof与strlen有哪些区别
  • 面试题19sizeof有哪些用途
  • 面试题20找错——使用strlen()函数代替sizeof计算字符串长度
  • 面试题21使用sizeof计算联合体的大小
  • 面试题22#pragma pack的作用
  • 面试题23为什么要引入内联函数
  • 面试题24为什么inline能很好地取代表达式形式的预定义
  • 面试题25说明内联函数使用的场合
  • 面试题26为什么不把所有的函数都定义成内联函数
  • 面试题27内联函数与宏有什么区别
  • 第3章引用和指针
  • 面试题1一般变量引用
  • 面试题2指针变量引用
  • 面试题3看代码找错误——变量引用
  • 面试题4如何交换两个字符串
  • 面试题5程序查错——参数引用
  • 面试题6参数引用的常见错误
  • 面试题7指针和引用有什么区别
  • 面试题8为什么传引用比传指针安全
  • 面试题9复杂指针的声明
  • 面试题10看代码写结果——用指针赋值
  • 面试题11指针加减操作
  • 面试题12指针比较
  • 面试题13看代码找错误——内存访问违规
  • 面试题14指针的隐式转换
  • 面试题15指针常量与常量指针的区别
  • 面试题16指针的区别
  • 面试题17找错——常量指针和指针常量的作用
  • 面试题18this指针的正确叙述
  • 面试题19看代码写结果——this指针
  • 面试题20指针数组与数组指针的区别
  • 面试题21找错——指针数组和数组指针的使用
  • 面试题22函数指针与指针函数的区别
  • 面试题23数组指针与函数指针的定义
  • 面试题24各种指针的定义
  • 面试题25代码改错——函数指针的使用
  • 面试题26看代码写结果——函数指针的使用
  • 面试题27typedef用于函数指针定义
  • 面试题28什么是“野指针”
  • 面试题29看代码查错——“野指针”的危害
  • 面试题30有了malloc/free,为什么还要new/delete
  • 面试题31程序改错——指针的初始化
  • 面试题32各种内存分配和释放的函数的联系和区别
  • 面试题33程序找错——动态内存的传递
  • 面试题34动态内存的传递
  • 面试题35比较分析两个代码段的输出——动态内存的传递
  • 面试题36程序查错——“野指针”用于变量值的互换
  • 面试题37内存的分配方式有几种
  • 面试题38什么是句柄
  • 面试题39指针与句柄有什么区别
  • 第4章字符串
  • 面试题1使用库函数将数字转换为字符串
  • 面试题2不使用库函数将整数转换为字符串
  • 面试题3使用库函数将字符串转换为数字
  • 面试题4不使用库函数将字符串转换为数字
  • 面试题5编程实现strcpy函数
  • 面试题6编程实现memcpy函数
  • 面试题7strcpy与memcpy的区别
  • 面试题8改错——数组越界
  • 面试题9分析程序——数组越界
  • 面试题10分析程序——打印操作可能产生数组越界
  • 面试题11编程实现计算字符串的长度
  • 面试题12编程实现字符串中子串的查找
  • 面试题13编程实现字符串中各单词的翻转
  • 面试题14编程判断字符串是否为回文
  • 面试题15编程实现stcmp库函数
  • 面试题16编程查找两个字符串的最大公共子串
  • 面试题17不使用printf,将十进制数以二进制和十六进制的形式输出
  • 面试题18编程实现转换字符串、插入字符的个数
  • 面试题19字符串编码例题
  • 面试题20反转字符串,但其指定的子串不反转
  • 面试题21编写字符串反转函数strrev
  • 面试题22编程实现任意长度的两个正整数相加
  • 面试题23编程实现字符串的循环右移
  • 面试题24删除指定长度的字符
  • 面试题25字符串的排序及交换
  • 面试题26编程实现删除字符串中所有指定的字符
  • 面试题27分析代码——使用strcat连接字符串
  • 面试题28编程实现库函数strcat
  • 面试题29编程计算含有汉字的字符串长度
  • 面试题30找出01字符串中0和1连续出现的最大次数
  • 面试题31编程实现字符串的替换
  • 第5章位运算与嵌入式编程
  • 面试题1位制转换
  • 面试题2看代码写出结果——位运算
  • 面试题3设置或清除特定的位
  • 面试题4计算一个字节里有多少bit被置1
  • 面试题5位运算改错
  • 面试题6运用位运算交换a、b两数
  • 面试题7列举并解释C++中的4种运算符转化以及它们的不同点
  • 面试题8用#define声明一个常数
  • 面试题9如何用C语言编写死循环
  • 面试题10如何访问特定位置的内存
  • 面试题11对中断服务代码的评论
  • 面试题12看代码写结果——整数的自动转换
  • 面试题13关键字static的作用是什么
  • 面试题14关键字volatile有什么含义
  • 面试题15判断处理器是Big_endian还是Little_endian
  • 面试题16评价代码片断——处理器字长
  • 第6章C++面向对象
  • 面试题1描述面向对象技术的基本概念
  • 面试题2判断题——类的基本概念
  • 面试题3选择题——C++与C语言相比的改进
  • 面试题4class和struct有什么区别
  • 面试题5改错——C++类对象的声明
  • 面试题6看代码写结果——C++类成员的访问
  • 面试题7找错——类成员的初始化
  • 面试题8看代码写结果——静态成员变量的使用
  • 面试题9与全局对象相比,使用静态数据成员有什么优势
  • 面试题10有哪几种情况只能用intialization list,而不能用assignment
  • 面试题11静态成员的错误使用
  • 面试题12对静态数据成员的正确描述
  • 面试题13main函数执行前还会执行什么代码
  • 面试题14C++中的空类默认会产生哪些类成员函数
  • 面试题15构造函数和析构函数是否可以被重载
  • 面试题16关于重载构造函数的调用
  • 面试题17构造函数的使用
  • 面试题18构造函数explicit与普通构造函数的区别
  • 面试题19explicit构造函数的作用
  • 面试题20C++中虚析构函数的作用是什么
  • 面试题21看代码写结果——析构函数的执行顺序
  • 面试题22复制构造函数是什么?什么是深复制和浅复制
  • 面试题23编译器与默认的copy constructor
  • 面试题24写一个继承类的复制函数
  • 面试题25复制构造函数与赋值函数有什么区别
  • 面试题26编写类String的构造函数、析构函数和赋值函数
  • 面试题27了解C++类各成员函数的关系
  • 面试题28C++类的临时对象
  • 面试题29复制构造函数和析构函数
  • 面试题30看代码写结果——C++静态成员和临时对象
  • 面试题31什么是临时对象?临时对象在什么情况下产生
  • 面试题32为什么C语言不支持函数重载而C++能支持
  • 面试题33判断题——函数重载的正确声明
  • 面试题34重载和覆写有什么区别
  • 面试题35编程题——MyString类的编写
  • 面试题36编程题——各类运算符重载函数的编写
  • 面试题37看代码写输出——new操作符重载的使用
  • 第7章C++继承和多态
  • 面试题1C++类继承的三种关系
  • 面试题2C++继承关系
  • 面试题3看代码找错——C++继承
  • 面试题4私有继承有什么作用
  • 面试题5私有继承和组合有什么相同点和不同点
  • 面试题6什么是多态
  • 面试题7虚函数是怎么实现的
  • 面试题8构造函数调用虚函数
  • 面试题9看代码写结果——虚函数的作用
  • 面试题10看代码写结果——虚函数
  • 面试题11虚函数相关的选择题
  • 面试题12为什么需要多重继承?它的优缺点是什么
  • 面试题13多重继承中的二义性
  • 面试题14多重继承二义性的消除
  • 面试题15多重继承和虚拟继承
  • 面试题16为什么要引入抽象基类和纯虚函数
  • 面试题17虚函数与纯虚函数有什么区别
  • 面试题18程序找错——抽象类不能实例化
  • 面试题19应用题——用面向对象的方法进行设计
  • 面试题20什么是COM
  • 面试题21COM组件有什么特点
  • 面试题22如何理解COM对象和接口
  • 面试题23简述COM、ActiveX和DCOM
  • 面试题24什么是DLL HELL
  • 第8章数据结构
  • 面试题1编程实现一个单链表的建立
  • 面试题2编程实现一个单链表的测长
  • 面试题3编程实现一个单链表的打印
  • 面试题4编程实现一个单链表节点的查找
  • 面试题5编程实现一个单链表节点的插入
  • 面试题6编程实现一个单链表节点的删除
  • 面试题7实现一个单链表的逆置
  • 面试题8寻找单链表的中间元素
  • 面试题9单链表的正向排序
  • 面试题10判断链表是否存在环型链表问题
  • 面试题11有序单链表的合并
  • 面试题12约瑟夫问题的解答
  • 面试题13编程实现一个双向链表的建立
  • 面试题14编程实现一个双向链表的测长
  • 面试题15编程实现一个双向链表的打印
  • 面试题16编程实现一个双向链表节点的查找
  • 面试题17编程实现一个双向链表节点的插入
  • 面试题18编程实现一个双向链表节点的删除
  • 面试题19实现有序双向循环链表的插入操作
  • 面试题20删除两个双向循环链表的相同结点
  • 面试题21编程实现队列的入队、出队、测长、打印
  • 面试题22队列和栈有什么区别
  • 面试题23简答题——队列和栈的使用
  • 面试题24选择题——队列和栈的区别
  • 面试题25使用队列实现栈
  • 面试题26选择题——栈的使用
  • 面试题27用C++实现一个二叉排序树
  • 面试题28使用递归与非递归方法实现中序遍历
  • 面试题29使用递归与非递归方法实现先序遍历
  • 面试题30使用递归与非递归方法实现后序遍历
  • 面试题31编写层次遍历二叉树的算法
  • 面试题32编写判别给定二叉树是否为二叉排序树的算法
  • 第9章排序
  • 面试题1编程实现直接插入排序
  • 面试题2编程实现希尔(Shell)排序
  • 面试题3编程实现冒泡排序
  • 面试题4编程实现快速排序
  • 面试题5编程实现选择排序
  • 面试题6编程实现堆排序
  • 面试题7实现归并排序的算法(使用自顶向下的方法)
  • 面试题8使用基数排序对整数进行排序
  • 面试题9选择题——各排序算法速度的性能比较
  • 面试题10各排序算法的时间复杂度的比较
  • 第10章泛型编程
  • 面试题1举例说明什么是泛型编程
  • 面试题2函数模板与类模板分别是什么
  • 面试题3使用模板有什么缺点?如何避免
  • 面试题4选择题——类模板的实例化
  • 面试题5解释什么是模板的特化
  • 面试题6部分模板特例化和全部模板特例化有什么区别
  • 面试题7使用函数模板对普通函数进行泛型化
  • 面试题8使用类模板对类进行泛型化
  • 面试题9通过类模板设计符合要求的公共类
  • 第11章STL(标准模板库)
  • 面试题1什么是STL
  • 面试题2具体说明STL如何实现vector
  • 面试题3看代码回答问题——vector容器中iterator的使用
  • 面试题4看代码找错——vector容器的使用
  • 面试题5把一个文件中的整数排序后输出到另一个文件中
  • 面试题6list和vector有什么区别
  • 面试题7分析代码问题并修正——list和vector容器的使用
  • 面试题8stl::deque是一种什么数据类型
  • 面试题9在做应用时如何选择vector和deque
  • 面试题10看代码找错——适配器stack和queue的使用
  • 面试题11举例说明set的用法
  • 面试题12举例说明map的用法
  • 面试题13STL中map内部是怎么实现的
  • 面试题14map和hashmap有什么区别
  • 面试题15什么是STL算法
  • 面试题16分析代码功能——STL算法的使用
  • 面试题17vector中的erase方法与algorithm中的remove有什么区别
  • 面试题18什么是auto_ptr(STL智能指针)?如何使用
  • 面试题19看代码找错——智能指针auto_ptr的使用
  • 面试题20智能指针如何实现
  • 面试题21使用std::auto_ptr有什么方面的限制
  • 面试题22如何理解函数对象
  • 面试题23如何使用bind1st和bind2nd
  • 面试题24实现bind1st的函数配接器
  • 第12章智力测试题
  • 面试题1元帅领兵
  • 面试题2两龟赛跑
  • 面试题3电视机的价格
  • 面试题4这块石头究竟有多重
  • 面试题5四兄弟的年龄
  • 面试题6爬楼梯
  • 面试题73只砝码称东西
  • 面试题8称米
  • 面试题9比萨饼交易
  • 面试题10伊沙贝拉时装精品屋
  • 面试题11烧绳子的时间计算问题
  • 面试题12给工人的金条
  • 面试题13被污染的药丸
  • 面试题14称量罐头
  • 面试题15有20元钱可以喝到几瓶汽水
  • 面试题16判断鸟的飞行距离
  • 面试题17按劳取酬
  • 面试题18空姐分配物品
  • 面试题19消失的1元钱
  • 面试题20分物品
  • 面试题21称出4升的水
  • 面试题22通向诚实国和说谎国的路
  • 面试题23排序问题
  • 面试题24两个同一颜色的果冻
  • 面试题25怎样称才能用3次就找到球
  • 面试题26计算生日是哪一天
  • 面试题273个女儿的年龄
  • 面试题28取回黑袜和白袜
  • 面试题29谁先击完40下鼠标
  • 面试题30聪明人是怎样发财的
  • 面试题31谁打碎了花瓶
  • 面试题32大有作为
  • 面试题33宴会桌旁
  • 面试题34过桥问题
  • 面试题35一句不可信的话
  • 面试题36海盗分宝石
  • 面试题37如何推算有几条病狗
  • 面试题38判断谁是盗窃犯
  • 面试题39向导
  • 面试题40扑克牌问题
  • 面试题41谁是机械师
  • 面试题42帽子的颜色
  • 面试题43两个大于1小于10的整数
  • 面试题44谁用1美元的纸币付了糖果钱
  • 面试题45究竟有哪些人参加了会议
  • 面试题46小虫
  • 面试题47相遇
  • 面试题48约会
  • 面试题4930秒答题
  • 面试题501分钟答题
  • 面试题51现代斯芬克斯之谜
  • 面试题52所有开着的灯的编号

资源获取

资源地址1:https://pan.baidu.com/s/1B14jMyHtLgNsYuo90u-9IA

相关资源

网友留言

网友NO.48716
能馨婷

const关键字有什么作用? 【解答】 (1)阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它初始化,因为以后就没机会改变它了; (2)对指针来说,可以指定指针本身为const,也可指定指针所指的数据为const,或二者同时指定为const; (3) 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; (4) 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量; (5) 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为左值。

网友NO.39996
饶正诚

1.c++的static关键字的作用(我从elf结构,链接过程来回答) 2.内联函数跟普通函数区别(从反汇编角度来回答) 3.select跟epoll的区别(epoll内核源码看过,从内核实现角度回答,所以回答的不错), small插曲:对于很多博客说epoll使用了共享内存,我说完全错误的,然后就扯到共享内存的内核实现(基于tmpfs,为何2个进程映射同一个文件会映射到同一片物理内存,根本机制是page cache) 4.STL中的迭代器失效问题 5.指针,引用区别(反汇编分析,其实汇编指令实现都一样,可以把引用看做编译器管理的指针,语法糖) 6.Linux相关cpu内存网络相关指令 7.父子进程fork时,打开的文件的偏移量是否是相同的(从内核角度看,父子进程fork会将file文件复制一份,所以肯定会的) 8.Linux虚拟地址空间(3G以上内核,因为进程创建时,内核的页表全部拷贝到进程第768页目录项以上的,3G以下则是代码段(.init节,.text节,.rodata节),数据段(.data节,.bss节),堆(brk指针),栈从3G往下) 9.【计算机网络】只问了time_wait的危害,三次握手,四次断开 10.c++多态的机制实现(虚函数表,看过深度探索c++对象模型的都会的) 11.vector跟list区别,还有map的底层实现(红黑树) 12.extern关键字