C++面试题整理 1
1. new和malloc什么区别?
new和malloc都用于在堆上分配内存,new是c++中的关键字,分配内存后还会调用构造函数
2. std中unorded_map,map,multimap有什么区别?
- unorderd_map中元素不按键值排序,底层数据结构是哈希表,相对map查询速度快,内存开销大
- map中元素按键值排序,底层数据结构是红黑树,相对unorderd_map,查询速度慢,内存开销小
- multimap类似map,但是允许重复键值
3. C++中左值和右值的概念,以及使用右值常见的场景
简单来说,对于一个赋值表达式而言, 左侧的称之为左值,右侧的称之为右值。左值一般为常见的定义过的变量,在栈或堆上有具体的存储空间,右值一般为临时对象,作用域只限于赋值表达式期间。右值常见的有数字/字符常量,函数返回的非引用值,临时构造的对象。
4. C++内存泄漏怎么出现,如何定位与解决
内存泄漏是由于在堆上new出来的空间,没有delete释放掉导致的。可以通过重载new/delete加入log信息,比较申请和释放的内存,从而得知是否有内存泄漏;也可以通过各种检测工具,Windows下有UMDH,Linux下有valgrind工具
5. 解释下linux下虚拟地址空间
操作系统为了解决多进程管理中安全和效率问题,为每个进程分配的是虚拟内存地址,各内存地址相互隔离。在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,用户空间又分为栈,堆,数据,程序文件等。
6. 同步/异步与阻塞/非阻塞的区别
同步指的一条指令执行完,再执行下一条执行,各指令按照顺序依次执行,异步指的是,两条指令可以同时执行。阻塞指的是一个线程需要等待另一个线程的结果时,阻止当前线程继续向下执行,而非阻塞则是不阻止当前线程。
7. 有哪些架构类型
单体架构、分布式应用、微服务与Serverless
作者:robot2017
出处:https://www.cnblogs.com/stephen2023/p/18410719
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://www.cnblogs.com/stephen2023/p/18410719
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体