首页 > 编程语言 >C++面试题整理 1

C++面试题整理 1

时间:2024-09-12 17:46:52浏览次数:10  
标签:map 面试题 右值 虚拟地址 C++ 线程 内存 整理 new

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

标签:map,面试题,右值,虚拟地址,C++,线程,内存,整理,new
From: https://www.cnblogs.com/stephen2023/p/18410719

相关文章

  • cloud studio配置C++环境
    cloudstudio腾讯推出的云IDE,里面有很多现成的语言环境,这里讲一下C++的环境配置1.选择C++环境模板创建就可以了2.可以直接run或者g++编译3.安装插件第一个C++插件需要自己离线下载上传安装上去,在cloudstudio的插件商店里面搜索不到自行搜索怎么下载离线插件4task和laun......
  • CTF密码学基础知识整理
    一.常见编码转换(1)整数转ascii码INT->CHAR:chr(97)CHAR->INT:ord('a')(2)hex转ASCII>>>importbinascii>>>binascii.a2b_hex('666c6167')b'flag'>>>binascii.b2a_hex(b'flag')b'666c6167&......
  • 已成功入职字节,总结精选50个大模型高频面试题(附答案)
    觉得中大厂面试太难的,完全就是自己没准备充分,技术不到位,没准备的面试完全是浪费时间,更是对自己的不负责!.今天我给大家分享一下我整理的《精选50个大模型高频面试题》大模型面试专题和答案,其中大部分都是面试常问的面试题,可以对照这查漏补缺奥!祝大家早日上岸呀!1.简述GP......
  • 使用 Visual Studio Code 配置 C/C++ 开发环境
    VisualStudioCode(简称VSCode)是一款非常流行的代码编辑器,提供了丰富的扩展和配置支持,使其成为进行C/C++开发的一款理想工具。本文将详细介绍如何在VSCode中配置C/C++开发环境,涵盖安装必要的工具和插件、编写简单的C/C++程序、配置调试环境等内容。更多内容一、安装......
  • java社招面试题(亲身经历8w字,持续更新中)
    1.1pom文件的常见标签<groupId>:定义项目的组ID,通常是组织的域名倒写,如 com.example。<artifactId>:定义项目的工件ID,是项目的唯一标识符。<version>:定义项目的版本号,如 1.0.0。<packaging>:指定项目的打包类型,如 jar、war 等,默认为 jar。<dependencyManagem......
  • 2024年Java常见面试题整理
    1、java为什么要有包装类型?主要原因包括以下几点:处理基本数据类型的null值:基本数据类型(如int,double等)不能直接赋值为null,而包装类型(如Integer、Double)可以表示null值,这对于某些业务逻辑和数据处理来说非常有用。提供额外功能:包装类型提供了一些额外的方法和功能,这些......
  • elasticsearch学习笔记整理(含下面总结的面试题)
    elasticsearch是一个全文检索的搜索引擎Elasticsearch是一个基于Lucene的搜索服务器ES可以做全文检索、模糊查询(搜索)、数据分析(提供分析语法,例如聚合)。es是不能使用root用户进行启动的,要新创建一个用户才行创建用户:useraddqianfeng设置密码:passwdqianfeng早期es的结构......
  • 掌握 C++17:结构化绑定与拷贝消除的妙用
    C++17特性示例1.结构化绑定(StructuredBinding)结构化绑定允许你用一个对象的元素或成员同时实例化多个实体。结构化绑定允许你在声明变量的同时解构一个复合类型的数据结构(如结构体,std::tuple,std::pair,或者std::array)。这样可以方便地获取多个值,而不需要显式地调用std::......
  • C++知识点:size_t, a.at(i), reverse函数
    1.size_t`size_t`是一种在C/C++编程中非常常用的数据类型,它定义在`<stddef.h>`或者`<cstdlib>`等头文件中,通常用来表示**大小**或**长度**。###关键特性:1.**无符号类型**:`size_t`是无符号整数类型,表示它只能存储非负整数。因此,它不会用于存储负值,这使得它非常适合表示诸如......
  • C++ 指针
    声明int*ipl,*ip2;//ipl和ip2都是指向int型对象的指针doubledp,*dp2;//dp2是指向double型对象的指针,dp是double型对象因为引用不是对象,没有实际地址,所以不能定义指向引用的指针。指针值指针的值(即地址)应属下列4种状态之一:指向一个对象。指向紧邻对象所占空......