前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java综合练习题

java综合练习题

原创
作者头像
软件小生活
修改2021-08-30 14:14:17
9670
修改2021-08-30 14:14:17
举报
文章被收录于专栏:软件小生活

一,选择题,每题2分

1,关于sleep()和wait(),以下描述错误的一项是( D )

A. sleep是线程类(Thread)的方法,wait是Object类的方法

B. sleep不释放对象锁,wait放弃对象锁

C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复

D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态

2,下列哪些语句关于内存回收的说明是正确的。(B )

A. 程序员必须创建一个线程来释放内存

B. 内存回收程序负责释放无用内存

C. 内存回收程序允许程序员直接释放内存

D. 内存回收程序可以在指定的时间释放内存对象

3,有关Servlet的生命周期说法正确的有(C )

A. Servlet的生命周期由Servlet实例控制

B. init()方法在创建完Servlet实例后对其进行初始化,传递的参数为实现ServletContext接口的对象

C. service()方法响应客户端发出的请求

D. destroy()方法释放Servlet实例

4,使用JDBC访问数据库时,下列关于JDBC的说法正确的是( B )。

A. Connection接口负责执行SQL语句

B. 可以使用Class.forName()方法把JDBC驱动类装载入Java虚拟机中

C. Statement接口由Connection产生负责保存返回的查询结果

D. DriverManager类负责连接数据库并传送数据

5,以下选项中关于Java中文件输入输出的说法正确的是(AC )。(多选)

A. 在Java中,文件的输入输出功能是通过流来实现的

B. 如果要把数据写入到一个文件中,需要创建一个输入流对象

C. 字符流在某些方面比如汉字的处理,比字节流更高效

D. 可以通过Reader r=new Reader("c:\\pet.txt")来创建一个输入流对象

6,以下选项中关于Java分层开发技术中实体类的说法错误的是( D )。

A. 在分层开发中,不同层之间可以通过实体类来传输数据

B. 实体类一般对应一个数据库表,其属性和数据库表的字段对应

C. 实体类最好实现java.io.Serializable,支持序列化机制

D. 实体类的属性和方法一般均使用public修饰

7,以下选项中关于DAO模式的说法错误的是( C )。

A. DAO是“Data Access Object”的含义,实现对数据库资源的访问

B. DAO模式中要定义DAO接口和实现类,隔离了不同数据库的实现

C. DAO负责执行业务逻辑操作,将业务逻辑和数据访问隔离开来

D. 使用DAO模式提高了数据访问代码的复用性

8,以下哪个类同时实现了Serializable, Comparable接口( A)。

A. Object

B. Integer

C. String

D. Math

9,枚举Thread.state包括以下哪些线程状态?( AB)。(多选)

A. NEW

B. BLOCKED

C. WAITING

D. SLEEPING

10,在JDK1.8,使用Lambda表达式输出以下集合,以下哪些正确(BD)。(多选) List list= new ArrayList(){ { add(new Person("Mike",23,2000)); add(new Person("Jack",32,4000)); add(new Person("Zhang",21,8000)); add(new Person("Lily",39,20000)); } };

A. list.forEach((person)->System.out.println(person.getName()+","+person.getAge()));

B. list.forEach((person)->{System.out.println(person.getName()+","+person.getAge())});

C. list.forEach(()->{System.out.println(person.getName()+","+person.getAge())});

D. list.forEach((Person person)->System.out.println(person.getName()+","+person.getAge()));

11,递归函数最终会结束,那么这个函数一定?( B )

A. 使用了局部变量

B. 有一个分支不调用自身

C. 使用了全局变量或者使用了一个或多个参数

D. 没有循环调用

12,有关Cookie下列说法正确的是?( AB )

A. Cookie是将会话数据保存在客户端来维护会话状态的一种方式。它是服务器发送给浏览器的体积很小的纯文本信息

B. Cookie是服务器端状态管理机制

C. Cookie是相对安全的一种状态管理机制

D. Cookie可以保存任意对象数据

13,创建JSP应用程序时,配置文件web.xml应该在程序下的( C )目录中。

A. META-INF

B. WebContent

C. WEB-INF

D. WebRoot

14,以下代码是SuperClass和Sub两个类的定义。在序列化一个Sub的对象到文件时,下面会被保存到文件中的字段是D class SuperClass { public String name; } class Sub extends SuperClass implements Serializable { private float radius; transient int color; public static String type="Sub"; }

A. name

B. radius

C. color

D. type

15,ArrayList a1=new ArrayList(20)中的list扩充了几次?(A)

A. 0

B. 1

C. 2

D. 4

16,list是一个ArrayList的对象,当将选项(A)的代码填写//todo delete处时,可以在Iterator遍历的过程中正确并安全地删除一个list中保存的对象 Iterator it=list.iterator(); int index=0; while(it.hasNext()) { Object obj=it.next(); if(needDelete(obj)) { //todo delete } index++; }

A. it.remove();

B. list.remove(index);

C. list.remove(obj);

D. list.delete(index);

17,以下关于http协议的描述中,正确的(C)

A. 有状态,前后请求有关联关系

B. Ftp也可以使用http协议

C. HTTP响应包括数据状态码,200代表此次请求有正确返回

D. http和tcp、udp在网络分层里是同一层次的协议

18,在HTML中,关于表单提交方式说法错误的是( A )

A. action属性用来设置表单的提交方式

B. 表单提交有get和post两种方式

C. post比get方式安全

D. post提交数据不会显示在地址栏,而get会显示

19,以下对System.out.println()的含义解释正确的一项是(D )

A. 这个成员方法的名称本身就是System.out.println(),没有任何含义就是直接调用成员方法

B. System是一个类,out是其中的一个普通成员变量,这个成员变量本身是个对象,println()是它内部的普通成员方法

C. System是一个类,out是其中的一个成员变量,这个成员变量本身是个对象,println()是它内部的静态成员方法

D. System是一个类,out是其中的一个静态成员变量,这个成员变量本身是个对象,println()是它内部的成员方法

20,下列程序的运行结果是( B ) String str1 = "hello"; String str2 = "he" + new String("llo"); System.err.println(str1 == str2);

A. true

B. false

C. 不会输出

D. 编译错误

二,填空题,每题4分

1、List和Set都是_接口_______,都继承于____Collection_______,其中List接口中查询速度较快的是__ArrayList_____,增加和删除速度较快的是___LinkedList______。

2、int i=10 ; i++==10 ? ++i : --i 最后i=____12______, int i=10 ; i--==10 ? i++ : --i 最后i= 9

3、HashMap相对于__HashTable____不是线程安全的,其中____HashMap______是允许空键值的。

4、Jsp的四个作用域___page____、____session___、___request____、___application____。

5、使用 ___Array______ 或者 __StringBuffer_______的 reverse() 方法可以将字符反转。

三,简答题,每题4分

1, TCP三次握手?四次挥手?

第一次握手,建立连接。

第二次握手:服务器收到syn包,必须确认客户的syn,

第三次握手:客户端收到服务器syn+ack包,向服务器发送确认包。

第四次挥手。

2, 反射的机制是什么?

1)在运行时判断任意一个对象所属的类

2)在运行时构造任意一个类的对象。

3)在运行时判断任意一个类所具有的成

4)在运行时调用任意一个对象的方法

3, JVM内存区域有哪些?

堆区

栈区

方法区

4, IO流有哪些基类?比如有一个Txt文本,适合使用哪种流?

InputStream

OutputStream

Reader

Writer

适合字符流

5, 多线程中有哪些锁?举例说明

X锁

互斥锁

S锁

四,编程题,每题5分

1,简单实现TCP/IP套接字编程客户端和服务器端的互访。 提示:简单传递字符串信息即可。

答:try {//连接服务器端

Socket socket = new Socket("localhost", 7788);//发送文本

消息到服务器端

socketDataOutputStream dos = new

DataOutputStream(socket.getOutputStream()); dos.writeUTF("你好,我是来自客户端的消息!");System. out.println("【客户端】发送完毕");

/在客户端的控制台作提示

dos.close();socket.close() ; } catch(UnknownHostException e)

{ e.printStackTrace() ; } catch (IOException e) { e.printStackTrace() ;}]}/**服务器端*/public class SimpleServer { public static void main(String[] args) {try {

ServerSocket serverSocket = new ServerSocket(7788); System.out.println("服务器端正在监听客户端的请求......");Socket socket = serverSocket.accept() ;

System.out.println("成功连接了一个客户端请求!"); DataInputStream dis = newDataInputStream(socket.getInputStream()) ;

String msg = dis.readUTF() ;

System. out.println("【服务端】"+ msg);

dis.close() ;

socket.close() ; } catch

(IOException e) { e.printStackTrace();}H}

2,使用BufferedInputStream和BufferedOutputStream实现复制图片的功能。

答:main(String[] args) {

try {

FileInputStream fis = new FileInputStream("/users/yifei/desktop/assets/timg.gif");

BufferedInputStream bis = new BufferedInputStream(fis);

FileOutputStream fos = new FileOutputStream("/users/yifei/desktop/assets/timg1.gif");

BufferedOutputStream bos = new BufferedOutputStream(fos);

long l = System.currentTimeMillis();

int n= 0;

while((n=bis.read())!=-1) { //将图片读出存入缓存区

bos.write(n); //图片写入缓存区

}

bos.flush();//刷新缓冲区

fis.close();

bis.close();

fos.close();

bos.close();

System.out.println((System.currentTimeMillis()-l)/1000);

} catch (FileNotFoundException e) {

e.printStackTrace();

}catch (IOException e) {

e.printStackTrace();

}

3,对(31,42,21,50,12,60,81,74,101,93)进行排序(考点:java基础) 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

void select_sort(int a[],int n) //传入数组的要排序的元素个数

{int i,j,min,t;

for(i=0;i<n-1;i++)

{ min=i; //min:当前最小值下标

for(j=i+1;j<n;j++) //扫描余下的部分

if(a[min]>a[j]) //若有其它元素更小,就记录其下标

min=j;

if(min!=i) //保若最小值不在排序区首位,就换到首位

{t=a[min]; a[min]=a[i]; a[i]=t;}

}

}

4,请分别写出冒泡排序和选择排序算法。

答:冒泡排序:

public static void sortBubble(int[] arr) {//外围循环控制比较的轮数

for(int i=0 ; i<arr.length-1 ; i++){for(int j=0 ; j<arr.length-1-i ; j++){

//循环操作:数值的互换使用中间数来交换if (arr[j] > arr[j+1]){

int temp = arr[j];

arr[j] = arr[j+1];arr[j+1] = temp;}}}}

选择排序:

public static void sortSelect(int[] arr){

for(int i=0 ; i<arr.length-l ; i++){

for(int j=i+1 ; j<arr.length; j++){

if (arr[i] 〈 arr[j]){

int temp = arr[i];

arr[i] = arr[j] ; arr[j] = temp;

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档