本文列出C++面试中经常遇到的一些问题,都是一些常见的面试考点,如果后续遇到其他常见面试问题还会再次更新。希望对近期参加面试的同学有一些帮助。先后顺序与问题的重要性无关,查看的时候,最好是全面了解一下。

C++语言基础、语言特性、数据结构、操作系统知识甚至是一些内核相关的知识、网络相关知识、数据库操作、多线程多进程数据同步互斥、内存相关知识等等。

1、关键字及基本问题

const的作用,const怎么使用,有哪些应用场景?

static的作用,static类成员变量怎么初始化?static成员可以调用哪些成员函数,非static成员函数可以调用哪些成员函数?

static成员函数怎么使用,与普通成员函数有什么区别?

指针和引用的区别?

new和malloc的区别?

程序的内存分布?堆栈的生长方向?为什么是相反的生长方向?

了解哪些创建堆的函数?

2、类相关的题目

为什么要进行封装?

什么是多态,多态是怎么实现的?多态的应用场景?

虚函数表是属于类的还是属于成员的?虚指针呢?

虚函数,纯虚函数?什么时候使用虚函数,什么时候使用纯虚函数?有了虚函数为什么还要用纯虚函数,可以用虚函数替代纯虚函数吗?

类的构造函数可以定义为虚函数吗?析构函数呢?

基类的析构函数为什么通常需要定义为虚函数?如果不定义为虚函数会有什么问题?什么场景下会产生这种问题?

定义拷贝构造函数的时候参数有什么要求?为什么要将参数定义为引用,如果不定义为引用会产生什么问题?

什么是深拷贝?怎么实现深拷贝?

构造函数的成员初始化列表的使用场景?什么时候必须使用初始化列表?

3、C++11+的新特性

你了解哪些C++11新的特性?

static_cast 与dynamic_cast有什么区别?分别是基于什么原理实现?为什么要使用他们而不是使用之前标准里面的强制类型转换?

nullptr的作用?为什么要引入nullptr而不使用NULL?

你了解哪些智能指针?

智能指针的内部是怎么实现的?

左值右值,左值引用与右值引用?

4、STL及数据结构(注意效率与复杂度)

vector和list的内部实现是什么?分别适用于什么应用场景?

vector随机访问的时间复杂度是多少?怎么优化vector的查找速度?

vector扩容的过程?

怎么彻底清空vector?

vector怎么查找元素?如果是一个结构怎么查找一个vector结构中的指定元素?(find find_if)

map查找的复杂度?

map的底层是怎么实现的?map与hashmap的区别?什么时候应该使用map什么时候应该使用hashmap?

常见排序算法及其时间和空间复杂度?桶排序有了解的吗?

给定一个场景,选择一种合适的容器?

怎么定义一个环形队列?怎么判断环形队列的空与满?

C/C++的学习裙【105+302+9869】,无论你是小白还是进阶者,是想转行还是想入行都可以来了解一起

进步一起学习!裙内有开发工具,很多干货和技术资料分享!

5、计算机网络

三次握手与四次挥手的过程及状态的转变?

为什么是三次握手而不是两次握手?

为什么是需要四次挥手?

soket通信实现的基本过程?

使用原生的socket不使用网络库的时候,怎么防止粘包,需要怎么定义相关请求的结构?

接口的幂等性?

http协议是长连接还是短链接,怎么改为长链接?

http请求头包含哪些内容?一个http请求包含哪些内容?

6、多线程与多进程

windows下怎么创建线程?使用哪些线程函数?为什么建议使用_beginthreadex与endthreadex而不是createthread与endthread?

线程间同步互斥的方法有哪些?

进程间通信进程间同步的方法有哪些?

互斥、事件、临界区、信号量之间区别?(临界区控制同步的时候不需要进入内核态,其他的都需要进入内核态)

说一说临界区的使用?CRITICAL_SECTION InitializeCriticalSection EnterCriticalSection LeaveCriticalSection

同一线程可以多次进入临界区吗?

什么是死锁,什么情况下会产生死锁,怎么避免产生死锁,如果产生了死锁该怎么调试?

多线程情况下,怎么只让某个线程调用指定的函数?

7、数据库

mysql数据库中的左连接 右链接 内连接的区别?

关系型数据库与非关系型数据库的区别?

存储过程?

了解redis吗?

8、设计模式

你了解哪些设计模式?

怎么实现一个懒汉式的线程安全的单例模式?

9、git使用的问题

git pull 与git rebase

10、windows相关问题

说说windows的消息机制?有哪些相关的函数?

MFC窗体的生命周期,涉及到哪些函数?

模态对话框与非模态对话框的区别?

怎么产生一个dump文件?dump分析工具你知道哪些?windbg

windows下你了解哪些定时器类?自己怎么实现一个定时器类?

什么时候会产生内存泄漏?怎么调试内存泄漏?用到哪些内存泄漏的调试方式?

说一说windwos的消息映射机制?

一个dll大入口函数是什么?mfc程序的入口函数是什么?

线程切换的时候操作系统做了哪些事情?

sendmessage与postmessage的区别是什么?什么是同步消息什么是异步消息?

11、代码实现(手写代码)

strcpy、memcpy、单例模式 、二叉树的前序中序后序遍历、二叉树的层序遍历遍历、不完全二叉树的序列化与反序列化

C++常见的面试题目整理的更多相关文章

  1. 推荐C/C++常见的面试题目

    http://blog.163.com/bingqingyujie..5/blog/static/75559361201011861958534/ 里面有详细的面试类型

  2. 【Android进阶】Android面试题目整理与讲解(一)

    这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCre ...

  3. 【转载】最全的面试题目整理(HTML+CSS部分)

    转载自 知乎 @西点王子 https://www.zhihu.com/people/F211/answers 1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1) 浏览器: ...

  4. ES6高频面试题目整理

    本篇文章是根据以下内容进行的总结 1.https://segmentfault.com/a/1190000011344301 2.http://www.bslxx.com/a/mianshiti/ti ...

  5. Android面试题目整理与解说(一)

    这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的添加,假设答案有错误,希望大家能够指正 1.简述Activity的生命周期 当Activity開始启动的时候,首先调用onCre ...

  6. php常见的面试题目

    一. 基本知识点1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302...200 : 请求成功,请求的数据随之返回.301 : 永久性重定向.302 ...

  7. 【Java基础】Java面试题目整理与解说(二)

    1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类 ...

  8. 【Android进阶】Android面试题目整理与讲解(二)

    1. ArrayList,Vector, LinkedList 的存储性能和特性 ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们 ...

  9. Android面试题目整理与解说(二)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/31386787 1.Dalvik和标准Jav ...

随机推荐

  1. OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  2. GDB将所有线程堆栈输出到文件

    在调试多线程程序时,经常需要查看线程堆栈信息,如果线程数目过多,每次查看一个线程堆栈,繁琐耗时.下面介绍一种一次性将所有线程堆栈输出到文件的方法. 首先,将gdb attach到调试线程 gdb -p ...

  3. 多测师_高级讲师肖sir讲解html中 Button跳转连接方法归纳

    第一种方法: 1.1<a href="http://www.baidu.com">   <input type="button" name=& ...

  4. Get提交方式中文乱码

    Get提交方式中文乱码 今天在servlet使用中,在Get方法中获取提交的中文参数,发现是乱码,我用的是Tomcat7. 在Tomcat9中: get方式的参数是放在请求头中,而Tomcat9对请求 ...

  5. 身为电气人,为什么也要学习C语言编程?人生苦短,我学编程!

    说起编程大家可能都听过,但编程究竟是怎么一回事你弄懂了吗? 编程=对计算机程序进行编写,这些程序可以是现在手里拿着的手机.办公的电脑.你点击的页面.浏览的网页,都是有程序让它执行你要它做的事情. PL ...

  6. nginx优化: timeout超时配置

    一,为什么要做连接超时设置? nginx在保持着与客户端的连接时,要消耗cpu/内存/网络等资源, 如果能在超出一定时间后自动断开连接, 则可以及时释放资源,起到优化性能.提高效率的作用 说明:刘宏缔 ...

  7. 3. Distributional Reinforcement Learning with Quantile Regression

    C51算法理论上用Wasserstein度量衡量两个累积分布函数间的距离证明了价值分布的可行性,但在实际算法中用KL散度对离散支持的概率进行拟合,不能作用于累积分布函数,不能保证Bellman更新收敛 ...

  8. 渗透测试之nmap

    一,功能介绍 Nmap是网络连接端口扫描软件,用来扫描网上电脑开放的哪些连接端口,并且确定哪些服务运行在哪些端口连接,推断是哪个操作系统,他是网络管理员必备的软件之一,以及用于评估网络系统安全. 二, ...

  9. 关于 Deployer 部署结构

    Deployer 部署完成后,在服务器上的结构会是这样子: drwxr-sr-x 5 deployer www-data 4096 Jun 14 09:53 ./ drwxr-sr-x 6 deplo ...

  10. Phoenix创建索引源码过程

    date: 2020-09-27 13:50:00 updated: 2020-09-28 16:30:00 Phoenix创建索引源码过程 org.apache.phoenix.index.Inde ...