面试准备

C++

什么是面向对象
一种编程思想,通过对象来解决问题实现功能,将功能封装到类中,再通过类实例化为对象,提供调用功能的接口。是一种更符合现实,代码复用率更高,安全性更高的方法。

面向对象的三个特性
封装/继承/多态

封装: 将数据和函数封装到对象里,只像使用者提供接口。一是为了隐蔽细节,将设计者和使用者分开;二为了提高代码重用性,类可以有多个实例,多个对象。

继承:子类继承父类的属性和函数,拓展已有的模块,实现代码重用,也更符合现实。

多态:多种状态。多态的实现主要分为静态多态和动态多态,静态多态主要是重载,分为函数重载和运算符重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定,在虚继承关系中基类指针会根据指定的派生类对象,去调用相应的方法,相同的基类指针可以指向不同的派生类对象,从而对应不同的方法实现。

函数重载

在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

为什么可以由子类对象new一个父类对象,反之不行

子类对象继承父类对象,包含父类的成员变量和函数,但可能还要自己的一些扩充。用子类的对象赋值给父类对象,只需要把相应的值赋给父类对象,(切片)。但是父类对象赋值给子类的话会造成子类对象有些访问不到(内存越界)

struct,class,union的区别

首先,union包含多个数据类型,但同一时刻只有其中一个有值,union的大小是最大的数据类型的大小

class和struct在使用上比较相似,但是他们的实现原理是不一样的,另外主要是一些操作时的细节会不同,比如C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。

计算机网络

TCP三次握手
在这里插入图片描述
使用三次握手的原因:
第一次发送握手请求如果在网络滞留,在收到服务器返回的ACK前会有一段时间,这个时候客户端等待了一个超时重传时间后,可能会再发送一个连接请求;如果没有三次握手机制,可能就会建立起两个连接;在三次握手机制下,第三次握手只在收到第一个ACK时建立,避免了这个问题。

TCP四次挥手
在这里插入图片描述
四次挥手的原因:
客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。

TIME_WAIT的原因:
确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。(如果A直接CLOSED了,就收不到重传的连接释放请求了)
等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

TCP滑动窗口

发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。

TCP拥塞控制(慢启动、拥塞避免、快重传、快回复)
在这里插入图片描述
在这里插入图片描述
从输入url到显示页面,都经历了什么
一般会经历以下几个过程:

1、首先,在浏览器地址栏中输入url

2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。

3、在发送http请求前,需要域名解析(DNS解析)(DNS(域名系统,Domain Name System)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住IP地址。),解析获取相应的IP地址。

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。(TCP即传输控制协议。TCP连接是互联网连接协议集的一种。)

5、握手成功后,浏览器向服务器发送http请求,请求数据包。

6、服务器处理收到的请求,将数据返回至浏览器

7、浏览器收到HTTP响应

8、读取页面内容,浏览器渲染,解析html源码

9、生成Dom树、解析css样式、js交互

10、客户端和服务器交互

11、ajax查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值