一、进程和线程的概念和区别

  1、进程是系统进行资源调度的基本单位

  2、线程是系统进行运算调度(处理器分配{CPU、内存})的基本单位

二、进程间的通信

  进程间的通信共有5种:

  1、管道

    通常指无名管道

    它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。

  2、FIFO

    也称为命名管道,它是一种文件类型

    FIFO可以在无关的进程之间交换数据,与无名管道不同

  3、消息队列

    是消息的链接表,存放在内核中

    消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。

  4、信号量

    是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据

    信号量用于进程间同步,若要在进程间传递数据需要结合共享内存

    基于操作系统的 PV 操作,程序对信号量的操作都是原子操作

  5、共享内存

    指两个或多个进程共享一个给定的存储区

    共享内存是最快的一种 IPC,因为进程是直接对内存进行存取

    因为多个进程可以同时操作,所以需要进行同步

三、引用和指针的区别

    指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作(申明一个引用的时候,切记要对其进行初始化

    引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作

四、.h头文件中的ifndef/define/endif 的作用?

防止头文件里的声明有冲突。

五、#include<file.h> 与#include "file.h"的区别?

前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h

六、智能指针:Effective C++ 建议我们将对象放到智能指针里,可以有效的避免内存泄露。

   什么是智能指针?
  一种类似指针的数据类型,将对象存储在智能指针中,可以不需要处理内存泄露的问题,它会帮你调用对象的析构函数自动撤销对象(主要是智能指针自己的析构函数用了delete ptr,delete会自动调用指针对象的析构函数,前提该内存是在堆上的,如果是在栈上就会出错),释放内存。因此,你要做的就是在析构函数中释放掉数据成员的资源。
  

   四种智能指针:

      STL一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr和weak_ptr

未完待续。。。。。

参考链接:

https://blog.csdn.net/wh_sjc/article/details/70283843

https://www.cnblogs.com/zgq0/p/8780893.html

C++常见面试题:的更多相关文章

  1. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  2. Web开发的常见面试题HTML和HTML5等

    作为一名前端开发人员,HTML,HTML5以及网站优化都是必须掌握的技术,下面列举一下HTML, HTML5, 网站优化等常见的面试题: HTML常见面试题: 1. 什么是Semantic HTML( ...

  3. 常见面试题之ListView的复用及如何优化

    经常有人问我,作为刚毕业的要去面试,关于安卓开发的问题,技术面试官会经常问哪些问题呢?我想来想去不能一股脑的全写出来,我准备把这些问题单独拿出来写,并详细的分析一下,这样对于初学者是最有帮助的.这次的 ...

  4. iOS常见面试题汇总

    iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...

  5. JDBC常见面试题

    以下我是归纳的JDBC知识点图: 图上的知识点都可以在我其他的文章内找到相应内容. JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步骤 ? 注册数据库驱动. 建立数据库连接. ...

  6. Mybatis常见面试题

    Mybatis常见面试题 #{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据 ${}对传递进来的参数原样拼接在SQL中 #{}是 ...

  7. JavaSE:数据类型之间的转换(附常见面试题)

    数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...

  8. 整理的最全 python常见面试题(基本必考)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  9. PHP常见面试题汇总(二)

    PHP常见面试题汇总(二)   //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1, ...

  10. java常见面试题及答案

    java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...

随机推荐

  1. Confluence 6 分享一个文件

    协同合作和编辑不仅仅是发生在页面中,很多时候你需要与你的项目小组针对文档,报告,图片,表格进行协同操作.不管是针对性的市场计划或者一个完整的项目计划,你可以在 Confluence 中让你的项目小组成 ...

  2. cogs服务点设置(不凶,超乖) x

    cogs3. 服务点设置 ★   输入文件:djsa.in   输出文件:djsa.out   简单对比时间限制:1 s   内存限制:128 MB 问题描述为了进一步普及九年义务教育,政府要在某乡镇 ...

  3. 【CUDA 基础】4.1 内存模型概述

    title: [CUDA 基础]4.1 内存模型概述 categories: - CUDA - Freshman tags: - CUDA内存模型 - CUDA内存层次结构 - 寄存器 - 共享内存 ...

  4. SpringMVC——返回值类型

    1.void作为返回值类型 如果你的方法写成了Void就跟原来Servlet含义是差不多的 @RequestMapping("/index*") public void first ...

  5. 28.Python list列表详解

    在实际开发中,经常需要将一些(不只一个)数据暂储起来,以便将来使用.说到这里,一些读者可能知道或听说过数组,它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的各个元素.但使用数组存储数据有 ...

  6. 使用powershell管理域用户

    在域内环境中,常常需要使用命令行管理域用户,此时可以使用Active Directory中的命令行工具Dsquery.exe,或CSVE,以及Ldifde等,其实,使用Windows Powershe ...

  7. hadoop+zookeeper+hbase伪分布式安装

    基本安装步骤 安装包下载 从大数据组件下载地址下载以下组件安装包 hadoop-2.6.0-cdh5.6.0.tar.gz hbase-1.0.0-cdh5.6.0.tar.gz zookeeper- ...

  8. tp5最强分页 自定义model,控制器引用。只显示一页

    1.不多逼逼 model 代码 <?phpnamespace app\common\model; use think\Model; class Fpage{ private $page;//当前 ...

  9. koa 基础(三)路由的另一种写法

    1.配置路由 app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 ...

  10. JS判定数据类型

    1.typeof                我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和nu ...