32个Java面试必考点(一)操作系统与计算机网络

操作系统与计算机网络

一,操作系统

进程与线程

区别与联系:

进程是系统资源分配的最小单位,线程是程序执行的最小单位;
进程使用独立的数据空间,线程使用进程的数据空间;

线程的生命周期

在这里插入图片描述

线程调度:
  1. 时间片轮转调度(RR)Round Robin
    每个队列任务都分时间片,介于先进先出和最短耗时任务优先之间,任务完成时间顺序是以耗时时间从小到大排列的
    优点:1、每个任务都是公平调度;2、哪怕耗时短的任务在耗时长的任务后面,也可以快速调度执行耗时短的任务
    缺点:1、上下文切换开销大,尤其是CPU缓存;2、时间片如何设置?(设置时间短了,调度开销增大,设置时间长,那最极端就是FIFO一样)
    适用场景:耗时差不多的任务
    不适用场景:任务需要大量计算,对IO读写任务
  2. 先来先服务调度
    先进先出(FIFO)
    优点:1、任务切换开销小;2、吞吐量大;3、先来先做公平性
    缺点:1、响应时间高
  3. 优先级调度
  4. 多级反馈队列调度
  5. 高响应比优先调度
    是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法
    既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。
    优点:短作业与先后次序的兼顾,且不会使长作业长期得不到服务
    缺点:响应比计算系统开销,增加系统开销
  6. 最短耗时任务优先(SJF)
    优点:1、响应时间比较低
    缺点:1、耗时时间长的任务一直在等,形成饥饿;2、频繁切换线程上下文,额外开销增大;
  7. 最大最小公平算法
    比如有10份资源,四个线程想要使用,每份2.5,如果a剩下0.5,则bcd平分8,以此类推;
线程切换的步骤:

(多线程课程中详细讲解)

进程间通信:(Linux下的IPC)

了解六种进程通信方式的原理适用场景,中间件研发的时候会考察

  1. Pipe
  2. MessageQueue(消息队列)
  3. 共享内存
  4. UnixSocket
  5. Signal
  6. Semaphore

进程间数据共享的场景可以使用共享内存,
进程间数据交换的场景可以使用UnixSocket或者MessageQueue

协程:

协程更轻量化;
是在用户态进行调度;
切换的代价比线程上下文切换的代价低很多;
也可以了解Java的第三方协程框架如kilim和Quasar

Linux常用命令

考察候选人线上排查问题的经验;
awk
top
netstat
grep
less
tail

死锁

内存分页管理与Swap机制

任务队列与CPU Load

死锁,内存分页管理与Swap机制,任务队列与CPU Load在分析线上问题时十分有用,

扩展知识点

  1. 内存屏障
  2. 指令乱序
  3. 分支预测
  4. CPU亲和性(affinity)
  5. Netfilter与iptables

二,网络知识

4/7层模型(基础)

在这里插入图片描述

OSI七层模型

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  1. 物理层(网线,光纤,无线)
    机械电子定时接口通信信道上的原始比特流传输。
  2. 数据链路层(交换机)
    物理寻址,同时将原始比特流转变为逻辑传输线路(数据帧)。mac地址表
  3. 网络层(逻辑IP地址)
    逻辑寻址(从一个ip到另一个ip)控制子网的运行,如逻辑编址、分组传输、路由选择。
  4. 传输层(TCP(可靠)、UDP(不可靠))
    可靠和非可靠传输,接受上一层的数据,在必要的时候吧数据进行分割,并将这些数据交给网络层,且保证这些数据段有效达到对端
    TCP:传输控制协议
    UDP:用户数据报协议
  5. 会话层
    不同机器上的用户之间建立及管理会话。
  6. 表示层
    信息的语法语义以及它们的关联,如加密解密、转换翻译、压缩解压缩
  7. 应用层
    各种应用程序协议HTTP,FTP、SMTP、POP3
TCP/IP四层模型

网络接口层、网际层、传输层、应用层
在这里插入图片描述

  1. 网络接口层
    通常包括操作系统中的设备驱动成语和计算机中对应的网络接口卡。它们一起处理与电缆(或其他传输媒介)的物理接口细节。
  2. 网际层
    逻辑链路寻址,TCP/IP协议族中,网络层协议包含
    IP协议(网际协议),
    ICMP协议(Internet互联网控制报文协议),ping用的就是这个
    IGMP协议(Internet组管理协议)
  3. 传输层
    TCP:传输控制协议
    UDP:用户数据报协议
  4. 应用层
    特定的应用程序的细节,几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:
    Telnet 远程登陆
    FTP 文件传输协议
    SMTP 简单邮件传送协议
    SNMP 简单网络管理协议

TCP协议

1. 三次握手建立链接
2. 四次挥手关闭链接
3. 报文状态标志与链接状态
(在排查网络问题时非常重要,必须要明白协议状态才方便抓包分析)
4. Nagel算法与ACK延迟
(需要了解产生的背景,是要解决小包问题,提高数据载荷比,数据比较敏感,发送频率比较低的场景可以关闭Nagel算法)
5. Keepalive
(长时间没有数据发送的场景下,TCP保持链接可用的机制,Keepalive需要知道开启和关闭的方式)
6. 滑动窗口与流量控制
(需要了解TCP是如何通过滑动窗口机制来实现流量控制的)

TCP协议的特点:
是传输层协议,对应OSI网络模型的第四层传输层,特点是基于链接(点对点),就是传输数据前要建立好链接,然后再进行传输,一旦建立就可以进行双向通信

传输时基于字节流而不是报文,将数据按照字节大小进行编号,接收端通过ACK确认收到的数据编号,通过这种机制保证数据的有序性完整性,因此TCP能提供可靠性传输

还能够提供流量控制能力,通过滑动窗口来控制数据的发送速率,滑动窗口的本质是动态缓冲区,接收端根据自己的处理能力,在TCP的Header中动态调整窗口大小,通过ACK应答包通知给发送端,发送端根据窗口的大小调整发送的速率;

还考虑到了网络问题导致大量重传,进而导致网络问题进一步恶化,因此提供了拥塞控制,主要用到了慢启动拥塞避免拥塞发生快速恢复四个算法;

TCP实现细节
  1. 8种报文状态
  2. 滑动窗口工作流程
  3. KeepAlive的参数设置
  4. Nagel算法的规则
    特定场景下Nagel和ACK延迟机制配合使用会出现延迟40毫秒,超时后才能回复ACK包的问题

三次握手建立连接
在这里插入图片描述

面试时需要了解三次握手是建立双向传输链接,需要了解状态变化
SYN洪泛攻击发生的原因就是,Server端收到Client的SYN请求后发送了SYN和ACK包,但是Client不进行回复,导致Server大量的链接处于SYN_RCVD状态,影响其他正常请求的建连,可以通过设置Linux的TCP参数SYNACKRetry。。。=0来加快半连接的回收速度,或者调大MAX_SYNDALog来应对少量的SYN洪泛攻击

四次挥手断连
在这里插入图片描述

先发起的一端为Client,TIME_WAIT后需要等待两倍的MSL(最大报文段生成时间)来保证连接的可靠关闭,才会进入CLOSED状态,来保证连接的可靠关闭;
Server收到ACK后直接进入CLOSED状态

面试题:为什么要等待两倍的MSL(最大报文段生成时间)才关闭连接
1.保证TCP全双工连接能可靠关闭
2.保证重复的数据段从网络中消失,防止端口被重用的时候可能会产生数据混淆

面试题:提到断链的问题时,可提到应用中会出现大量的Socket处于TIME_WAIT和LOSE_WAIT状态的问题
一般开启Linux的TCP参数twreues和twresaiqw,能够加快TIME_WAIT状态的回收
而出现大量的CLOSE_WAIT状态一般是被动关闭端的代码bug,没有正确关闭连接导致的

面试题:Client为什么要等待双倍的MSL时间才会关闭连接

  1. 要保证TCP的全双工连接的可靠关闭;
  2. 要保证这次连接中重复的数据段能够从网络中消失,防止端口被重用的时候可能产生数据混淆

HTTP

1.协议()
Method
Header
Cookies
2.UrlEncode
3.状态码(404,503,302)
4.HTTPS(需要了解交互流程)
5.HTTP2(比较新)
多路复用
Stream(流式交互)
流量控制
服务端推送
头部压缩

UDP

非链接
非可靠传输
效率高

TCP与UDP的区别
  1. TCP面向连接
    UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说通过TCP连接传送的数据,无差错,不丢失,不重复且按序到达;TCP通过校验、重传控制,序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制
    UDP尽最大努力交付,即不保证可靠交付
  3. UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信或广播通信。
  4. 每一条TCP连接只能是点到点的
    UDP支持一对一,一对多,多对一和多对多的交互通信
  5. TCP对系统资源要求较多
    UDP对系统资源要求较少

QUIC(HTTP3)

是基于UDP协议的,但提供了类似TCP的可靠性保障和流量控制
避免HTTP2的前序包阻塞(HOL阻塞)
零RTT建连
FEC前向纠错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值