zoukankan      html  css  js  c++  java
  • C++常见面试题:

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

      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

  • 相关阅读:
    [译] 第二十天:Stanford CoreNLP
    [译] 第十九天: Ember
    [译] 第十八天:BoilerPipe
    [译] 第十七天:JBoss Forge
    [译] 第十六天: Goose Extractor
    [译] 第十五天:Meteor
    [译] 第十四天:Standford NER
    [译] 第十三天:Dropwizard
    [译] 第十二天: OpenCV
    hadoop-MR
  • 原文地址:https://www.cnblogs.com/Zac1010/p/11193301.html
Copyright © 2011-2022 走看看