每日刷题3.155道算法+15道面试 - 阿V

Posted V鸦_阿V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日刷题3.155道算法+15道面试 - 阿V相关的知识,希望对你有一定的参考价值。

今天4399面试啦!!!加油。

面试题(计算机网络)

1. TCP三报文握手 / 能否只两次握手

能否只两次握手呢?答案是不能的:

1.如果客户端有一条失效了很久的请求连接报文段,因为网络滞留导致连接结束了才到达服务端,如果只两次握手,那么这时服务端就会直接建立连接,而服务端发送的确认报文段也无客户端响应,导致服务端浪费资源,一直等待客户端响应。

2.如果直接两次握手,只能说明客户端与服务端建立了正常通信,却不能说明服务端与客户端建立正常通信。

2. TCP四报文挥手

 close-wait这段时间是等待服务器将剩下的数据处理完。

3. TCP如何保证可靠性

1. 防止数据丢包的确认应答机制,以及丢包后的超时重传。

2. 防止数据乱序的序列号。

3. 滑动窗口动态控制数据的传输速度,也就是流量控制。

4. 防止网络瘫痪的拥塞控制。

4.  HTTP和HTTPS的区别,以及HTTPS的优缺点

 区别:

1. HTTP协议以明文的方式在网络中传输数据,HTTPS是在HTTP的基础上将数据进行TLS/SSL加密。

2. HTTPS在TCP三次握手的基础上加个SSL握手。

3. HTTPS协议需要在服务器申请证书,客户端安装对应的根证书。‘

4. HTTP协议端口号为80,HTTPS端口号为443。

HTTPS优点:

1. 安全性高

2. 确保数据发送对象正确。

缺点:

1. 建立连接的握手延时高,由于多一次安全握手

2. 部署成本高,占用CPU资源多。

5. IP地址的作用,以及MAC地址的作用

 MAC地址是硬件地址,定义网络设备位置,由数据链路层负责。IP地址由IP协议提供的统一的地址格式,为互联网的每一个网络和主机分配一个逻辑地址,来抵消物理地址的差异。

6. 用户从输入URL到显示页面整个过程 

 DNS解析URL,接着传输层的TCP建立连接,发送HTTP请求,服务器处理并返回HTTP报文,浏览器解析并渲染页面。

7. TCP拥塞控制?以及达到什么情况的时候开始减慢增长速度 

 什么是拥塞控制?拥塞控制是为了防止过多的数据注入网络,从而使网络中的路由器或者链路过载,是全局网络流量整体性的控制,连接的双方都有一个拥塞窗口(cwnd)。

1. 慢开始:最开始发送方的拥塞窗口为一,由小到大递增。每经过一个传输轮次,拥塞窗口cwnd加倍,当cwnd超过慢开始门限,使用拥塞避免算法。

2. 拥塞避免算法:当cwnd超过慢开始门限,每经过一个往返时间RTT,cwnd+1。一旦发现网络拥塞,就将慢开始门限设置为当前值的一半,并重新设置cwnd为1,重新慢开始。

3. 快重传:接收方每收到一个失序的报文段就立即发出重复确认,发送方只要收到3个重复确认就立即重传。

4. 快恢复:当发送方连续收到三个重复确认,就将慢开始门限减半,将当前窗口设置为慢开始门限,并采用拥塞避免算法。

8. TCP/IP数据链路层的交互过程

 网络层等到数据链路层用MAC地址作为通信目标,数据包到达网络准备往数据链路层发送时,首先会去自己的arp缓存表(ip-mac对应关系)查找目标ip的mac地址,查到就将目标ip的mac地址封装到链路层数据包的包头。如果没找到,则广播寻找目标mac地址。

9.  TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT状态,它的作用是什么?

 为了能够确保发起方的最后一次报文能到达,如果中途丢包,可以接收到对方的重传报文段进行超时重传。

10. GET和POST的区别 

 GET请求:获取指定页面信息

POST请求:向指定资源提交数据进行修改

区别:

1. get参数通过url传递,post在request body中。

2. get请求在URL中传递参数有长度限制,post没有。

3. get比post更不安全,因为参数都暴露在url中。

4. get请求只能进行url编码,而post支持多种编码方式。

5. get请求会被浏览器主动cache,post不会。

6. get请求会完整保留在浏览历史记录里,而post中的参数不会。

7. get产生一个TCP数据包,而post产生两个数据包。

11. 阻塞,非阻塞,同步,异步

 阻塞:调用者在事件没有发生的时候,一直等待事件发生,不能处理其他任务。

非阻塞:调用者在事件没有发生时,可以处理事务。

同步:调用者循环查看事件发生情况。

异步:调用者无需查看事件发生情况,而是等待注册在时间上的回调函数通知。

12.  简单说一下http协议

 HTTP协议是基于TCP/IP通信协议来传递数据,属于应用层的面向对象的协议。HTTP协议工作于客户端-服务端架构之上。

优点:

1. 简单快速,发送请求只需传送请求方法和路径。

2. 灵活:允许传输任何类型的数据对象。

3. 无连接:每次连接只处理一个请求。

4. 无状态:处理请求无记忆功能。

面试题(操作系统)

13. 进程间的通信的几种方式

1. 管道(pipe)和命名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,还允许无亲缘关系进程间的通信。

2. 信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程事件发生。

3. 消息队列:消息队列是消息的链接表,克服上两种通信方式信号量有限的缺点,具有写权限的进程可以向消息队列添加消息,具有读权限的进程可以从消息队列读取信息。

4. 共享内存:最有用的进程间通信方式。可以使多个进程访问同一块内存空间,不同进程可以及时看到对方进程中对共享数据的更新。

5. 信号量:主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段。

6. 套接字:用于网络不同机器之间的进程通信。

14. 线程同步的方式

1. 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。

2. 信号量:允许同一时刻多个线程访问同一资源,需要控制同一时刻访问此资源的最大线程数量。

3. 事件(信号):通过通知操作的方式来保持多线程同步,方便实现多线程优先级的比较操作。

今天的4399面试感觉还不错,有一些基础知识不扎实没答出来,收拾一下心情继续努力,星期四有网易笔试,星期五有阿里笔试,之前的游戏测试觉得真不适合就拒绝了,没想到他帮我转到了 游戏开发,太神奇了,加油加油!!!

以上是关于每日刷题3.155道算法+15道面试 - 阿V的主要内容,如果未能解决你的问题,请参考以下文章

每日刷题3.135道算法+15道面试 - 阿V

(Java实习生)每日10道面试题打卡——JVM篇

(Java实习生)每日10道面试题打卡——JVM篇

(Java实习生)每日10道面试题打卡——JVM篇

(Java实习生)每日10道面试题打卡——JVM篇2

python每日经典算法题5(基础题)+1(中难题)