Java 面试题巩固复习(五)

点击上方“ 程序员小秘圈 ”,选择“置顶公众号”
关键时刻,第一时间送达!

系列文章java

Java 面试题巩固复习(一)
程序员

Java 面试题巩固复习(二)web

Java 面试题巩固复习(三)面试

Java 面试题巩固复习(四)数组

分享几个Java 基础面试题,也是面试官很是爱问的题目,你能够先看看题目,若是真的遇到了这些题目,是否能立马想出来答案,而且很好的组织语言说出来!tomcat


☛  题目微信


一、线程的基本概念、线程的基本状态以及状态之间的关系网络

二、字节流与字符流的区别编辑器

三、什么是java序列化,如何实现java序列化?分布式


1


线程的基本概念、线程的基本状态以及状态之间的关系


一个程序中能够有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每一个线程上都关联有要执行的代码,便可以有多段程序代码同时运行,每一个程序至少都有一个线程,即main方法执行的那个线程。若是只是一个cpu,它怎么可以同时执行多段程序呢?这是从宏观上来看的,cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感受是a,b在同时执行,比如你们在同一个办公室上网,只有一条连接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,因为切换时间很短暂,因此,你们感受都在同时上网。

 

状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。

调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞,当synchronized得到锁后,由阻塞转为运行,在这种状况能够调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。 


2


字节流与字符流的区别

要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,无论输入输出设备是什么,咱们要用统一的方式来完成这些操做,用一种抽象的方式进行描述,这个抽象描述方式起名为IO流,对应的抽象类为OutputStream和InputStream ,不一样的实现类就表明不一样的输入和输出设备,它们都是针对字节进行操做的。


在应用中,常常要彻底是字符的一段文本输出去或读进来,用字节流能够吗?计算机中的一切最终都是二进制的字节形式存在。对于“中国”这些字符,首先要获得其对应的字节,而后将字节写入到输出流。读取时,首先读到的是字节,但是咱们要把它显示为字符,咱们须要将字节转换成字符。因为这样的需求很普遍,人家专门提供了字符流的包装类。


底层设备永远只接受字节数据,有时候要写字符串到底层设备,须要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写入底层设备,这为咱们向IO设别写入或读取字符串提供了一点点方便。字符向字节转换时,要注意编码的问题,由于字符串转成字节数组,实际上是转成该字符的某种编码的字节形式,读取也是反之的道理。


3

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

咱们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其余计算机,这个过程咱们能够本身写代码去把一个java对象变成某个格式的字节流再传输,可是,jre自己就提供了这种支持,咱们能够调用OutputStream的writeObject方法来作,若是要让java 帮咱们作,要被传输的对象必须实现serializable接口,这样,javac编译时就会进行特殊处理,编译的类才能够被writeObject方法操做,这就是所谓的序列化。须要被序列化的类必须实现Serializable接口,该接口是一个mini接口,其中没有须要实现的方法,implements Serializable只是为了标注该对象是可被序列化的。

 

例如,在web开发中,若是对象被保存在了Session中,tomcat在重启时要把Session对象序列化到硬盘,这个对象就必须实现Serializable接口。若是对象要通过分布式系统进行网络传输或经过rmi等远程调用,这就须要在网络上传输对象,被传输的对象就必须实现Serializable接口。


为了不篇幅太长,下篇继续

关注下面公众号,不错过精彩推送!



↓↓↓ 戳 “阅读原文” ,能够加入技术交流群

本文分享自微信公众号 - 程序员开源社区(jkjishuzhan)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索