技术类笔试试题
1. 下列运算中优先级别最高的是(C)
A:&
B:&&
C:!=
D:?:
运算符优先级表
优先级 | 运算符 | 结合性 |
1 | () [] . | 从左到右 |
2 | ! +(正) -(负) ~ ++ -- | 从右向左 |
3 | * / % | 从左向右 |
4 | +(加) -(减) | 从左向右 |
5 | << >> >>> | 从左向右 |
6 | < <= > >= instanceof | 从左向右 |
7 | == != | 从左向右 |
8 | &(按位与) | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
2. 若用数组S[1..n]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能做入栈操作,为这两个栈分配空间的最佳方案是(C)
A:S1的栈底位置为0,s2的栈底位置是n+1
B:S1的栈底位置为0,s2的栈底位置是n/2
C:S1的栈底位置为1,s2的栈底位置知是n
D:S1的栈底位置为1,s2的栈底位置是n/2
3. 经过强制类型转换后,变量a,b的值分别是(B)short a=128;byte b=(byte)a;
A: 128 127
B: 128 -128
C: 128 128
D: 编译错误
4. JAVA的Daemon线程,setDaemon()设置必须要(A)
A:在start之前
B:在start之后
C:前后都可以
用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开。
守护线程:这个线程具有最低的优先级,守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。
setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。
main线程结束,守护线程自动结束
5. 下列不属于JAVA语言鲁棒性(健壮性)特点的是(B)
A:java能检查程序运行在编译和运行时的错误
B:java能运行虚拟机实现跨平台
C:java自己操纵内存减少了内存出错的可能性
D:java还实现了真数组,避免了覆盖数据的可能
鲁棒性 :1.Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误的产生。2.它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易产生的错误。3.通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。4.另外, Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题的出现
6. 有以下一个对象:
import java.io.Serializable; public class DataObject implements Serializable{ private static int i = 0; private String word=""; public static void setI(int i) { DataObject.i = i; } public void setWord(String word) { this.word = word; } } |
创建一个如下方式的DataObject: DataObject object = new DataObject();
object.setWord(“123”);object.setI(2);将此对象序列化文件,并在另一个JVM中读取文件,进行反序列化,请问此时读出的DataObject对象中的word和i的值分别是(D)
A:” ”,0
B:” ”,2
C:”123 ”,2
D:”123 ”,0
程序测试值为D。
这道题里面没有正确答案。原因在于:
1.同一个jvm中DataObject 对象会共享i值,所以如果在同一个里面read,那么就是read时的i值(也可能不是2呢)
2.序列化不适用于static和transient变量,所以没有传到另一个jvm的i值。
3.当你读取的时候,如果之前已经有别的对象赋值给i,那读到的就是那个i值,而不是0。如果没有,那读到的就是0。所以确切的讲,是另一个jvm中读取时的i值。
7. 基于Servlet API如何实现转向时不在地址栏中显示转向后的地址(C)
A:redirect()
B:sendRedirect()
C:forward()
D:transform()
8. 假设有如下代码:String s="hello"; String t="hello"; char c[]={'h','e','l','l','o'};下列返回false语句的是(B)
A:s.equals(t)
B:t.equals(c)
C:s==t
D:t.equals(new String(“hello”))
==比较的是两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是不是相同
9. 下面代码的运行结果是:B
class B extends Object{ static {System.out.println("Load B");} public B(){ System.out.println("Create B"); } }
class A extends B{ static {System.out.println("Load A");} public A(){ System.out.println("Create A"); } } public class Test{ public static void main(String[] args){ new A(); } } |
A:Load B->Create B->Load A->Create A
B:Load B-> Load A-> Create B ->Create A
C:Load B-> Create B -> Create A-> Load A
D:Create B -> Create A -> Load B-> Load A