Java最新笔试题附详细答案Word下载.docx

上传人:b****6 文档编号:20080473 上传时间:2023-01-16 格式:DOCX 页数:10 大小:238.43KB
下载 相关 举报
Java最新笔试题附详细答案Word下载.docx_第1页
第1页 / 共10页
Java最新笔试题附详细答案Word下载.docx_第2页
第2页 / 共10页
Java最新笔试题附详细答案Word下载.docx_第3页
第3页 / 共10页
Java最新笔试题附详细答案Word下载.docx_第4页
第4页 / 共10页
Java最新笔试题附详细答案Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Java最新笔试题附详细答案Word下载.docx

《Java最新笔试题附详细答案Word下载.docx》由会员分享,可在线阅读,更多相关《Java最新笔试题附详细答案Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

Java最新笔试题附详细答案Word下载.docx

(正确)

CLOSE_WAIT

FIN_WAIT2

TIME_WAIT

FIN_WAIT1

1)当客户端没有主动close的时候就断开连接,即客户端发送的fin丢失或者失败:

1:

这时候若客户端断开的时候发送了FIN包,则服务端将会处于CLOSE_WAIT状态;

2:

这时候若客户端断开的时候未发送FIN包,则服务端处还是显示ESTABLISHED状态

2)当client想要关闭它与server之间的连接。

client(某个应用进程)首先调用 

close 

主动关闭连接,这时TCP发送一个FINM;

client端处于 

FIN_WAIT1 

状态。

3) 

当server端接收到FINM之后,执行被动关闭。

对这个FIN进行确认,返回给clientACK。

当server端返回给clientACK后,client处于 

FIN_WAIT2 

状态,server处于 

CLOSE_WAIT 

它的接收也作为文件结束符传递给应用进程,因为FIN的接收 

 

意味着应用进程在相应的连接上再也接收不到额外数据;

4)一段时间之后,当server端检测到client端的关闭操作(read返回为0)。

接收到文件结束符的server端调用close 

关闭它的socket。

这导致server端的TCP也发送一个FINN;

此时server的状态为last——ack 

.

5)当client收到来自server的FIN后。

client端的套接字处于 

TIME_WAIT 

状态,它会向server端再发送一个ack确认,此时server端收到ack确认后,此套接字处于CLOSED状态。

介绍一下TCP连接建立与关闭过程中的状态。

TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示:

1.CLOSED 

初始状态,表示没有任何连接。

2.LISTEN 

Server 

端的某个 

Socket 

正在监听来自远方的 

TCP 

端口的连接请求。

3.SYN_SENT 

发送连接请求后等待确认信息。

当客户端 

进行 

Connect 

连接时,会首先发送 

SYN 

包,随即进入 

SYN_SENT 

状态,然后等待 

端发送三次握手中的第 

个包。

4.SYN_RECEIVED 

收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。

通常是建立TCP 

连接的三次握手过程中的一个中间状态,表示 

端的 

接收到来自 

Client 

的 

包,并作出回应。

ESTABLISHED 

表示连接已经建立,可以进行数据传输。

5.FIN_WAIT_1 

主动关闭连接的一方等待对方返回 

ACK 

包。

若 

在 

状态下主动关闭连接并向对方发送 

FIN 

包(表示己方不再有数据需要发送),则进入 

FIN_WAIT_1 

状态,等待对方返回 

ACK包,此后还能读取数据,但不能发送数据。

在正常情况下,无论对方处于何种状态,都应该马上返回 

ACK包,所以 

状态一般很难见到。

6.FIN_WAIT_2 

主动关闭连接的一方收到对方返回的 

包后,等待对方发送 

处于 

状态下的 

收到了对方返回的 

包后,便进入 

FIN_WAIT_2 

由于 

Socket需要等待对方发送的 

包,所有常常可以看到。

若在 

状态下收到对方发送的同时带有 

和ACK 

的包时,则直接进入 

状态,无须经过 

7.TIME_WAIT 

主动关闭连接的一方收到对方发送的 

包后返回 

包(表示对方也不再有数据需要发送,此后不能再读取或发送数据),然后等待足够长的时间( 

2MSL 

)以确保对方接收到 

包(考虑到丢失 

包的可能和迷路重复数据包的影响),最后回到 

CLOSED 

状态,释放网络资源。

8.CLOSE_WAIT 

表示被动关闭连接的一方在等待关闭连接。

当收到对方发送的 

包后(表示对方不再有数据需要发送),相应的返回 

包,然后进入 

在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。

9.LAST_ACK 

被动关闭连接的一方在 

状态下完成数据的发送后便可向对方发送 

包(表示己方不再有数据需要发送),然后等待对方返回 

收到 

包后便回到 

10.CLOSING 

比较罕见的例外状态。

正常情况下,发送 

包后应该先收到(或同时收到)对方的 

包,再收到对方的 

包,而 

CLOSING 

状态表示发送 

包后并没有收到对方的 

包,却已收到了对方的FIN 

有两种情况可能导致这种状态:

其一,如果双方几乎在同时关闭连接,那么就可能出现双方同时发送FIN 

包的情况;

其二,如果 

包丢失而对方的 

包很快发出,也会出现 

先于 

到达。

11.数据库恢复的基础是利用转储的冗余数据。

这些转储的冗余数据包括()

12.正确答案:

13.数据字典,应用程序,审计档案,数据库后备副本

14.数据字典,应用程序,审计档案,日志文件

15.数据字典,应用程序,数据库后备副本

16.日志文件,数据库后备副本

17.题目说的是转储,转储只需要日志文件和后备数据就可以了

18.数据字典只是用来定义数据库,应用程序也是一个道理....

19.进程依靠()从阻塞状态过渡到就绪状态。

20.正确答案:

21.程序员的命令

22.系统服务

23.等待下一个时间片到来

24."

合作"

进程的唤醒

25.引起进程阻塞和唤醒的事件:

26.1、向系统请求共享资源失败。

进程转变为阻塞状态。

27.2、等待某种操作完成。

比如进程启动了I/O设备,必须等I/O操作完成后,进程才能继续。

28.3、 

新数据尚未到达。

对于合作的进程,如果一个进程A需要先获得另一进程B提供的数据后,才能对该数据进程处理,只要数据尚未到达,进程A只能阻塞。

当进程B提供数据后,便可以去唤醒进程A。

29.4、等待新任务到达,用于特定的系统进程。

它们每当完成任务后,就把自己阻塞起来,等待新任务。

30.1.什么是正则表达式的贪婪与非贪婪匹配

31.如:

Stringstr="

abcaxc"

;

32.Patterp="

ab*c"

33.贪婪匹配:

正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。

如上面使用模式p匹配字符串str,结果就是匹配到:

abcaxc(ab*c)。

34.非贪婪匹配:

就是匹配到结果就好,就少的匹配字符。

abc(ab*c)。

35.2.编程中如何区分两种模式

36.默认是贪婪模式;

在量词后面直接加上一个问号?

就是非贪婪模式。

37.量词:

{m,n}:

m到n个

38.*:

任意多个

39.+:

一个到多个

40.?

0或一个

41.以上来自博主的博客,然后这道题目

42..表示除\n之外的任意字符

43.*表示匹配0-无穷 

+表示匹配1-无穷

44.(?

=Expression)顺序环视,(?

=\\()就是匹配正括号

45.懒惰模式正则:

src="

.*?

(?

=\\()) 

"

46.结果:

北京市

47.因为匹配到第一个"

就结束了一次匹配。

不会继续向后匹配。

因为他懒惰嘛。

A"

=\\()"

B"

=\()"

C"

.*(?

D"

前面的.*?

是非贪婪匹配的意思,表示找到最小的就可以了

Stringtext="

北京市(海淀区)(朝阳区)(西城区)"

Patternpattern=Ppile("

);

Matchermatcher=pattern.matcher(text);

if(matcher.find()){

System.out.println(matcher.group(0));

}

10.下面这个题不能再做了!

classB 

extendsObject

{

static

System.out.println("

LoadB"

publicB()

CreateB"

classA 

extendsB

LoadA"

publicA()

CreateA"

publicclassTestclass

publicstaticvoidmain(String[]args)

newA();

LoadB->

CreateB->

LoadA->

CreateA

LoadA->

CreateB->

CreateA

CreateB->

CreateA->

LoadA

CreateA->

LoadA

执行顺序:

父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数

11.下列有关Servlet的生命周期,说法不正确的是?

A你的答案:

A(正确)

在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例

在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法

在销毁阶段,执行destroy()方法后会释放Servlet占用的资源

destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

Servlet的生命周期分为5个阶段:

加载、创建、初始化、处理客户请求、卸载。

(1)加载:

容器通过类加载器使用servlet类对应的文件加载servlet

(2)创建:

通过调用servlet构造函数创建一个servlet对象

(3)初始化:

调用init方法初始化

(4)处理客户请求:

每当有一个客户请求,容器会创建一个线程来处理客户请求

(5)卸载:

调用destroy方法让servlet自己释放其占用的资源

12.下面有关JAVAswing的描述,说法错误的是?

C你的答案:

A(错误)

Swing是一个基于Java的跨平台MVC框架。

使用单线程模式。

Swing是为了解决AWT存在的问题而新开发的包,它以AWT为基础的

Swing优化了AWT,运行速度比AWT快

Swing是一个基于组件的框架,所有的组件都是从javax.swing.JComponent类继承来的。

Swing是一个用于开发Java应用程序用户界面的开发工具包。

它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。

Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event

用Swing创建图形界面步骤:

(1)导入Swing包

(2)选择界面风格

(3)设置顶层容器

(4)设置按钮和标签

(5)将组件放到容器上

(6)为组件增加边框

(7)处理事件

(8)辅助技术支持

1。

导入Swing包

下面语句导入Swing包

importjavax.swing.*;

大部分Swing程序用到了AWT的基础底层结构和事件模型,因此需要导入两个包:

importjava.awt.*;

importjava.awt.event.*;

如果图形界面中包括了事件处理,那么还需要导入事件处理包:

importjavax.swing.event.*;

2.选择界面风格

Swing允许选择程序的图形界面风格常用的有java风格,windows风格等

下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。

try{UIManager.setLookAndFeel(

UIManager.getCrossPlatformLookAndFeelClassName());

}

catch(Exceptione){}

(3)设置顶层容器

图形界面至少要有一个顶级Swing容器

顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持

常用的顶级容器:

JFrame(框架):

表示主程序窗口

JDialog(对话框):

每个JDialog对象表示一个对话框,对话框属于二级窗口

JApplet(小程序):

在浏览器内显示一个小程序界面

一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格

窗格也可以看作是一种面板,但它是框架的一个组成部分

组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上

用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板

publicstaticvoidmain(String[]args){JFrameframe=newJFrame("

SwingApplication"

JPanelpanel1=newJPanel();

frame.getContentPane().add(panel1,BorderLayout.CENTER);

......//添加其他组件

frame.pack();

frame.setVisible(true);

13.super.getClass().getName()

返回:

包名+类名

14.以下关于对象序列化描述正确的是

CD

a.使用FileOutputStream可以将对象进行传输

b.使用PrintWriter可以将对象进行传输

c.使用transient修饰的变量不会被序列化

d.对象序列化的所属类需要实现Serializable接口

…..

C和Dtransient这个单词本身的意思就是瞬时的意思transient是变量修饰符变量定义为transient的,序列化时会忽略此字段,所以C是对的,只有实现了Serializable接口的,才可以被序列化.

能够对对象进行传输的貌似只有ObjectOutputStream和ObjectInputStream这些以Object开头的流对象。

3、D项继承Seriallizable接口是经常见到的,这毋庸置疑。

4、transient修饰的变量在对象串化的时侯并不会将所赋值的值保存到传中,串化的对象从磁盘读取出来仍然是null。

5、这值得说下Volatile这个修饰符,它是针对多线程情况下出现的。

当线程读取它修饰的变量时,都会强迫从主存中重新读取。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1