Java高级考试题,setPriority()优先级,类加载器,读取,配置文件,打印【诗书画唱】
题目:
(一)选择题(共 15 题,每题 2 分)
1、下列哪个选项不属于 JavaScript 的集合类型( )?
A. ArrayList
B. HashMap
C. Vector
D. HashCode
2、所有集合都有一个共同的特点是( )?
A. 有序
B. 采用键值对进行存储数据
C. 大小可以改变
D. 可以通过索引访问
3、Collections 是集合的一个工具类,它可以一次性为实现了 Collection 接口的集合添加多条数据,下列正确的添加方式为( )?
A. Collections.addAll(list,a,b,c)
B. Collections.add(list,a,b,c)
C. Collections.shuffle(list,a,b,c)
D. Collections.copy(list,a,b,c)
4、用户再使用 jdbc 进行登录操作的时候,如果没有防护措施,就会隐藏 sql 注入,造成数据不安全,为了解决这种问题,进行数据库链接的时候可以使用以下哪一个对象( )?
A. Connection
B. Statement
C. ParparedStatement
D. ResultSet
5、进行 JDBC 操作的时候,为了用户的一些通用信息可以更加灵活,可以将用户的通用配置写入到 Properties 配置文件中,在进行读取内容的时候,使用类加载器去加载指定的文件后将文件的内容转化为( )?
A. OutputStream
B. InputStream
C. FileInputStream
D. FileOutputStream
6、在进行创建文件的时候,使用以下哪一个方法( )?
A. exists( )
B. createNewFile( )
C. mdkir( )
D. mkdirs( )
7、使用一下哪一个方法可以获取指定文件名下的所有文件,获取的类型要求为文件类型( )?
A. getParentFile( )
B. list
C. getPath( )
D. listFiles
8、使用 IO 流读取数据的时候,为了提升读取的速度,可以为其添加缓冲区,以下哪一个流为缓冲流( )?
A. FileInputStream
B. BufferedReader
C. InputStreamReader
D. RandomAccessFile
9、转换流可以将指定内容转换为其他编码格式,以下哪一个流属于转换流
( )?
A. FileInputStream
B. BufferedReader
C. InputStreamReader
D. RandomAccessFile
10、现有类 A implements Runnable ,该线程正确开启的方式为( )?
A. new Thread(new A()).start
B. new A().start
C. A a=new A(); a.start();
D. A a=new A();a.run();
11、线程的在运行期间会出现堵塞现象,以下哪种状态不属于堵塞现象( )?
A. Sleep()
B. yield()
C. join()
D. start()
12、现有两个线程 A,B,使用 for 分别打印 1-10 数字,设置A.setPriority(1),然后B.setPriority(10),在同时启动的情况下谁先执行完( )?

A. 线程 A 一定比线程 B 先执行完
B. 线程 B 一定比线程 A 先执行完
C. 线程 A 先执行完的几率比线程 B 大
D. 线程 B 先执行完的几率比线程 A 大
13、多个线程在同时操作同一个对象的时候会出现数据不安全的问题,解决该问题可以给同时操作的代码块加上锁,以下哪一个关键字可以设置锁( )?
A. synchronized
B. serializable
C. setDaemon
D. transient
14、进行发送数据的时候,有 UDP 和 TCP 协议,以下说法错误的是( )?
A. UDP 协议发送的速度比 TCP 要快
B. UDP 发送数据时采用流进行发送数据的
C. TCP 协议的安全性比 UDP 要高
D. TCP 协议发送数据的时候需要经过三次握手
15、网络发送数据的时候,以下哪一个描述不正确?
A. UDP 协议进行发送数据的时候不需要建立连接,所有直接将数据打成包就可
以进行发送了
B. UDP 协议发送数据的时候数据的大小有限制
C. TCP 协议是一个不平等协议,需要拥有客户端和服务器,客户端用于请求服
务器,服务器用于转发和响应
D. TCP 协议是一个平等协议,可以互相进行发送消息
(二)问答题(共 10 题,每题 3 分)
1. JDBC 连接包含哪些步骤?
2. 简述 Statement 和 PreparedStatement 的区别?
3. 字符流和字节流有什么区别?
4. 事务有什么作用?有哪些特性?
5. 如何设置守护线程?守护线程有什么用?
6. 线程和进程有什么区别?
7. 写出至少 5 个你知道的 IO 流?
8. 为什么需要序列化?序列化的关键字是设么?使用什么流时需要进
行序列化?
9. 简述 UDP 和 TCP 协议的特性和使用步骤?
10. 什么是线程死锁?如何解决?
(三)机试题(共 2 题,每题 20 分)
1. 建立一个 properties 文件,将用户的通用配置写在该文件里,进行读取出来,要求使用类加载器进行读取。
2.现有车票 100 张,使用多线程模拟 3 个车站进行卖票
——————————————————————————————————
我自己写的答案:
选择题:
1.D
2.C
3.A
4.C
5.B
6.B
7.D
8.B
9.C
10.A
11.D
12.D
13.A
14.B
15.D
问答题:
1.JDBC连接包含哪些步骤?
1.加载数据包
2.建立连接数据库的对象
3.建立执行sql语句的对象
4.执行sql语句得到结果集
5.遍历结果集
2.简述Statement和PreparedStatement的
区别?
PreparedStatement安全性比Statement
高,可以防注入,拥有预处理的功能。
3.字符流和字节流有什么区别?
字节流每次传输的是一个字节。
字符流每次传输的是1-3个字节,1个字符可以包含1-3个字节,字符流每次读取两个字节,所以相较于字节流速度要快。
字节流可以传输任意类型的文件。
字符流只可以传输文本类型的文件。
4.事务有什么作用?有哪些特性?
当处理多个sql语句的时候,为了保证sq|语句全部执行完毕后才修改数据库的信息,
可以给其加上事务。
特性:一致性,原子性,隔离型,持久性
5.如何设置守护线程?守护线程有什么用?
为了保证主线程的正常使用,守护线程是为
主线程做服务的,当主线程全部执行完毕
后,守护线程也会自动释放掉。
6.线程和进程有什么区别?
一个进程包含多个线程,进行是正在执行的程序在内存中的位置,线程是进程的最基本单位
7.写出至少5个你知道的IO流?
FileInputStream:字节输入流
FileOutputStream:字节输出流
BufferedReader:字符输入缓冲流
InputStreamReader:字节输入转换流
ObejctInputStream:对象输入流
————————————————————————
8.为什么需要序列化?序列化的关键字?使
用什么流是需要进行序列化?
(1)序列化可以将-一个类标识为序列化类,如果不加序列化,则不能使用对象进行传输
(2)序列化的关键字:Serializable
(3)对象流的时候,需要序列化。
——————————————
9.简述UDP和TCP协议的特性和使用步骤?
(1)
UDP特性:
1.通过数据包传输
2.因为没有面向链接,所以是不安全的协议
3.大小有限制,为64KB
4.发送端和接收端是相等的
优点:因为不用建立连接,所以传输速度快
(2)UDP使用步骤
UDP链接基本步骤:
发送端
1.创建发送数据Socket对象 2.创建数据,并将数据打包 3.调用Socket发送的方法发送数据
4.释放资源
接收端:
1.创建接收Socket对象容器
2.创建一个数据包(接收数据)
3.调用Socket对象接收方法接收数据
4.解析数据包
5.释放资源
(3)TCP特性:
1.通过流进行传输
2.需要经过三次握手,之后面向连接建立通信管道
3.没有大小限制
4.因为要建立流,所以相对于UDP来说速度相对慢
5.TCP的两端不是平等的,由客户端和服务器
(4)TCP步骤:
客户端:1.建立连接到的Socket
2.得到该Socket的输出流
3.输出数据
4.释放资源
服务器端:1.建立服务器ServerSocket
2.堵塞性的等待用户进行连接
3.得到连接的Socket对象后获取其输入流
4.得到输入流传输的数据,进行解析
5.打印数据,释放Socket
————————————
10.什么是线程死锁?如何解决?
死锁:某一个同步块中同时拥有“两个或者以上对象的锁”,就可能发生“死锁的问题”
如何避免死锁:
进行锁内容的时候不要在一个同步锁中添加其他锁
——————
机试题
1.建立一个properties文件,将用户的通用配置写在该文件里,进行
读取出来,要求使用类加载器进行读取(20分)?

id=1
name=shiShuHuaChang
pwd=good
money=666


package peiZhi;
import java.io.*;
import java.util.*;
public class pz {
public static void main(String[] args)
throws Exception{
InputStream neiRong=pz.class.
getResourceAsStream("./pz.properties");
Properties jiHe=new Properties();
try{
jiHe.load(neiRong);
System.out.println("打印所有内容:"+jiHe);
System.out.println("打印id对应的值:"
+jiHe.getProperty("id"));
System.out.println("打印name对应的值:"
+jiHe.getProperty("name"));
System.out.println("打印pwd对应的值:"
+jiHe.getProperty("pwd"));
System.out.println("打印money对应的值:"
+jiHe.getProperty("money"));
}catch(IOException e){
e.printStackTrace();
}
}
}

下面把配置文件中的所有内容都打印了出来,能打印出来,说明读取成功了,读取成功后才能打印成功:

2.现有车票100张,使用多线程模拟3个车站进行卖票(20分)

package thread;
import java.util.Random;
public class cheZhan {
public static void main(String[] args) throws Exception{
chePiaoClass chePiaoClass=new chePiaoClass() ;
new Thread(chePiaoClass, "江西站").start();
new Thread(chePiaoClass, "北京站").start();
new Thread(chePiaoClass,"上海站").start();
}
}
class chePiaoClass implements Runnable{
static int piaoShu=100;
public void run() {
while(piaoShu>0){
synchronized (this) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(piaoShu>0){
System.out.println(Thread.currentThread()
.getName()+"卖出了第"+piaoShu+"张票");
}piaoShu--;}
}
}
}

