牛客笔试题错题整理(1)
一、JavaSE部分
2、整数型默认是int类型,带小数的默认是double类型
具体分析如下:
1. 整数型默认为int:
- 当我们书写一个整数字面量时(如123),如果不加任何标识符,Java编译器会将其视为int类型
- 如果需要使用long类型,需要在数字后面加上'L'或'l'后缀(如123L)
2. 浮点型默认为double:
- 当书写一个带小数点的数字(如3.14)时,默认会被识别为double类型
- 如果需要使用float类型,必须在数字后加上'F'或'f'后缀(如3.14F)
3.
下面关于Java 中 yield 和 sleep 方法说法错误的是()
A
yeild 方法调用后当前线程一定会让出 CPU 时间,而导致线程上下文切换
B
sleep 方法会导致当前线程暂停指定的时间,不会导致 CPU 时间片的消耗
C
yield 方法会导致当前线程暂停指定的时间,同时也会导致 CPU 时间片的消耗
D
yield 方法执行后,会使 running 状态的线程变为 waiting 状态
正确答案:ACD
你的答案:BC
官方解析:
yield和sleep是Java中常用的线程控制方法,让我们逐个分析各选项的正误:
B选项正确:sleep方法会导致当前线程暂停指定时间,在这段时间内线程会释放CPU资源,不会消耗CPU时间片。
A选项错误:yield方法调用后,只是让当前线程让出CPU执行权,但不一定会发生线程切换。如果没有其他相同优先级的线程在等待CPU资源,该线程可能会继续执行。
C选项错误:yield方法并不会导致线程暂停指定时间,它只是一个提示性的方法,建议让出CPU时间片。yield之后线程会直接进入就绪状态,随时可能再次获得CPU执行权。
D选项错误:yield方法执行后,线程从running状态转为ready(就绪)状态,而不是waiting状态。这是一个重要的状态转换概念。
主要区别:
1. sleep会使线程进入计时等待状态,yield只是让线程回到就绪状态
2. sleep一定会发生线程切换,而yield不一定
3. sleep会暂停指定时间,而yield只是建议性让出CPU
4. sleep会使线程进入TIMED_WAITING状态,而yield会使线程进入READY状态
4、
5、
二、数据库基础部分
6、
7、