cpper绝不当炮灰选手-剑指大厂-c++后端面试大成攻略副本

针对于c++后端,本文会直接从面试角度出发,盘点整理在c++后端面试中出现的面试题型与经典题目。

包含:

  • c/c++(36道)

  • 设计模式(14道)

  • 数据结构与算法(35道)

  • 操作系统(17道)

  • 数据库(32道)

  • 网络(15道)

  • 分布式与集群(44道)

  • 设计方案(7道)

共计200道面试题

需要的朋友,建议点个收藏,需要的时候随时阅读。

后续针对面试题的视频教程也会陆续更新,喜欢直接看视频面试题的朋友可以关注视频账号


目前已更新分享的c++后端面试题答案及解析思路:视频教程在此

一、c/c++

1.语言

  • static、const 作用

  • 引用与指针作用以及区别?

  • 如何避免野指针?

  • malloc、free 和new、 delete 区别? malloc申请空间失败怎么办?

  • extern有什么作用?

  • 简述strcpy、 sprintf 与memcpy 的区别?

  • c/c++中强制类型转换使用场景?

  • 什么时候生成默认构造函数?

  • 什么时候生产默认拷贝构造函数?

  • 什么是深拷贝?什么是浅拷贝?默认拷贝构造函数是哪种拷贝?什么时候用深拷贝?

2.标准库

  • vector底层实现原理?

  • vector内存增长机制?

  • vector的reserve 和resize 的区别?

  • vector的元素类型为什么不能是引用?

  • list的底层实现原理

  • deque的底层实现原理

  • 什么时候使用vector、list、以及deque?

  • priority_queue的底层实现原理

  • map、set、multimap、multiset 的底层实现原理?红黑树原理?

  • unordered_ map、unordered_ set的底层实现原理?哈希表原理?

  • 迭代器底层实现原理?以及有哪些种类?

  • 迭代器失效?连续存储容器的失效?非连续存储容器的失效?以及分别的处理方式?

  • STL容器的线程安全性

3.面向对象

  • 面对对象的三大特征

  • 简述多态实现原理

  • 怎么解决菱形继承?

  • 函数重载和重写的区别?

  • 运行期多态的实现原理?

  • 虚函数的调用过程?

  • 继承下的构造函数和析构函数执行顺序?

  • 虚函数表和虚函数表指针(vptr)的创建时机?

  • 虚析构函数的作用?

  • 智能指针种类以及使用场景?

  • c++ 11用过哪些特性?

  • 动态库和静态库的区别?

  • 左值引用与右值引用的区别?右值引用的意义?

二、设计模式

1.设计原则

  • 面对对象中有哪些设计原则?

  • 简述开闭原则,哪些原则与它相关,分别是什么关系?

  • 什么是里氏替换原则?

  • 什么是迪米特原则?

  • 什么是依赖倒置原则?

2.创建型

  • 单例模式多线程?

  • 什么是工厂模式?什么是抽象工厂?应用场景是什么?

3.结构型

  • 什么是代理模式?应用场景是什么?

  • 什么是装饰器模式?应用场景是什么?

  • 什么是组合模式?应用场景是什么?

  • 什么是责任链模式?应用场景是什么?

4.行为型

  • 什么是模版方法?应用场景是什么?

  • 什么是策略模式?应用场景是什么?

  • 什么是观察者模式?应用场景是什么?

三、数据结构与算法

1.栈、队列

  • 用两个栈实现队列

  • 包含min函数的栈

  • 队列的最大值

  • 用一个栈实现另一个栈的排序

  • 如何仅用递归函数和栈操作逆序一个栈

2.链表

  • 链表中倒数第k个节点?

  • 链表中环的入口节点?

  • 反转链表?

  • 从尾到头打印链表

  • 两个链表的第一个公共节点

3.字符串

  • 第一个只出现一次的字符

  • 最长不含重复字符的子字符串

  • 字符事的排列

  • 反转字符亭

  • 把数字翻译成字符率

4.二叉树

  • 重建二叉树

  • 二叉树的下一个节点

  • 树的子结构

  • 二叉树的镜像

  • 对称的二叉树

  • 从上到下打印二叉树.

  • 序列化二叉树

  • 二叉树的深度

  • 二叉树第k大节点

  • 树中两个节点的最低公共祖先

5.动态规划、贪心

  • 剪绳子

  • 二进制中1的个数

  • 矩阵的最小路径和

  • 换钱的方法数

  • 换钱的最少货币数

  • 最长公共于序列问题

  • 最长公共子事问题

  • 数组中的最长连续序列

  • 最长递增于序列

  • 最小编辑代价

四、操作系统

1.进程线程

  • 进程和线程的区别?

  • 操作系统中进程与线程切换过程?

  • 请描述整个系统调用过程?

  • 后台进程有什么特点,如果要你设计一个进程是后台进程,需要考虑什么?

  • 进程间通信有哪几种方式?

  • 操作系统中进程调度策略有哪几种?

  • 线程同步的方式?

  • CAS是一种什么样的同步机制?

  • CPU是怎么执行指令的?

2.内存

  • 用户态和核心态的区别?

  • 内存管理有哪几种方式?

  • 分页和分段有什么区别?

  • 页面直换算法有哪些?

  • 什么是虚拟内存?

  • 为什么虚拟地址空间切换会比较耗时?

  • 虚拟内存和物理内存怎么对应?

  • 请求页面直换策略有哪些方式?他们的区别是什么?各自有什么算法解决?

五、数据库

1.mysql

  • 数据库三大范式?

  • MySQL cpu飙升,该怎么处理?

  • 如何定位以及优化SQL语句的性能问题?或者如何解决慢查询问题?

  • 什么是视图?为什么要使用视图?

  • SQL语句在MySQL 是如何执行的?

  • 索引在哪些情况下会失效?

  • 索引的目的和代价分别是什么?

  • 主键索引和唯一索引的区别?

  • 聚集索引和非聚集索引的区别?

  • 什么是覆盖索引?原理是什么?

  • 什么是回表查询?原理是什么?

  • 什么是最左匹配规则?原理是什么?

  • 什么是索引下推?原理是什么?

  • InnoDB与MyISAM 的区别?

  • 索引为什么要用B+树,而不是二又树或者B树?

  • 数据库事务的四个特性以及含义?

  • 数据库的脏读,幻读,不可重复读出现的原因原理,解决办法?

  • 不可重复读与幻读的区别?

  • SQL注入原理?如何避免SQL注入?

  • MySQL死锁问题产生的原因以及如何解决?

  • MVCC底层原理?

2.Redis

  • 什么是redis? redis 的应用场景?

  • redis 的对象类型有哪些,底层实现用了哪些数据结构?

  • redis 中相同数量的数据,对比分别使用hash 与zset存储的空间占用情况?

  • 基于redis 实现限流功能有哪几种方式?

  • redis 为什么是单线程?这里单线程指什么?为什么这么快?

  • redis 怎么实现分布式镇?有哪些缺陷?

  • redis 怎么做高可用?

  • redis 特久化有哪些,不同的持久化机制都有什么优缺点?

  • 什么是缓存雪崩、缓存穿透、缓存击穿?分别有哪些解决方案?

  • redis 淘汰策略有哪些?

  • 分析redis 的事务?

六、网络

1.网络编程

  • 简述Reactor 网络编程模型?

  • 比较Reactor 和Proactor 的区别?

  • 连接断开有哪几种判定方式?

  • 接收客户端连接有几种方式?

  • 为什么用户态需要设置读写缓冲区?

2.网络原理

  • 水平触发和边缘触发的区别?在边缘触发下,一个socket 已读取200然后不再处理,是不是剩下的300就永远无法读取?

  • CLOSE_ WAIT和TIME_ WAIT是什么?如何排查?有什么意义?

  • TCP三次握手的过程?为什么不可以是两次握手?

  • TCP四次挥手的过程? TIME_ WAIT为什么至少设置两倍的MSL 时间?

  • 什么是连接的半打开,半关闭状态?

  • linux io模型有哪几种?简述io多路复用机制?

  • 阻塞io和非阻塞io的区别?

  • select、poll、epoll 三者的区别?

  • 为什么边缘触发一定要用非阻塞io?

  • 描述io多路复用机制

七、分布式和集群

1.分布式理论

  • 什么是CAP理论?

  • 什么是Base理论?

  • 什么是2PC (两阶段提交) ?

  • 什么是Raft协议?解决了什么问题?

2.kafka

  • kafka是什么?解决了什么问题?

  • zookeeper对于kafka 的作用是什么?

  • kafka如何判断一个节点是否还活着?

  • 简述kafka 的ack三种机制?

  • 如何控制消费的位置?

  • kafka在分布式场景下,如何保证消息的顺序消费?

  • kafka的高可用机制是什么?

  • kafka如何减少数据丢失?

  • kafka如何确保不消费重复数据?

  • kafka如何维护消费状态的?

3.gRPC

  • gRPG 服务端启动流程?

  • gRPG 服务类型有哪些?

  • 一个connection 可以同时处理多个stream, 那keepalive 是针对stream设置的,还是针对connection 设置的?

  • 多路复用指的是什么?

  • 如何自定义resolver?

  • 如何自定义balance?

  • 如何实现gRPC 全链路追踪?

  • 客户端connection 连接状态有哪些?

  • 客户端如何获取服务端的服务函数列表?

  • gRPC 如何为每个stream 进行限流?什么是flow control?

4.etcd

  • etcd 中一个任期是什么意思?

  • etcd 中raft状态机是怎么样切换的?

  • 如何防止candidate 在遗漏部分数据的情况下发起投票成为leader ?

  • etcd某个节点宕机后会怎么做?

  • 为什么Raft算法在确定可用节点数量时不需要考虑拜占庭将军问题?

  • 如何选举出leader 节点?

  • 怎么保证数据一致性?

5.docker/k8s

  • 什么是docker 镜像?

  • 什么是docker容器?

  • docker容器有几种状态?

  • DockerFile中的命令COPY和ADD命令有什么区别?

  • 容器与主机之间的数据拷贝命令?

  • 解释一下dockerfile 的ONBUILD 指令?

  • 如何在生产中监控docker?

  • 构建docker镜像应该遵循哪些原则?

  • 容器退出后,通过docker ps 命令查看不到,数据会丢失么?

6.数据库集群

  • MySQL主从复制原理?

  • MySQL分库分表?

  • 简述redis 高可用的方案?

  • 简述redis cluster 集群的原理?

八、设计方案

1.发散题

  • 只用2GB内存在20亿个整数中找到出现次数最多的数

  • 找到100亿个URL中重复的URL及搜索词汇的Top K问题

  • 40亿个非负整数中找到未出现的数

  • 40亿个非负整数中找到出现两次的数和所有数的中位数

  • 岛问题

2.综合题

  • redis和mysql缓存一致性

  • 设计一个海量定时器方案,时间跨度毫秒级到年

此200道面试题主要针对的为c++后端面试。但是成功拿下offer,不仅仅只需要面试题就够了的,大家也需要掌握一定的技术知识,配合的本文总结的面试题,更好的为大家面试提供帮助。

需要c++后端的技术学习路线的朋友,可以我之前写的这篇文章:

Linuxc/c++大厂开发岗学习指南(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构) - 知乎

PS:如果对应求职的岗位不是c++后端,也可以分享一份c++1000到通用经典面试题PDF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端,局限性较高,有些问题看起来很小,但是初次接触很棘手,需要查找很多博客,内容也很杂。以下只是过程中总结下来的,要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

浅谈web性能测试

什么是性能测试? web性能应该注意些什么? 性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而web端的性能测试…

Clion运行QT,模拟VS弹出CMD框打印

参考:https://stackoverflow.com/questions/35385772/running-clion-on-the-system-console-like-visual-studio 在运行配置的地方进行编辑: 可执行文件设置:C:\Windows\System32\cmd.exe程序实参:/c “start cmd.exe cmd /c “…

【开发板测评】一起玩转ACM32G103开发板,释放MCU无限潜能!

为帮助小伙伴们更好的快速熟悉了解ACM32G103系列的特性,航芯特别发起了该系列开发板评测试用,以帮助大家更好地运用MCU进行项目设计。 ACM32G103开发板介绍 ACM32G103系列是航芯推出的一款有着丰富模拟外设及安全存储扩展能力的高性价比通用MCU。 高性…

汉威科技全系列VOC气体检测产品,护航绿色低碳安全发展

可能很多人都不知道,危化品爆炸、城市光化学烟雾污染(如英国伦敦烟雾事件)、城市灰霾、温室效应、臭氧层空洞等问题背后的元凶都是VOC。VOC(Volatile Organic Compounds)即挥发性有机物,这类物质易挥发,且普遍具有毒性…

使用sqoop操作HDFS与MySQL之间的数据互传

一,数据从HDFS中导出至MySQL中 1)开启Hadoop、mysql进程 start-all.sh/etc/init.d/mysqld start/etc/init.d/mysqld status 2)将学生数据stu_data.csv传到HDFS的/local_student目录下 在hdfs中创建目录 hdfs dfs -mkdir /local_student 上…

系统调用过程

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由…

[实践总结] Java中读取properties配置文件

读取此key.properties文件 代码实现 import java.io.IOException; import java.io.InputStream; import java.util.Properties;public class PropertyUtils {private static final Properties properties new Properties();static {try (InputStream resourceAsStream Prope…

显示出所有留言信息,后期为了方便删记录用。

显示出所有留言信息&#xff0c;后期为了方便删记录用。 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <% page import"java.util.Date" %> <% page import"java.text…

决策树 基尼系数算法

CART算法 CART Classification and Regression Tree(CART) 是决策树的一种用基尼指数来选择属性 (分类) &#xff0c;或用均方差来选择属性 (回归)顾名思义&#xff0c;CART算法既可以用于创建分类树&#xff0c;也可以用于创建回归树&#xff0c;两者在构建的过程中稍有差异。…

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都&#xff0c;上海发布数字经济发展“十四五”规划&#xff0c;围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域&#xff0c;加强数据、技术、企业、空间载体等关键要素协同联动&#xff0c;加快进行数字经济发展布局&#xff1b;加快基础软件…

JavaWeb(五)

一、JDBC概述 JDBC 就是使用Java语言操作关系型数据库的一套API 全称是Java DataBase Connectivity 表示Java数据库连接。 JDBC的本质是官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口,各个数据库厂商去实现这套接口&#xff0…

【zotero】搭配onedrive同步设置

1 登陆自己账户 登陆后记得取消文件同步的两个勾勾&#xff0c;不然后期会很占用储存空间的。 设置同步文件夹 一定要精准定位到绿色框框里头的文件夹。

存在重复元素算法(leetcode第217题)

题目描述&#xff1a; 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 &#xff0c;返回 true &#xff1b;如果数组中每个元素互不相同&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1] 输出&#xff1a;true 示例 2&#xff1a;…

【动手学深度学习】(十一)卷积层

文章目录 一、从全连接到卷积 一、从全连接到卷积 分类猫和狗的图片 使用一个相机采集图片&#xff08;12M像素&#xff09;RGB图片有36M元素使用100大小的单隐层MLP&#xff0c;模型有3.6B元素 远多于世界上所有猫和狗总数&#xff08;900M狗&#xff0c;600M猫&#xff09;…

Python字符串格式化练习

示例一&#xff1a; 题目&#xff1a; 利用输出语句输出下列语句内容&#xff1a;公司&#xff1a; ikun股票,股票代码&#xff1a;001314 ,当前股价&#xff1a;2.5 &#xff0c;每日增长系数:1.2350 &#xff0c;经过增长7天后&#xff0c;股价达到了&#xff1a;10.95490…

关于ThreadLocal的理解

为什么threadLoacl要设计改为thread类里面有threadLocalMap&#xff1f; 为什么threadLoacl要设计改为thread类里面有threadLocalMap&#xff0c;然后map里面key为threadLoacl&#xff0c;value为value&#xff0c;而不是一个threadLoaclMap里面根据thread当key呢。 其实在早…

3.3 SaltStack 的部署和自动化配置

SaltStack 的部署和自动化配置 SaltStack 简介 介绍 SaltStack&#xff0c;一款功能强大的自动化配置管理工具&#xff0c;它采用分布式的代理-主控架构。强调 SaltStack 的目标&#xff1a;简化配置管理、加速任务执行、提高基础设施的可扩展性。 部署 SaltStack 环境 解释如…

制作一个RISC-V的操作系统五-RISC-V汇编语言编程一

文章目录 RISC-V汇编语言入门汇编语言概念简介 汇编语言语法介绍&#xff08;GNU版本&#xff09; RISC-V汇编语言入门 汇编语言概念简介 高级&#xff1a;可以理解就是更贴近人的理解 低级&#xff1a;可以理解就是更贴近机器的 难移植&#xff1a;汇编指令基本上和机器指令…

Matlab之统计数据分布并绘制直方图函数histogram

一、功能 直方图是一种将数据分组到条柱中的条形图。该函数可以统计数据在划分区间内的数量分布&#xff0c;同时以直方图的形式展示统计结果。 二、语法 1、histogram&#xff08;X&#xff09; 创建直方图X的图。该函数使用 一种自动分箱算法&#xff0c;返回具有统一宽度…