Java牛客 -- 专项练习(7)

前因:

记录在牛客上刷题的错题记事本

1. 以下JAVA程序代码的输出是

public static void main(String args[]) {
	System.out.println(14^3);
}
A : 2744
B : 13
C : 17
D : 11

答案选C。

  • 与(&) 两个操作数中位都为1,结果才为1,否则结果为0 1010 & 1100 = 1000
  • 或(|) 两个位只要有一个为1,那么结果就是1,否则就为0 1010 | 1100 = 1110
  • 非(~) 如果位为0,结果是1,如果位为1,结果是0 ~ 1010 = 0101
  • 异或(^) 两个操作数的位中,相同则结果为0,不同则结果为1 1010 ^ 1100 = 0101

2. Java程序的种类有( )

A : 类(Class)
B : Applet
C : Application
D : Servlet

答案选B C D。Java程序的种类有:

  • 内嵌于Web文件中,由浏览器来观看的_Applet
  • 可独立运行的 Application
  • 服务器端的 Servlets

3. 以下类型为Final类型的为()

A : HashMap
B : StringBuffer
C : String
D : Hashtable

答案选 B C 。 StringBuilder , StringBuffer ,String 都是 final 的 。

4. CMS垃圾回收器在那些阶段是没用用户线程参与的

A : 初始标记
B : 并发标记
C : 重新标记
D : 并发清理

答案选 A C 。
**用户线程(user-level threads)**指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。 CMS的GC过程有6个阶段(4个并发,2个暂停其它应用程序)

1. 初次标记(STW initial mark)

2. 并发标记(Concurrent marking)

3. 并发可中断预清理(Concurrent precleaning)

4. 最终重新标记(STW remark)

5. 并发清理(Concurrent sweeping)

6. 并发重置(Concurrent reset)

在初次标记,重新标志的时候,要求我们暂停其它应用程序,那么这两个阶段用户线程是不会参与的

5. jre 判断程序是否执行结束的标准是()

A : 所有的前台线程执行完毕
B : 所有的后台线程执行完毕
C : 所有的线程执行完毕
D : 和以上都无关

答案选A。

  • 后台线程 : 指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。
  • 前台线程 : 是指接受后台线程服务的线程。

其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()setDaemon()方法来判断和设置一个线程是否为后台线程。

发布了15 篇原创文章 · 获赞 1 · 访问量 3122

猜你喜欢

转载自blog.csdn.net/ZeroWdd/article/details/104424061