IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 面试(2021.07.21) -> 正文阅读

[网络协议]面试(2021.07.21)

面试(2021.07.21)

  1. 什么是内存泄漏?

    答:内存泄漏是指程序中已动态分配的的堆内存,由于某些原因无法释放或者未释放,造成的内存浪费。

  2. 深拷贝和浅拷贝?

    答:浅拷贝是指源对象与拷贝对象公用一份实体,仅仅是引用的变量不同(名称不同)其中任何一个对象的改动都会影响另一个对象。
    深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。
    一般来说,浅拷贝就是复制那个对象的指针。深拷贝就是复制了那个对象。

  3. 基类、派生类?

    答:基类:在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”
    派生类:利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。(,即子类(相对基类))

  4. TCP和UDP和各自适用的场景?

    答:

    1. TCP和UDP区别:
      a.连接:TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。UDP无连接。
      b.服务对象:TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。
      c.可靠性:TCP是可靠交付:无差错,不丢失,不重复,按序到达。UDP是尽最大努力交付,不保证可靠交付。
      d.拥塞控制,流量控制:TCP有拥塞控制和流量控制保证数据传输的安全性。UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。
      e. 报文长度:TCP是动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的。UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。
      f.首部开销:TCP首部开销大,首部20个字节。UDP首部开销小,8字节。(源端口,目的端口,数据长度,校验和)
    2. TCP和UDP适用场景:
      a.从特点上我们已经知道,TCP 是可靠的但传输速度慢,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,应该根据通信数据的要求而决定。
      b.若通信数据完整性需让位与通信实时性,则应该选用TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。
  5. 什么是智能指针?

    答:C++里面的四个智能指针:auto_ptr,shared_ptr,weak_ptr,unique_ptr其中后三个是C++11支持,并且第一个已经被11弃用。
    为什么使用智能指针:
    智能指针的作用是管理一个指针,因为存在一下情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域时,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是就函数结束时自动释放内存空间,不需要手动释放内存空间。

  6. C++析构函数的作用

    答:
    a.析构函数和与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。
    b.析构函数名也应与类名相同,只是在函数名前面加上一个位取反符~,eg: ~stud(),以区别与构造函数。它不能带任何参数,也没有返回值。只有一个析构函数,不能重载。
    c.如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
    d.如果一个类中有指针,且在使用的过程中动态的申请了内存,那么最好显示构造析构函数在销毁类之前,释放掉申请的内存空间,避免内存泄漏。

  7. 内联函数?

    答:内联函数是C++为提高程序运行速度。
    C++内敛是通常鱼类一起使用。如果一个函数是内敛的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。

  8. 为什么要动态申请?

    答:由于数组在声明的时候总要显式的指定一个长度,容易造成空间浪费或者空间不够用,使用不够灵活,所以使用了动态的申请。

  9. C++的注册表编程?

    答:注册表的组织方式跟文件目录比较相似,主要分为根键、子键和键值项三部分,与文件目录对应的话就是根目录、子目录和文件。

  10. 隐式类型转换?

    答:首先,对于内置类型,低精度的变量给高精度变量赋值会发生隐式类型转换,其次,对于只存在单个参数的构造函数的对象构造来说,函数调用可以直接使用该参数传入,编译器会自动调用其构造函数生成临时对象。

  11. 设计模式?

    答:a.设计模式和框架针对的问题域不同,设计模式针对面向对象的问题域;框架针对特定业务的问题域。
    b.设计模式比框架更为抽象,设计模式在碰到具体问题后,才能产生代码;框架已经可以用代码表示。
    c.设计模式是比框架更小的体系结构元素,框架中可以包括很多设计模式设计模式就像武术中基本的招式,将这些招式合理地组合起来,就形成套路(框架),框架是一种半成品。

——————————————分割线——————————————
上一次的面试:

  1. 进程和线程?

    答: 进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发; 线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实体性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都肚子占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。

  2. C++的锁?

    答:锁包括互斥锁,条件变量,自旋锁和读写锁。

  3. malloc与new的区别?

    答: malloc需要给定申请内存的大小,返回的指针需要强转。 new会调用构造函数,不同指定内存大小,返回的指针不用强转。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:11:58  更:2021-08-06 10:13:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:28:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码