面试笔记20180607

1、JVM类加载过程(JVM将.class文件里的类信息加载进内存,并解析成对应的类对象的过程)
   加载-- 将不同来源的.class文件通过类加载器加载进内存
   验证-- 检验.class文件是否符合JVM的规范(因为有的.class文件可能不是通过javac编译而来的)
   准备-- 为类变量分配内存,并赋初值(基本类型的初值为0,引用类型的初值为null,常量的初值为代码中设置的值)
   解析-- 将符号引用替换为直接引用(将方法名变量名类名替换为内存地址或者偏移量)
   初始化-- 对类变量初始化,执行类构造器,只对static修饰的变量或语句进行初始化
   
2、Http协议
   浏览器访问一个网址的步骤:
   1》搜索浏览器的DNS缓存,如果找到了网址的IP地址,直接访问该IP地址
   2》第一步没找到,搜索操作系统的DNS缓存,读取硬盘中host文件,里面有域名到IP地址的映射关系
   3》前面两部都没找到,浏览器向宽带运营商服务器或者域名服务器发起一个DNS解析请求
   4》拿到IP地址后,浏览器向该IP地址所在的服务器建立TCP连接(三次握手)
   5》TCP连接建立完成后,浏览器就可以向服务器发送HTTP请求了
   6》服务器接收请求后,根据路径参数,经后台处理返回请求的结果给浏览器
   7》浏览器显示返回的结果
   8》如果浏览器没有后续的请求,就会跟服务器发起TCP断开(四次挥手)
   HTTP请求由3个部分构成,状态行,请求头,请求正文
   状态行包括:请求方式(GET,POST,PUT,DELETE),路径(/books?name=123),协议(HTTP/1.1),各元素之间以空格分开
   请求头包括:Cookie,Host,User-Agent,Connection等
   请求正文:发送的数据,GET方式请求数据放在状态行中,请求正文为空,POST方式请求数据放在请求正文中
   GET:一般用于信息获取,不会修改资源,GET请求中参数数量有限,请求可以被缓存,可以被收藏为书签
   POST:可能修改服务器上的资源,请求可以被缓存,不可以被收藏为书签,安全性高
   
   HTTP响应包括3个部分:状态行,响应头,响应正文
   状态行包括:协议(HTTP/1.1),状态码(200  OK)
   响应头包括:Server,Date,Content-Length
   响应正文:服务器返回的数据
   
3、TCP/IP协议(四层协议:网络接口层,网络层,传输层,应用层)
   TCP(传输控制协议):提供数据可靠传输,面向连接,传输效率低,支持的应用协议有:Telnet,FTP,SMTP
   UDP(用户数据报协议):可靠性要求低,无连接,传输效率高,支持的应用协议有:NFS(网络文件系统),SNMP(简单网络管理协议),TFTP(通用文件传输协议),DNS(主域名称系统)
   TCP/IP协议与物理层和数据链路层无关
   OSI(七层):
   应用层:为操作系统或网络应用程序提供访问网络服务的接口
   表示层:设备固有数据格式和网络标准数据格式的转换
   会话层:负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理
   传输层:管理两个节点之间的数据传输,负责可靠传输
   网络层:地址管理和路由选择,数据单位为packet,路由器工作在这一层
   数据链路层:互联设备之间传送和识别数据帧,交换机工作在这一层
   物理层:数据单位为bit,中继器,集线器,双绞线工作在这一层
   
4、滑动窗口,拥塞窗口
   滑动窗口:接收方所建议的数据长度
   拥塞窗口:TCP发送方虽然接收到了接收方建议的数据长度,但发送方不知道传输路径负载能力,因此TCP发送方开始只发一小段数据,当收到ACK后,再增加每次发送的数据,直到达到接收方的处理能力上限或者传输路径的负载能力上限,
   发送方每次发送的数据长度就是拥塞窗口的大小
   

猜你喜欢

转载自blog.csdn.net/u010015933/article/details/80654098