牛客网-Java专项练习10

牛客网-Java专项练习10

答案设置为白色,框选即可显示

1.假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()

public static void main(String[]args)throws Exception {
    final Object obj = new Object();
    Thread t1 = new Thread() {
        public void run() {
            synchronized (obj) {
                try {
                    obj.wait();
                    System.out.println("Thread 1 wake up.");
                } catch (InterruptedException e) {
                }
            }
        }
    };
    t1.start();
    Thread.sleep(1000);//We assume thread 1 must start up within 1 sec.
    Thread t2 = new Thread() {
        public void run() {
            synchronized (obj) {
                obj.notifyAll();
                System.out.println("Thread 2 sent notify.");
            }
        }
    };
    t2.start();
}

A.
Thread 1 wake up
Thread 2 sent notify.
B.
Thread 2 sent notify.
Thread 1 wake up
C.A、B皆有可能
D.程序无输出卡死

答案B
解析:执行obj.wait();时已释放了锁,所以t2可以再次获得锁,然后发消息通知t1执行,但这时t2还没有释放锁,所以肯定是执行t2,然后释放锁,之后t1才有机会执行。但有一点需要注意的是notify()调用后,并不是马上就释放对象锁的,而是在相应的synchronized(){}语句块执行结束,自动释放锁后,JVM会在wait()对象锁的线程中选取一线程,赋予其对象锁,唤醒线程,继续执行。

2.Java1.8版本之前的前提,Java特性中,abstract class和interface有什么区别()
A.抽象类可以有构造方法,接口中不能有构造方法
B.抽象类中可以有普通成员变量,接口中没有普通成员变量
C.抽象类中不可以包含静态方法,接口中可以包含静态方法
D.一个类可以实现多个接口,但只能继承一个抽象类。

答案ABD
解析在这里插入图片描述
3.以下代码段执行后的输出结果为

public class Test {
public static void main(String args[]) {
int x = -5;
int y = -12;
System.out.println(y % x);
}
}

A.-1
B.2
C.1
D.-2

答案D
解析:取余运算,符号最终于y/x的被除数y相同。

4.假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?

A.64M
B.500M
C.300M
D.100M

答案C
解析
Xms 起始内存
Xmx 最大内存
Xmn 新生代内存
XX:SurvivorRatio=3 说明Eden区与Survivor区的大小比值为3:2
Eden区的大小:
500M*(3/(3+2))
=500M*(3/5)
=500M*0.6
=300M

5.以下关于对象序列化描述正确的是
A.使用FileOutputStream可以将对象进行传输
B.使用PrintWriter可以将对象进行传输
C.使用transient修饰的变量不会被序列化
D.对象序列化的所属类需要实现Serializable接口

答案CD
解析: 使用ObjectOutputStream和ObjectInputStream可以将对象进行传输。 声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态, transient代表对象的临时数据。

6.下面有关servlet service描述错误的是?
A.不管是post还是get方法提交过来的连接,都会在service中处理
B.doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C.service()是在javax.servlet.Servlet接口中定义的
D.service判断请求类型,决定是调用doGet还是doPost方法

答案B
解析:doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值