java面试(四)

IO流

在这里插入图片描述
在这里插入图片描述
1.Java中有几种类型的流?JDK为每种类型的流提供了哪些抽象类以供继承?

两种,字符流,字节流
字符流抽象类:InputStreamReader ,OutputStreamWriter,Reader,Writer
字节流抽象类:InputStream OutputStream

2.字节流与字符流的区别?

字节流,字节读写,传输数据基本单位为字节,采用ASCII编码,可以传输图片,视频,文本等。
字符流,字符(两个字节)读写,采用Unicode编码,传输文本较快,只能传输文本。

3.什么是序列化,如何实现序列化?

把Java对象转换为字节序列的过程叫序列化
只要对象实现了Serializable接口,该对象就可以进行序列化
使用ObjectOutputStream对象的writeObject(Object object);方法实现序列化。

4.什么是缓冲区?有什么作用?

缓冲区又称为缓存,它是内存空间的一部分。也就是说,内存空间中预留了一定的存储空间,这些存储空间呢是用来缓冲输入的数据和输出的数据,这部分预留的空间就被称作缓冲区。
java中流的操作都是在缓冲区完成的,要想把数据存到硬盘中可以用flush方法。

5.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法?

属于字符流
从字符输入流中读取文本并缓冲字符,以便高效的读取字符,还有一特点可以接收来自键盘的信息。

read()
//读取单个字符,范围是0-65535,如果已经超过范围,则返回-1
read(char[] cbuf,int off,int length);
//一次性读取一个字节数组,cbuf目标缓冲区,读取的字符数,如果已经到达流的末尾,则返回-1
readLine()
//这是一种比较常用的方法,读取一行文本,通常以"\n"或"\r"结束
close()
//关闭流,当不使用BufferedReader流之后,要使用close方法关闭

6.流如何关闭比较好,如果有多个流互相调用传入是怎么关闭的?

关闭流的方法写在finally语句块中,每一个流的关闭代码都要写在一个单独的try…catch语句块中
多个流互相调用只关闭最外层的流即可

7.为什么需要序列化?

序列化可以把对象从内存中转到硬盘中
序列化可用于对象的网络传输
序列化可用于对象深克隆

8.哪些属性不能被序列化?

被transient修饰符修饰的对象
静态变量不能被序列化

9.序列化ID作用?

在序列化的时候系统将serialVersionUID写入到序列化的文件中去,当反序列化的时候系统会先去检测文件中的serialVersionUID是否跟当前的文件的serialVersionUID是否一致,如果一直则反序列化成功,否则就说明当前类跟序列化后的类发生了变化,比如是成员变量的数量或者是类型发生了变化,那么在反序列化时就会报InvalidClassException异常。

10.transient关键字作用?

被transient修饰的变量不参与序列化和反序列化。

网络基础

11.TCP和UDP区别?

TCP和UDP都是网络传输层的协议。
TCP是面向连接的、可靠的、点到点的、基于字节流的传输层通信协议,速度相对较慢。
UDP是面向报文的、不可靠的、可多对多的传输,速度相对较快。

12.TCP三次握手

建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常.
第一次握手就是客户端给服务器端发送一个 SYN 报文,客户端进入SYN_SENT状态,
第二次就是服务器收到报文之后,会应答一个ACK报文给客户端,服务器进入SYN_RCVD 状态,
第三次握手就是客户端收到报文后再给服务器发送一确认确认的报文,客户端进入ESTABLISHED状态,服务器收到报文后进入ESTABLISHED状态,三次握手就成功了。

13.TCP四次挥手

刚开始双方都处于ESTABLISHED 状态,
第一次挥手:客户端发送一个 FIN 报文,进入FIN_WAIT1状态,
第二次挥手:服务器收到报文后,会告知服务器收到报文,发送一个ACK报文,进入CLOSE_WAIT 状态,
第三次挥手:服务端想断开的时候发送一个 FIN 报文,进入LAST_ACK状态,
第四次挥手:客户端收到FIN报文,给服务端发送ACK报文,进入CLOSED 状态,服务端收到ACK报文之后进入TIME_WAIT状态,经过2MSL后,客户端才进入CLOSED状态。

14.HTTP和HTTPS区别

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议,https更安全
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

15.常见HTTP状态码

200:请求成功。
400:你访问的页面域名不存在或者请求错误。
404:请求的页面不存在、已被删除或无法访问。
403:表示资源不可用,禁止访问
500:表示服务器出现错误。

16.常见HTTP请求方法

get、post、put、delete

17.浏览器输入url地址到显示主页过程

  1. 用户在浏览器中输入url地址
  2. NDS解析:将域名解析为IP地址
  3. TCP连接:TCP三次握手
  4. 发送HTTP请求
  5. 服务器处理请求并返回HTTP报文
  6. 浏览器解析渲染画面
  7. 断开链接:TCP四次挥手

18.GET和POST区别

GET和POST都是http的请求方法
GET通过URL进行参数传输数据,只能传文本,相对不安全
POST通过请求体传输数据,可以传文件、图像、视频等内容,相对安全

19.AJAX原理

通过javascript的方式,将前台数据通过xmlhttp对象传递到后台,后台在接收到请求后,将需要的结果,再传回到前台,这样就可以实现不需要页面的回发,数据实现来回传递,页面实现无刷新

20.七层模型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狴犴ys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值