10年经验之C++面试宝典

本文是C++面试系列文章的概述,涵盖了C++的应用领域,如游戏和服务器开发,以及面试常考知识点,包括C++的基础概念、设计模式、计算机网络原理、操作系统、数据结构与算法和性能优化策略。还列举了如TCP/IP、内存管理、智能指针等具体技术点,并强调了实际问题解决和性能调试工具的使用。
摘要由CSDN通过智能技术生成

C++面试系列文章



前言

虽然网上c++面试教程很多,但是无非是人云亦云,就算学习了,也是碎片化的知识点,不系统,为了让朋友们能够系统的学习c++以及c++中面试的常考知识点,对c++进行一系列的总结。


一、C++开发可以做什么?

通常大家总在问c++到底可以做什么?从这个排名中可以看出C++语言应用是非常广泛的。可以用于两个方面,C++语言可以用于以下行业
1、游戏
2、流媒体服务器
3、网络软件
4、人工智能服务器
5、高性能服务器
6、界面编程QT/MFC
7、嵌入式开发

二、面试内容

1. C++基础知识

基础知识

1、c++面向对象,三大特性的理解 继承 封装 多态
2、c++与c的区别(面向对象与面向过程差异)
3、c++三种继承的特点,public、protect、private类型
4、c++重载、重写、重定义
5、构造函数、析构函数、拷贝构造、赋值运算符等
6、继承中构造函数与析构函数的调用顺序
7、深拷贝、浅拷贝
8、虚函数与纯虚函数的区别、以及析构函数为啥继承时须要定义为虚析构函数
9、c++ stl库有那些vector、list、set、queue、deque以及各自的优缺点
10、c++11 c++14 c++17有那些新特性,这次笔试中要求c++17,至少要把c++11 14中的新特性了解下
11、c++四种智能指针,为何会出现智能指针
12、c++四种类型转换
13、RAII原则用法
12、内存分配情况 堆区、栈区、全局区、文字常量区、代码区
13、指针与引用区别
14、堆栈的区别
15conststatic的用法与区别
16、右值、右值引用、左值、左值引用
17、c++完美转发
18、C++程序中如何调用被C编译器编译后的函数
19、虚函数表、虚指针关系
20、模板与泛型编程
21、多种排序算法,如冒泡、二分查找、选择排序、插入排序、快速排序等
22、可执行程序、动态库、静态库编译的过程


设计模式
必会的几种设计模式

1、单例模式、
2、简单工厂模式、抽象工厂模式
3、观察者模式
4、代理模式
5、模板模式
6、装饰模式

2. 计算机网络

1、计算机网络多层网络拓扑结构 如应用层、传输层、网络层、数据链路层、物理层
2、tcp与udp各自特点
3、tcp中三次握手与四次握手流程,为什么?
4、tcp、udp建立socket的sever、client的流程
5、select/poll/epoll实现优缺点,高效的都会用epoll,边缘触发与水平触发的区别 
6、tcp连接管理、拥塞控制、流量控制、滑动窗口机制
7、路由器、交换机、集线器各有什么特点
8、子网划分、子网掩码、网关
9、单播、组播、广播
10、IPv4与NAT
11、Vlan基本概念与划分
12、http、https、对称加密、非对称加密、post、get、put等
13、常见的tcp与udp协议有哪些?tcp:http、smtp、ftp、telnet等,udp:dns、snmp等

3. 操作系统

1、cpu
2、内存 
3、IO(磁盘)读写文件流程
4、网络IO(网卡接收数据的过程)
5、gpu
6、进程和线程、线程间通信、进程间通信
7、操作系统的组成
8、虚拟内存、cpu缓存
9、死锁与死锁产生的条件
10、进程的状态、线程的状态
11、进程调度 FCFS/SJF/优先级调度算法/时间片轮转调度算法
12、进程同步与互斥
13、中断
14、局部性原理
15、大小端存储方式
16、SRAM与DRAM

4. 数据结构与算法

1、堆与栈
2、数组
3、队列
4、列表
5、二叉树
6、平衡二叉树
7、红黑树
8、Btree,B+tree
9、空间复杂度与时间复杂度
10、前中后序排列
11、各种排序算法
12、左旋、右旋等

5. 工作中常见问题解决

1、内存泄漏问题解决
2、cpu占用率过高解决方法
3、死锁解决
4、死锁避免的方法
5、服务器运行一段时间后,越来越慢
6、长跑中crash问题的解决方法
7、内存越界问题crash问题
8、非必现问题定位

6. 性能优化

优化无非就是以下三方面,将服务器性能用到极限

1、cpu使用率
2、内存占用过高
3、磁盘IO负载过高

性能调试常见的命令有哪些:

//所有资源列表
top   -> 1
//io分析
iostat -xc -n 1
//网络带宽
nload 
//实时系统监控工具
mpstat -P ALL
//内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息
vmstat 
//perf分析热点函数等
perf top -p pid
//google gperftool分析热点函数、内存泄漏、cpu
pperf三项功能
gmc gmp gcp

//进程以树状图显示
pstree
//堆栈分析
pstrace 
//内存调试、内存泄漏检测以及性能分析的软件开发工具。
valgrind

netstat -nap
ifconfig

//绑定cpu
taskset -p 0xfe $(pidof app)

//ASAN检查内存问题很准确,推荐开启。
ASAN
//系统调用的性能排查
strace -c -p PID
//设置更高的优先级
renice

总结

以上是本人从事c++工作这么多年来常用常见的问题的总结,希望对你有所帮助把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c+猿辅导

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值