• 2017年8月8日


    1.tcp和udp的区别?

    a.tcp是面向连接的,udp是无连接的

    b.每一条tcp仅支持一对一通信,udp支持1对1、1对多、多对1和多对多的通信

    c.tcp提供可靠交付的服务,udp使用尽最大努力交付

    d.tcp面向字节流,udp面向报文

    e.tcp有拥塞控制,udp没有拥塞控制

    f.tcp首部开销最少20个字节,udp首部开销只有8个字节

    2.指针和引用的区别?

    a.指针可以有const,引用不可以有const

    b.指针可以为空,引用不可以为空

    c.sizeof引用的大小为引用所指变量的大小,sizeof指针的大小为指针所属类型的大小

    d.指针的值可以改变,引用的值可以改变

    e.指针可以有多级,引用只能是一级

    3.进程间通信的方式?最高效的是哪种方式?

    a.管道

    b.消息队列

    c.共享内存

    d.套接字

    其中共享内存最高效,共享内存是一个进程映射一段可以被其他进程所访问的内存 也就是说 一个进程创建,多个进程访问。

    4.有名管道和无名管道的区别?

    无名管道只能在具有亲缘关系的进程间使用(进程的亲缘关系是指父子进程关系)

    有名管道允许无亲缘关系进程间的通信

    5.C++多态是如何实现的?虚函数表存放在什么地方?

    多态可以通过 虚函数、覆盖、抽象类、模板。虚表指针存储在对象的内存空间,所以虚函数表也应该存储在对象的内存空间。(虚函数表里有虚表指针)

    6.tcp在传输的过程中是如何保证可靠连接的?

    超时重传,发送端在发送数据后为每一个数据包保留一个记录,同时发送端发送数据包是启动一个计时器,当计时器过期时仍未收到该数据包的确认,发送端将重新发送该数据包。发送方只有收到数据包的确认消息后,才清除该数据包记录。

    7.list和vector的区别?

    a.vector是连续存储的,list是离散存储的

    b.list是双向的,vector是单向的

    8.智能指针?

    9.C++11的新特点?

    a.支持long  long类型

    b.可以对 vector,struct等等进行列表初始化 vector<int> a= {1,2,3,4,5,6};

    c.推出了nullptr 空指针

    d.using 类型别名:和关键字typedef的作用一样用来声明一个类型的别名

    10.STL迭代器失效的解决办法?(不通过改代码的方式)

    11.vector当空间不够存放数据时,然后会申请一篇更大的空间,把原来的数据拷贝过去。

     12.构造函数和析构函数可以为虚函数吗?构造函数和析构函数里面会调用虚函数吗?

    构造函数不能声明为虚函数,因为虚函数对应一个虚表指针,这个虚表指针是存储在对象的内存空间的,如果构造函数是虚的,就需要通过虚表指针来调用,可是对象的内存空间还不存在,也就是说虚表指针不存在。

    析构函数可以声明为虚函数,而且有时必须声明为虚函数,在类的继承中,如果有基类指针指向派生类,delete基类指针的时候,如果析构函数不是虚函数,会直接析构掉基类,派生类的析构函数不会被执行,直接后果是内存泄漏。

    在构造函数中可以调用虚函数,但是最好不要这样做,因为在调用构造函数时,这时候类里面的变量可能还未被初始化,虚函数这时候可能会访问内存中未知的区域。

    在析构函数里面可以调用虚函数,但最好不要这样做,因为调用析构的时候类里面的变量可能已经被析构了,虚函数这时可能会访问内存中未知的区域,比较容易出错。

    13.类的私有成员是这个类的  is还是has

    14类的保护成员的作用?

  • 相关阅读:
    网络爬虫的基本原理(一)
    灵光一闪-软件应用
    sql语句变量定义和样例
    windows+linux环境部署搭建
    jdk1.6安装
    系统部署
    tomcat部署
    maven各种插件在总结
    maven项目tomcat部署问题
    两种数据源
  • 原文地址:https://www.cnblogs.com/china-sdd/p/7306237.html
Copyright © 2020-2023  润新知