面经回答【2021/3/1】

计算机网络

OSI七层模型和TCP/IP四层模型

在这里插入图片描述

浏览器输入url后的过程 , 输入一个用https协议的url到呈现出页面的过程

1. DNS解析 获得IP地址

  • DNS有迭代和递归查询。
  • 如果只知道IP地址是不行的,还要知道MAC地址(物理地址),ARP协议(IP地址->物理地址)。

2. 建立TCP连接

  • 三次握手,为什么?(因为会导致已经失效的连接请求的报文段又传到了服务端。并且两次握手也不能保证双方都互换了序列号)
    在这里插入图片描述

3. 发送HTTP请求

  • HTTP请求报文
  1. 报文首部

    1. 请求行(方法,url,HTTP版本)
    			方法:post(增),delete(删),put(改),get(查),head(查询首部信息)
    			HTTP版本:HTTP/0.9 HTTP/1.0 HTTP/1.1(长连接),HTTP/2.0
    2. 请求首部字段
    
  2. 报文主体

4. IP路由

  - 内部网关协议(RIP,OSPF)
  - 外部网关协议(BGP)

5. 服务器响应请求

   - 响应报文
  	报文首部:
  			1. 状态行:HTTP版本,状态码,状态短语(HTTP1.1 200 OK)
  						状态码:1xx 信息类状态码。2xx 成功状态码。3xx 重定向。
  								4xx 客户端错误。5xx 服务器错误。
  									 
  			2. 信息首部
  	报文主体:

6. 浏览器解析渲染页面

7. 断开连接

  -  TCP四次挥手,半关闭。

参考资料:浏览器中输入url后发生了什么 ||| 浏览器输入 URL 之后发生了什么(面试必问)计网系列文章

http协议各个版本

http /1.0与1.1 : (1.1版本加入了持久连接,一个TCP连接可以允许多个HTTP请求;)
为了解决1.1版本利用率不高的问题,提出了HTTP/2.0版本。

  1. 增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题(HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级);
  2. 头信息压缩
    HTTP 协议不带有状态,每次请求都必须附上所有信息。所以,请求的很多字段都是重复的,比如Cookie和User Agent,一模一样的内容,每次请求都必须附带,这会浪费很多带宽,也影响速度。
    HTTP/2 对这一点做了优化,引入了头信息压缩机制(header compression)。一方面,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
  3. 另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。

HTTP与HTTPS

问题:

http和https的区别
https是对称加密还是非对称加密
详细说下ssl连接的建立过程
然后又问了https,是如何验证证书有效的呢?

在这里插入图片描述
在这里插入图片描述

TCP与UDP的区别

  1. TCP面向连接 ,UDP无连接。
  2. TCP首部开销大(20B),UDP首部开销小(8B)。
  3. TCP有流量控制(滑动窗口)和拥塞控制(慢启动,拥塞避免,快重传,快恢复)。在这里插入图片描述
  4. TCP面向字节流(分块封装到多个TCP段中),UDP面向数据报(封装到单个UDP数据报中传送)。
  5. TCP可靠传输(适用于文件传输,远程登陆),UDP实时,高效(视频,即时通信)。
  6. TCP点到点,UDP支持一对一,一对多,多对多
    在这里插入图片描述

time_wait的作用

如果第四次的ACK服务器没有收到,那么服务器就会重传FIN。一来一回,2个MSL。在这里插入图片描述

操作系统

进程和线程的区别

  1. 资源角度:进程是资源分配的最小单位,线程是处理机调度的最小单位。
  2. 系统开销:进程切换系统开销大(有独立的代码段和数据段),线程切换开销小(共享进程资源,有独立的栈空间)
    在这里插入图片描述
  3. 健壮性:一个进程崩溃,不会对其他进程产生影响;而一个线程崩溃,会让同一进程内的其他线程也死掉。(一个进程可以有多个线程)
  4. 通信:进程间通信比较复杂,而同一进程的线程由于共享代码段和数据段,所以通信比较容易。
    参考资料

进程间通信方式

  1. 管道
  2. 消息队列
    在这里插入图片描述
  1. 共享内存。共享内存实现方式
    在这里插入图片描述
  1. 套接字socket(不同主机进程之间)
    在这里插入图片描述

线程间通信方式

  1. 临界区
  2. 互斥量
  3. 信号量(有限资源)
  4. 事件(信号)
    在这里插入图片描述

用户态和内核态

在这里插入图片描述

死锁概念,发生条件,解决

在这里插入图片描述

进程同步机制(信号量)

C++基础

多态

多态的表现形式:

  1. 父类指针可以引用派生类指针
  2. 父类对象可以引用派生类对象
    多态实现:虚函数表
    学习链接

重载重写区别

重载:方法名相同,返回值和函数参数可以不同(多态的体现)
重写:也叫覆盖,覆盖原来的方法,返回值,函数名,函数参数都要与原来的同。
参考

猜你喜欢

转载自blog.csdn.net/weixin_43154149/article/details/114254874
今日推荐