Java面试笔试题-软件科技公司
一、单选题
1.在发布-订阅( publish-subscribe)消息模型中,订阅者订阅一个主题后,当该主题有新消息达到时,所有订阅者都会受到通知。下面哪个设计模式最合这个模型?( )
A.适配器(Adapter ) B. Bridge模式
C.观察者(Observer) D.状态(state)
2.下列关于修饰符混用的说法,错误的是( )
A.abstract不能与final并列修饰同一个类
B.abstract类中可以有 private的成员
C.abstract方法必须在 abstract类中
D.static方法中能处理非 static的属性
3.以下关于final的描述中,错误的是( )
A、final可以用来修饰接口以及抽象类
B、final修饰的变量不允许被再次赋值
C、final修饰的类无法被继承
D、final修饰的变量需要初始化
4.关于 sleep()和wait(),以下描述错误的一项是( )
A. sleep是线程类(Thread)的方法,wait是 Object类的方法
B. sleep不释放对象锁,wait放弃对象锁
C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
5.你怎样强制对一个对象立即进行垃圾收集?( )
A.给这个对象的所有引用设置一个新的值(例如nul)
B. 垃圾收集是不能被强迫立即执行
C.调用 System.gc()
D.调用 System.Gc(),同时传递要进行垃圾收集对象的引用
二、多选题
1.链表具有的特点是:( )
A.不必事先估计存储空间
B.可随机访问任一元素
C.插入删刚除不需要移动元素
D.所需空间与线性表长度成正比
2下列说法错误的有( )
A. 在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
3.有关线程的哪些叙述是对的( )
A. 一旦一个线程被创建,它就立即开始运行
B. 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C. 当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面
D. 一个线程可能因为不同的原因停止并进入就绪状态
4.关于异常(Exception). 下列描述正确的是( )
A. 异常的基类为Exception,所有异常都必须直接或者间接继承它
B.异常可以用try{...}catch(Exception e){...}来捕获并进行处理
C.如果某异常继承 RuntimeException,则该异常可以不被声明
D.异常可以随便处理,而不是抛给外层的程序进行处理
5.执行下列代码后,哪个结论是正确的 String[] s=new String[10]; ( )
A.s[9]为null B.s[10]为””
C.S[0]为未定义 D.s.length为10
三、问答题
1.== 和 equals的区别。
2.闸述 servlet和jsp的关系。
3.阐述 final, finally, finalize的区别。
4.同步和异步有什么区别,请举例说明。
5.什么是线程安全,请举例说明。
6.什么是线程池,使用线程池有什么好处。
四、编程题
给定一个32位有符号整数,将整数中的数字进行反转。
示例 1:输入:123 输出:321
示例 2:输入:-123 输出:-321
示例 3:输入:120 输出:21
注意:假设我们的环境只能存储32位有符号整数,其数值范围是[-2~31, 2~31-1]。根据这个假设,如果反转后的整数溢出,则返回0。
入参:int
出参:int