IO流
1.下面哪个流类属于面向字符的输入流()选择一项)
A. BufferedWriter
B. FileInputStream
C. ObjectInputStream
D. InputStreamReader
答案:D
分析:A:字符输出的缓冲流
B:字节输入流
C:对象输入流
2.要从文件”file.dat”文件中读出第10个字节到变量c中,下列哪个正确()(选择一项)
A.
FileInputStream in=new FileInputStream(“file.dat”);
in.skip(9);
int c=in.read();
B.
FileInputStream in=new FileInputStream(“file.dat”);
in.skip(10);
int c=in.read();
C.
FileInputStream in=new FileInputStream(“file.dat”);
int c=in.read();
D.
RandomAccessFile in=new RandomAccessFile(“file.dat”);
in.skip(7);
int c=in.readByte();
答案:A
分析: skip(long n)该方法中的n指的是要跳过的字节数
3.新建一个流对象,下面那个选项的代码是错误的?()
A. new BufferedWriter(new FileWriter(“a.txt”));
B. new BufferedReader (new FileInputStream(“a.dat”));
C. new GZIPOutputStream(new FileOutputStream(“a.zip”));
D. new ObjectInputStream(new FileInputStream(“a.dat”));
答案:B
分析:BufferedReader类的参数只能是Reader类型的,不能是InputStream类型。
4.下面哪个流是面向字符的输入流()
A. BufferedWriter
B. FileInputStream
C. ObjectInputStream
D. InputStreamReader
答案:D
以InputStream(输入流)/OutputStream(输出流)为后缀的是字节流;
以Reader(输入流)/Writer(输出流)为后缀的是字符流。
5.Java类库中,将信息写入内存的类是()
A. Java.io.FileOutputStream
B. java.ByteArrayOutputStream
C. java.io.BufferedOutputStream
D. java,.io.DataOutputStream
答案:B
分析: ACD都是io到文件
6.下面哪个流类属于面向字符的输入流()
A. BufferedWriter
B. FileInputStream
C. ObjectInputStream
D. InputStreamReader
答案:D
多线程
1.下面程序的运行结果()(选择一项)
public static void main(String[] args) {
Thread t=new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.println(“ping”);
}
static void pong(){
System.out.println(“pong”);
}
A. pingpong
B. pongping
C. pingpong和pongping都有可能
D. 都不输出
答案:B
分析:启动线程需要调用start()方法,而t.run()方法,则是使用对象名
2.下列哪个方法可用于创建一个可运行的类()
A. public class X implements Runnable{public void run() {……}}
B. public class X extends Thread{public void run() {……}}
C. public class X extends Thread{public int run() {……}}
D. public class X implements Runnable{protected void run() {……}}
答案:AB
分析: 继承Thread和实现Runable接口
3.在Java多线程中,请用下面哪种方式不会使线程进入阻塞状态()
A. sleep()
B. Suspend()
C. wait()
D. yield()
答案:D
分析:yield会是线程进入就绪状态
4.关于sleep()和wait(),以下描述错误的一项是()
A. sleep是线程类(Thread)的方法,wait是Object类的方法
B. Sleep不释放对象锁,wait放弃对象锁
C. Sleep暂停线程、但监控状态任然保持,结束后会自动恢复
D. Wait后进入等待锁定池,只针对此对象发出notify方法后获取对象锁进入运行状态。
答案:D
分析:针对此对象的notify方法后获取对象锁并进入就绪状态,而不是运行状态。另外针对此对象的notifyAll方法后也可能获取对象锁并进入就绪状态,而不是运行状态
5.以下锁机机制中,不能保证线程安全的是()
A. Lock
B. Synchronized
C. Volatile
答案:C
6.下面所述步骤中,是创建进程做必须的步骤是()
A. 由调度程序为进程分配CPU
B. 建立一个进程控制块
C. 为进程分配内存
D. 为进程分配文件描述符
答案:BC7.无锁化编程有哪些常见方法?()
A. 针对计数器,可以使用原子加
B. 只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)
C. RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法
D. CAS(Compare-and-Swap),如无锁栈,无锁队列等待
答案:D
分析:A 这方法虽然不太好,但是常见
B ProducerConsumerQueue就是这个,到处都是
C linux kernel里面大量使用
D 本质上其实就是乐观锁,操作起来很困难。单生产者多消费者或者多生产者单消费者的情况下比较常见,也不容易遇到ABA问题。
集合
1、ArrayList list=new ArrayList(20);中的list扩充几次()
A. 0
B. 1
C. 2
D. 3
答案:A
分析:已经指定了长度, 所以不扩容
2.List、Set、Map哪个继承自Collection接口,一下说法正确的是()
A. List Map
B. Set Map
C. List Set
D. List Map Set
答案:C
分析:Map接口继承了java.lang.Object类,但没有实现任何接口.
3.以下结构中,哪个具有同步功能()
A. HashMap
B. ConcurrentHashMap
C. WeakHashMap
D. TreeMap
答案:B
分析:
A,C,D都线程不安全,B线程安全,具有同步功能
4.以下结构中,插入性能最高的是()
A. ArrayList
B. Linkedlist
C. tor
D. Collection
答案:B
分析:
数组插入、删除效率差,排除A
tor不是java里面的数据结构,是一种网络路由技术;因此排除C
Collection 是集合的接口,不是某种数据结构;因此排除D
5.以下结构中,哪个最适合当作stack使用()
A. LinkedHashMap
B. LinkedHashSet
C. LinkedList
C
分析:
Stack是先进后出的线性结构;所以链表比较合适;不需要散列表的数据结构
6.下列叙述中正确的是()
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 在循环队列中元素的个数是由队头指针和队尾指针共同决定的
答案:D
分析:循环队列中元素的个数是由队首指针和队尾指针共同决定的,元素的动态变化也是通过队首指针和队尾指针来反映的,当队首等于队尾时,队列为空。
常考九道9道常见的java笔试选择题
1.关于Java编译,下面哪一个正确()(选择一项)
A.Java程序经编译后产生machine code
B.Java程序经编译后会生产byte code
C.Java程序经编译后会产生DLL
D.以上都不正确
答案:B
分析: Java是解释型语言,编译出来的是字节码; 因此A不正确,C是C/C++语言编译动态链接库的文件为.DLL; 正确答案为B
2.下列说法正确的有()(选择一项)
A.class中的construtor不可省略
B.construtor与class同名,但方法不能与class同名
C.construtor在一个对象被new时执行
D.一个class只能定义一个construtor
答案:C
分析:A:如果class中的construtor省略不写,系统会默认提供一个无参构造
B:方法名可以与类名同名,只是不符合命名规范
D:一个class中可以定义N多个construtor,这些construtor构成构造方法的重载
3.Java中接口的修饰符可以为()(选择一项)
A.private
B.protected
C.final
D.abstract
答案:D
分析:接口中的访问权限修饰符只可以是public或default
接口中的所有的方法必须要实现类实现,所以不能使用final
接口中所有的方法默认都是abstract的,所以接口可以使用abstract修饰,但通常abstract可以省略不写
4.给定以下代码,程序将输出 ()(选择一项)
class A {
public A(){
System.out.println(“A”);
}
}
class B extends A{
public B(){
System.out.println(“B”);
}
public static void main(String[] args) {
B b=new B();
}
}
A.不能通过编译
B.通过编译,输出AB
C.通过编译,输出B
D.通过编译,输出A
答案:B
分析:在继承关系下,创建子类对象,先执行父类的构造方法,再执行子类的构造方法。
5.下列关于关键字的使用说法错误的是()(选择一项)
A.abstract不能与final并列修饰同一个类
B.abstract类中可以有private的成员
C.abstract方法必须在abstract类中
D.static方法能处理非static的属性
答案:D
分析:因为static得方法在装载class得时候首先完成,比 构造方法早,此时非static得属性和方法还没有完成初始化所以不能调用。
6.下列哪些语句关于内存回收的说法是正确的()(选择一项)
A.程序员必须创建一个线程来释放内存
B.内存回收程序负责释放无用内存
C.内存回收程序允许程序员直接释放内存
D.内存回收程序可以在指定的时间释放内存对象
答案:B
分析: A. 程序员不需要创建线程来释放内存.
C. 也不允许程序员直接释放内存.
D. 不一定在什么时刻执行垃圾回收.
7.选出合理的标识符()(选择两项)
A._sysl_111
B.2 mail
C.$change
D.class
答案:AC
分析: 标识符的命令规范,可以包含字母、数字、下划线、$,不能以数字开头,不能是Java关键字
8.下列说法正确的是()(选择多项)
A.java.lang.Cloneable是类
B.java.langRunnable是接口
C.Double对象在java.lang包中
D.Double a=1.0是正确的java语句
D
分析:java.lang.Cloneable是接口
9.以下对继承的描述锚误的是 ()
A Java中的继承允许一个子类继承多个父类
B. 父类更具有通用性,子类更具体
C. Java中的继承存在着传递性
D. 当实例化子类时会递归调用父类中的构造方法
答案:A
分析:Java是单继承的,一个类只能继承一个父类。