logo资料库

java面试笔试题 选择题 问答题 带答案 300题+ 面试必须掌握的知识.docx

第1页 / 共652页
第2页 / 共652页
第3页 / 共652页
第4页 / 共652页
第5页 / 共652页
第6页 / 共652页
第7页 / 共652页
第8页 / 共652页
资料共652页,剩余部分请下载后查看
一. 选择题(234) 1.下面中哪两个可以在 A 的子类中使用: ( ) class A { protected int method1 (int a, int b) { return 0; } } A. public int method 1 (int a, B. private int method1 (int a, C. private int method1 (int a, D. public short method1 (int a, int b) { return 0; } 解答:AC 主要考查子类重写父类的方法的原则 B,子类重写父类的方法,访问权限不能降低 int b) { return 0; } int b) { return 0; } long b) { return 0; } C,属于重载 D,子类重写父类的方法 返回值类型要相同或是父类方法返回值类型的子类 2.Abstract method cannot be static. True or False ? A True B False 解答:A 抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态 属性与对象是 无关的,只与类有关,这与 abstract 是矛盾的,所以 abstract 是不能被修饰为 static,否则就 失去了 abstract 的意义了 3.What will be the output when you compile and execute the following program. class Base { void test() { System.out.println("Base.test()"); } } public class Child extends Base { void test() { System.out.println("Child.test()"); } static public void main(String[] a) { Child anObj = new Child(); Base baseObj = (Base)anObj; baseObj.test(); } } Select most appropriate answer. A Child.test()
Base.test() B Base.test() Child.test() C Base.test() D Child.test() 解答:D 测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父 类 的 test 方法,因此调用子类的 test 方法。 4.What will be the output when you compile and execute the following program. class Base { static void test() { System.out.println("Base.test()"); } } public class Child extends Base { void test() { System.out.println("Child.test()"); Base.test(); //Call the parent method } static public void main(String[] a) { new Child().test(); } } Select most appropriate answer. A Child.test() Base.test() B Child.test() Child.test() C Compilation error. Cannot override a static method by an instance method D Runtime error. Cannot override a static method by an instance method 解答:C 静态方法不能在子类中被重写 5.What will be the output when you compile and execute the following program. public class Base{ private void test() { System.out.println(6 + 6 + "(Result)"); } static public void main(String[] a) { new Base().test(); } } Select most appropriate answer.
A 66(Result) B 12(Result) C Runtime Error.Incompatible type for +. Can't convert an int to a string. D Compilation Error.Incompatible type for +. Can't add a string to an int. 解答:B 字符串与基本数据类型链接的问题,如果第一个是字符串那么后续就都按字符串处理,比如 上边例子要 是 System.out.println("(Result)"+6 + 6 );那么结果就是(Result)66,如果第一个和第二 个。。 。 第 n 个都是基本数据第 n+1 是字符串类型,那么前 n 个都按加法计算出结果在与 字符串连接 6..What will be the output when you compile and execute the following program. The symbol ’ ⌴ ’ means space. } } private void test() { String aStr = "⌴ One⌴ "; String bStr = aStr; aStr.toUpperCase(); aStr.trim(); System.out.println("[" + aStr + "," + bStr + "]"); 1:public class Base{ 2: 3: 4: 5: 6: 7: 8: 9: 7: 8: 9: 10: 11: 12: } Select most appropriate answer. A [ONE,⌴ One⌴ ] B [⌴ One⌴ ,One] C [ONE,One] D [ONE,ONE] E [⌴ One⌴ ,⌴ One⌴ ] 解答:E 通过 String bStr = aStr;这句代码使 bStr 和 aStr 指向同一个地址空间,所以最后 aStr 和 bStr 的结 static public void main(String[] a) { new Base().test(); 果应该是一样,String 类是定长字符串,调用一个字符串的方法以后会形成一个新的 字符串。 7.下面关于变量及其范围的陈述哪些是不正确的( A.实例变量是类的成员变量 B.实例变量用关键字 static 声明 C.在方法中定义的局部变量在该方法被执行时创建 D.局部变量在使用前必须被初始化 ):
解答:BC 由 static 修饰的变量称为类变量或是静态变量 方法加载的时候创建局部变量 : 8.下列关于修饰符混用的说法,错误的是( ) A.abstract 不能与 final 并列修饰同一个类 B.abstract 类中可以有 private 的成员 C.abstract 方法必须在 abstract 类中 D.static 方法中能处理非 static 的属性 解答 D :静态方法中不能引用非静态的成员 9. 执 行 完 以 下 代 码 int [ ] ( A、 B、 C、 D、 解答:A x 属于引用类型,该引用类型的每一个成员是 int 类型,默认值为:0 10.编译运行以下程序后,关于输出结果的说明正确的是 ( x[24]为 0 x[24]未定义 x[25]为 0 x[0]为空 ) : x = new int[25] ; 后 , 以 下 哪 项 说 明 是 正 确 的 ): public class Conditional{ public static void x=4; main(String args[ ]){ int System.out.println(“value is “+ ((x>4) ? 99.9 :9)); 输出结果为:value 输出结果为:value 输出结果为:value 编译错误 } } A、 B、 C、 D、 解答:C 三目运算符中:第二个表达式和第三个表达式中如果都为基本数据类型,整个表达式的运算 结果 is 99.99 is 9 is 9.0 由容量高的决定。99.9 是 double 类型 而 9 是 int 类型,double 容量高。 11.关于以下 application 的说明,正确的是( ) 1. class 2. { 3. 4. 5. 6. 7. 8. 9. StaticStuff : static int x=10; static { x+=5;} public static void main(String args[ ]) { System.out.println(“x=” + x); } static { x/=3;}
private static int x=100; public static void main(String args[ ]){ ): } 10. A、 4 行与 9 行不能通过编译,因为缺少方法名和返回类型 B、 9 行不能通过编译,因为只能有一个静态初始化器 C、 编译通过,执行结果为:x=5 D、编译通过,执行结果为:x=3 解答:C 自由块是类加载的时候就会被执行到的,自由块的执行顺序是按照在类中出现的先后顺序执 行。 12.关于以下程序代码的说明正确的是( 1.class HasStatic{ 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. } 13.} A、5 行不能通过编译,因为引用了私有静态变量 B、10 行不能通过编译,因为 x 是私有静态变量 C、程序通过编译,输出结果为:x=103 D、程序通过编译,输出结果为:x=102 解答:D 静态变量是所有对象所共享的,所以上述代码中的几个对象操作是同一静态变量 x, 静态 变量可以通 HasStatic hs1=new HasStatic( ); hs1.x++; HasStatic hs2=new HasStatic( ); hs2.x++; hs1=new HasStatic( ); hs1.x++; HasStatic.x--; System.out.println(“x=”+x); 过类名调用。 13.下列说法正确的有() A. class 中的 constructor 不可省略 B. constructor 必须与 class 同名,但方法不能与 class 同名 C. constructor 在一个对象被 new 时执行 D.一个 class 只能定义一个 constructor 解答:C 构造方法的作用是在实例化对象的时候给数据成员进行初始化 A.类中如果没有显示的给出构造方法,系统会提供一个无参构造方法 B.构造方法与类同名,类中可以有和类名相同的方法 D.构造方法可以重载 14.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法
D.实例方法可直接调用本类的类方法 解答:D A. 实例方法不可直接调用超类的私有实例方法 B. 实例方法不可直接调用超类的私有的类方法 C.要看访问权限 15.下列哪一种叙述是正确的( ) A. abstract 修饰符可修饰字段、方法和类 B. 抽象方法的 body 部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明抽象方法不可写出大括号 解答:D abstract 可以修饰方法和类,不能修饰属性。抽象方法没有方法体,即没有大括号{} 16.下面代码的执行结果是? import java.util.*; public class ShortSet{ public static void main(String args[]) { Set s=new HashSet(); for(Short i=0;i<100;i++) { s.add(i); s.remove(i-1); } System.out.println(s.size()); } } A.1 B.100 C.Throws Exception D.None of the Above 解答:B i 是 Short 类型 i-1 是 int 类型,其包装类为 Integer, 所以 s.remove(i-1);不能移除 Set 集合中 Short 类型对象。 17.链表具有的特点是:(选择 3 项) A、不必事先估计存储空间 B、可随机访问任一元素 C、插入删除不需要移动元素 D、所需空间与线性表长度成正比 解答:ACD A.采用动态存储分配,不会造成内存浪费和溢出。 B. 不能随机访问,查找时要从头指针开始遍历 C. 插入、删除时,只要找到对应前驱结点,修改指针即可,无需移动元素 D. 需要用额外空间存储线性表的关系,存储密度小
。(选择 1 项) 18.Java 语言中,String 类的 IndexOf()方法返回的类型是? A、Int16 B、Int32 C、int D、long 解答:C indexOf 方法的声明为:public int indexOf(int ch) 在此对象表示的字符序列中第一次出现该字符的索引;如果未出现该字符,则返回 -1。 19.以下关于面向对象概念的描述中,不正确的一项是() A.在现实生活中,对象是指客观世界的实体 B.程序中的对象就是现实生活中的对象 C.在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(class) D.在程序中,对象是一组变量和相关方法的集合 解答:B 20..执行下列代码后,哪个结论是正确的 String[] s=new String[10]; A. s[9] 为 null; B. s[10] 为 ""; C. s[0] 为 未定义 D. s.length 为 10 解答:AD s 是引用类型,s 中的每一个成员都是引用类型,即 String 类型,String 类型默认的值为 null s 数组的长度为 10。 21.属性的可见性有。(选择 3 项) A.公有的 B.私有的 C.私有保护的 D.保护的 解答:ABD 属性的可见性有四种:公有的(public) 保护的(protected) 默认的 私有的(private) 22..在字符串前面加上_____符号,则字符串中的转义字符将不被处理。(选择 1 项) @ A \ B # C D % 解答:B 23.下列代码哪行会出错: (选择 1 项) 1) public void modify() { 2) int I, j, k; 3) I = 100; 4) while ( I > 0 ) { 5) j = I * 2; 6) System.out.println (" The value of j is " + j ); 7) k = k + 1; 8) I--; 9) } 10) } 4 A.
6 7 8 B. C. D. 解答:C k 没有初始化就使用了 24.对记录序列{314,298,508,123,486,145}按从小到大的顺序进行插入排序,经过两趟 排序后的 结果为:(选择 1 项) {314,298,508,123,145,486} {298,314,508,123,486,145} {298,123,314,508,486,145} {123、298,314,508,486,145} A B C D 解答:B 插入排序算法: public static void injectionSort(int[] number) { // 第一个元素作为一部分,对后面的部分进行循环 for (int j = 1; j < number.length; j++) { int tmp = number[j]; int i = j - 1; while (tmp < number[i]) { number[i + 1] = number[i]; i--; if (i == -1) break; } number[i + 1] = tmp; } } 25.栈是一种。(选择 1 项) A 存取受限的线性结构 B 存取不受限的线性结构 C 存取受限的非线性结构 D 存取不受限的非线性结构 解答:A 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。 26.下列哪些语句关于内存回收的说明是正确的。(选择 1 项) A 程序员必须创建一个线程来释放内存 B 内存回收程序负责释放无用内存 C 内存回收程序允许程序员直接释放内存 D 内存回收程序可以在指定的时间释放内存对象 解答:B 垃圾收集器在一个 Java 程序中的执行是自动的,不能强制执行,即使程序员能明确地判断 出有一块内 存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员
分享到:
收藏