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有拥塞控制机制(流量控制),防止向网络中注 ……此处隐藏171个字……之后的状态,即此线程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是线程安全的,如果在多个线程中需要同步则采用此类。