当前位置: 首页 > news >正文

c++面试准备

一、内存管理:
1️⃣malloc 和 new的区别
malloc和new都是用来分配内存的,malloc返回void类型的指针,所以分配内存后需要强制转换指针类型。new直接返回所需类型的指针。
2️⃣智能指针[c++11标准]
1.std::unique_ptr
独占所有权,对象的所有权在指针之间转移时,原指针会失去对象所有权
2.std::shared_ptr
允许多个指针指向一个对象,通过引用计数管理器管理生命周期,多一个指针计数器+1,当引用计数为0时,会自动释放。
3.std::week_ptr
弱指针用于解决循环引用问题

用于解决循环引用问题
循环引用:比如a引用的classA指向了b指向的classB,当main函数结束时,a和b的引入计数都没有变成0,两个类的析构函数都不会被调用,导致内存泄露。

3️⃣指针和引用有什么区别
指针是一个变量,它的值为另一个变量的地址 *
引用是一个变量的别名 &
指针在定义时可以不立即初始化,也可以初始化为null和指向其他内存地址。引用在定义时必须初始化,且一旦初始化就不能再引用其他变量。
二、面向对象

  1. 什么是封装、继承和多态
    1️⃣封装
    隐藏内部实现的细节,只暴露必要的接口。
    2️⃣继承
    允许一个类基于另一个类拓展功能,实现代码的复用和层次化设计。
    3️⃣多态
    接口统一,形式多样化。
    值传递 和 引用传递、指针传递

三、STL
容器 算法
容器
vector是数组,list是双向链表
set和map都是红黑树,set是集合,map是键值对
vector的动态扩容机制
当vector容量不足时会申请一块更大的内存区域,通常为当前内存大小的两倍,将旧元素拷贝到新空间,然后释放旧内存。扩容会导致地址变化,迭代器失效。

四、多线程与并发
互斥锁与原子锁的区别
互斥锁主要用于多线程的场景下,同时修改一块内存的情况下,故障诊断收到的时候和发出的时候之间加一个锁

相关文章:

  • 基于Docker的前端环境管理:从开发环境到生产部署的实现方案
  • 【MySQL】表的增删查改(CRUD)(上)
  • 20250224解决在WIN10下东芝HGST的AIC 3.2T的PCIE3.0接口企业级固态只能怪找到1.8T的问题
  • LeetCode刷题---栈---844
  • MySQL数据库——多版本并发控制MVCC
  • 毕业离校管理系统的开发与需求分析
  • 软件需求管理办法,软件开发管理指南(Word原件)
  • 什么是图传技术?
  • Websocket、WebRTC在大模型中的应用
  • Linux主机用户登陆安全配置
  • LeetCode-69. x 的平方根
  • 第三章:工作线程池
  • 【蓝桥杯】1.k倍区间
  • VoIP之音频3A技术
  • Lecture 2 - Python
  • 【前端】【功能函数】eachTree,封装一个通用的遍历树结构的模板
  • Java 大视界 -- 深入剖析 Java 大数据实时 ETL 中的数据质量保障策略(97)
  • GMII(Gigabit Media Independent Interface)详解
  • 登录-10.Filter-登录校验过滤器
  • Docker 2025/2/24
  • 政府建设行业服务网站/做一个简单网页
  • 动漫人物做羞羞事的网站/泉州百度搜索推广
  • 专题网站建设/推广引流方法与渠道
  • 做任务给佣金的网站有哪些/新人学会seo
  • 做新浪微博网站需要/关键词优化技巧
  • 建设企业网站方法/seo排名软件有用吗