Java试题

时间:2024-01-04 15:54:11
Java试题

Java试题

在日常学习和工作生活中,我们很多时候都不得不用到试题,试题是用于考试的题目,要求按照标准回答。什么样的试题才是科学规范的试题呢?以下是小编精心整理的Java试题,仅供参考,希望能够帮助到大家。

1、 TCP和UDP的区别?

(1)TCP(Transmission Control Protocol 传输控制协议)

(2)UDP(User Datagram Protocol 用户数据包协议)

(3)OSI(Open System Interconnection 开放系统互联)

七层参考模型:应用层(表现层,会话层),传输层,网络层,数据链路层,物理层。

二者都是OSI(Open System Interconnection 开放系统互联)参考模型中传输层的 协议,其中TCP是三次握手的协议。

二者区别如下:

(1)TCP是面向连接的(即建立通信之前需要通过三次握手建立连接);UDP是无连接的(即不负责确认通信对象是否存在)

(2)TCP通过一系列的机制提供可靠的服务,保证通过TCP传输的数据无差错,不丢失,不重复,且按序到达;而UDP则只尽最大努力交付数据,不保证可靠性,可能丢包。

(3)TCP面向字节流,把数据看做一连串无结构的字节流;UDP是面向报文的,应用程序发送多长的报文,UDP就传输多长

(4)TCP有拥塞控制机制(流量控制),防止向网络中注入过多的数据,使网络中的'路由器和链路不至于过载,保证接收方能够来得及接收数据,而UDP则没有。

(5)TCP连接只能是一对一的;UDP支持一对一,一对多,多对一和多对的通信。

(6)TCP要求的系统资源较多,UDP较少。

2、 JDBC操作数据库的步骤。

A、加载数据库驱动。

B、建立到数据库的连接。

C、定义sql,获取sql执行环境,设置相应的参数。

D、执行sql,处理sql执行结果——DML语句返回int, DQL语句返回结果集对象 ResultSet。

E、释放资源。

3、 字节流,字符流的区别。

(1)Java中字节流。

a、 所有字节输入流的最大抽象父类是InputStream。

b、 所有字节输出流的最大抽象父类是OutputStream。

(2)Java中字符流

a、 所有字符输入流的最大抽象父类是Reader。

b、 所有字符输出流的最大抽象父类是Writer。

二者区别:

(1)字节流操作的单元为一个字节;字符流操作的单元为两个字节的Unicode码。

(2) 字节流可以处理任意类型的数据;字符流只能处理文本类型的数据。

(3)字节流在操作过程中没有用到缓冲区(内存),直接对文件本身进行操作;字符流使用到了缓冲区。

(4)字节流在写的时候不需要close,也能输出内容;字符流只有在close之后,或者使用flush强制刷新缓冲区之后,才能输出内容(与缓冲区的使用有关)。

(5)由于字符流有缓冲区,所以字符流的一次操作效率比字节流高。

4、 线程的几种状态分别是什么?

(1)新建状态(new):将一个继承了Thread或者实现了Runnable接口的线程类,通过new的方式创建一个实例,则此线程就进入了新建状态。

(2)就绪状态(Runnable):调用线程类的start方法之后,准备了线程所需的系统资源,线程等待CPU的使用权的状态称为就绪状态。

(3)运行状态(Running):就绪状态的线程获取到了CPU的使用权之后的状态,即此线程run方法中的代码开始被执行。

(4)阻塞状态(Blocked):因为某种原因,线程放弃CPU的执行权,直到重新进入就绪状态,阻塞的情况分为以下三种:

A、等待阻塞:线程执行wait方法,释放所有资源(包括同步锁),JVM将其放入“等待池”中,即等待队列。只有在超出等待时间后,或者其他线程调用同一个对象的notify或者notifyAll方法时,才能重新进入就绪状态(Runnable)

说明:等待阻塞由于需要释放所占有的所有资源,包括对象锁,所以必须在同步方法块中调用相应的锁对象的wait方法,否则抛出异常java、lang、IllegalMonitorStateException

B、同步阻塞:线程运行同步的代码时,需要先获取同步锁,则JVM把此线程放入“锁池”中,即进入同步队列

C、其他阻塞:运行的线程执行sleep或join方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep状态超时、join等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

说明:与wait造成的阻塞不同的是,这种阻塞不会释放所占用的资源,即不会释放同步锁

5、 String,StringBuilder,StringBuffer的区别。

(1) String是定长字符串;StringBuilder,StringBuffer是变长字符串。

(2) StringBuilder是线程非安全,一般用于单线程中,执行效率较StringBuffer高。

(3)StringBuffer是线程安全的,如果在多个线程中需要同步则采用此类。

《Java试题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式