每天三道面试题2019-09-19

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/HardToFindName/article/details/101038244

1、http1.0、http1.1和http2.0的区别

  1. http1.0运行在TCP协议上,http1.1运行在SSL/TLS上,而SSL/TLS运行在TCP上,http2.0运行在SPDY/SSL上,而SPDY/SSL有运行在TCP上。
  2. http1.0是无状态的短连接,每一次请求都需要经过三次握手建立连接后才能进行传输;http1.0支持长连接,避免了每次请求都需要建立连接和销毁的开销,但是服务必须按照客户端请求的顺序返回相应的结果,如果前面的请求遇到阻塞,这会影响到后面的请求;http2.0兼容了http1.1,而且http2.0引入二进制数据帧和流的概念,其中帧对数据进行标识,进而可以在无序状态下进行数据传输,然后根据帧标识拼接还原好数据,以此基础上实现了多路复用,即在一个TCP连接上完成所有通信,这个连接可以承载任意数量的双向数据流,由于其数据的发送可以无序和拼装还原,所以http2.0还支持并行传输,解决了http1.1中的串行传输问题,但是由于其共享连接,所以可能导致关键消息被阻塞,http2.0使用消息优先级解决该问题,优先级高的消息会有限得到处理。
  3. http1.0不支持断点续传,http1.1支持断点续传
  4. http1.0没有Host头,http1.1新增了host头,如果请求中没有改字段则会报400错误。
  5. http1.1在http1.0基础上增加了缓存处理。
  6. http2.0拥有头部压缩技术,为每次请求节省了流量,并且还拥有服务器推送功能,如请一个带有<script src="main.js" >的index.html,http1.1和http1.0都会先请求index.html,然后再请求main.js,会经历两次请求,而http2.0会直接将两个资源同时响应给客户端,相比较其他两种协议,相当于将资源进行了推送。

2、下面的代码输出的结果为?

public static void main(String agrs[]){
	Integer f1 = 100, f2 =100, f3 = 150, f4 = 150;
	System.out.println(f1 == f2);
	System.out.println(f3 == f3);
}

输出结果为:

true
false

当给Integer赋一个int值时,如果该int值在-128到127间,会直接返回在常量池中的Integer对象,所以f1和f2是指向同一个对象,返回true;当int值不在该范围时会在堆中创建新的对象,所以f3和f4指向堆中不同的对象,故他们值不同(引用类型==比较的是地址),返回false。

3、mysql主键索引和unique索引的区别

  1. 主键索引在一张表中只有一个,unique索引可以有多个
  2. 主键列不允许空值,unique列允许有空值
  3. 主键索引和unique索引都是键,只是主键是逻辑键,索引是物理键,逻辑键不需要存储在磁盘上,物理键会存储在磁盘上。
  4. 数据库系统会根据主键自动生成唯一索引,所以主键索引也是unique索引,但是unique索引不都是主键。

猜你喜欢

转载自blog.csdn.net/HardToFindName/article/details/101038244
今日推荐