基础知识汇总

1、Java、C 和 C艹 的区别

面向过程:C语言面向过程。主要关注的是数据的流转

面向对象:Java 和 C艹 面向对象。主要关注的是不同对象之间如何交互。

Java把C艹的复杂语法、手动释放内存以及容易造成编程错误的指针等弊端都屏蔽了。

在这里插入图片描述

2、基本数据类型及其包装类

  • 整型:byte(1)、short(2)、int(4)、long(8)、char(4) — ()内为字节数
  • 浮点型:flout(4)、double(8)
  • 特殊型:boolean - -> 虚拟机规范中表述如下:boolean值在编译后使用int数据类型来代替,因此boolean值为4个字节,boolean类型数组共用byte类型的baload和bastore指令,因此boolean类型数组中boolean为1个字节。
  • 包装类:Boolean,Character,Byte,Short,Integer,Long,Float,Double

3、int和Integer的比较

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

对于第四条、我们还可以根据以下valueOf方法的字节码指令来理解

在这里插入图片描述
可以看一下以上代码的字节码,具体如何理解可以参照R大的一篇文章,以及字节码指令手册

在这里插入图片描述
4、什么是哈希表

hash函数能够根据key,计算出key的存储地址,哈希表就是用来记录key以及key的地址的一个map映射表

5、集合类以及Map类层次结构

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

6、hashset与treeset的区别

  • hashset:基于hashmap实现。由于hashmap存储的是一个键值对,并且当put元素的key相同时,只会覆盖value,key本身并不会改变,并且也不会在hashmap中新增一个相同的key。因此hashset基于这一点保证了元素的无重复性。
  • treeset:基于treemap实现。有序无重复元素的集合。通过实现comparable接口实现排序,也可自然排序。

7、ArrayList、LinkedList、Vector比较

  • ArrayList:动态数组,底层基于数组实现。按索引查询,查询时间复杂度:O(1)。默认初始容量为10,线程不安全,不可设置扩容大小,扩容默认为原来的0.5倍。
    使用场景:对于集合的查询操作多
  • Vector:与ArrayList相似。区别在于:线程安全开销大、可以设置扩容大小、默认扩容为原来的1倍
    使用场景:对于集合的查询操作多且要求线程安全
  • LinkedList:底层基于链表实现。查询时间复杂度:O(n)。由于只需要操作指针,增删元素性能高。
    使用场景:对于集合的增删操作多

ArrayList实现排序:

  • Collections.sort()
  • 重写Comparable接口的compareTo方法:实现基于一个字段排序,不能根据需要选择字段
  • 重写Comparator接口的compareTo方法:实现基于两个字段排序,需传递两个对象参数

8、hashmap、hashtable、concurrenthashmap区别

内容过多,不做赘述,转至其他链接
hashmap底层原理
hashtable底层原理
concurrenthashmap底层原理

9、IO流结构

在这里插入图片描述

10、UDP与TCP的区别

在这里插入图片描述

11、TCP三次握手和四次挥手

12、TCP/IP协议栈以及OSI七层协议

13、用户访问一个网站的步骤

14、Http1.0 和 2.0 区别

新的二进制格式(Binary Format),HTTP1.x 的解析是基于文本。基于文本协议的格式解析存在
天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认 0
和 1 的组合。基于这种考虑 HTTP2.0 的协议解析决定采用二进制格式,实现方便且健壮。

多路复用(MultiPlexing),即连接共享,建立起一个连接请求后,可以在这个链接上一直发送,不
要等待上一次发送完并且受到回复后才能发送下一个(http1.0 是这样),是可以同时发送多个请求,
互相并不干扰。

header 压缩,如上文中所言,对前面提到过 HTTP1.x 的 header 带有大量信息,而且每次都要重
复发送,HTTP2.0 利用 HPACK 对消息头进行压缩传输,客服端和服务器维护一个动态链表(当一
个头部没有出现的时候,就插入,已经出现了就用表中的索引值进行替代),将既避免了重复 head
er 的传输,又减小了需要传输的大小。(Hpack https://www.jianshu.com/p/f44b930cfcac)

服务端推送(server push),就是客户端请求 html 的时候,服务器顺带把此 html 需要的 css,js
也一起发送给客服端,而不像 http1.0 中需要请求一次 html,然后再请求一次 css,然后再请求一
次 js。

15、JDBC连接数据库步骤

https://www.cnblogs.com/liubin1988/p/7865907.html

--------------------- 待更新 ---------------------

猜你喜欢

转载自blog.csdn.net/qq_43186095/article/details/103535878