34.Java常见面试题

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是单继承的,一个类只能继承一个父类。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值