【Java面试复习经典】传智播客Java就业班入学测试题及答案解析(2012年版)

【Java面试复习经典】传智播客Java就业班入学测试题及答案解析(2012年版)

  共50道题,每道题2分,总分100分,80分为合格。

  注意,题目有多选,也有单选。请认真作答。

=============================================================================
传智播客Java就业班入学测试题及答案解析(2012年版)

    共50道题,每道题2分,总分100分,80分为合格。
    
    注意,题目有多选,也有单选。请认真作答。
    
对应试者的忠告:

    传智播客从办学一来,一直在IT培训领域保持着良好的口碑,之所以能做到这么好的口碑,主要得益于过硬的教学质量以及学员的高就业率。

    本测试题的目的在于帮助学员检测自己的java基础,因为公司要保证教学质量,光有名师授课是远远不够的,还需要学员们都具备一个基本的java基础.

    试想一下,如果学员入学前我们不进行测试,那么必然会导致学生的技术水平参差不齐,再好的老师也无法把这样的班教好。

    希望参加测试的学员能本着对自己负责的态度,独立完成这套测试题。

    如果您试图通过找人帮忙做题等其他途径来完成这套测试题,我们劝您千万别这样做,因为这样是害了自己。

    即使通过测试,顺利进入就业班的学习,同样是跟不上老师的进度,不会有一个好的结果。

    如果您觉得完成这套测试题非常有难度,那也没有关系,因为我们针对基础不好的学员专门开设了java基础与加强班,您可以通过短时间的培训,打下一个坚实的基础,再继续参加我们就业班的培训。

【Java面试复习经典】
-----------------------------------------------------------------------------
1. 在JAVA中,下列哪些说法是正确的(AC)

    A.java源文件的扩展名为.java
    B.写好的java源程序可以直接运行
    C.编写的源程序必须先编译后才能运行
    D.程序员可以读懂扩展名为.class的文件

    答案:AC  
        java程序需要经历如下几个步骤才能够被运行:
            1.建立java源文件,为了让编译器识别是java文件所有扩展名为.java。
            2.编写java代码,你在里面写文言文我也不反对,但是严格意义上来讲,不单单名称要符合java源文件规范,里面代码也应该是符合java语法的。
            3.编译器编译源文件:编译器javac通过编译.java文件产生可被java执行的.class文件。
            4.java执行.class文件
-----------------------------------------------------------------------------
2. 在java中,关于数组描述正确的是(BD)

    A.数组中的索引下标从1开始              // 从0开始,计算机地址是从0开始
    B.存储在数组当中的数据都属于同一数据类型     // 考察数组概念
    C.通过数组名.length()能获得数组的长度      // 数组名.length    length是数组的一个属性
    D.数组的最大索引下标是数组的长度减1         // 例如:数组中有3个元素,角标为:0、1、2,长度为3,最大角标2=3-1。
-----------------------------------------------------------------------------
3. 下列标识符哪个是合法的(BD)

    A.class    关键字
    B.$abc        可以
    C.1234      不能以数字开头    
    D._name 

    请思考:main是关键字吗?说明理由。
        答:main不是关键字,main是一个通用的名称,虽然不是关键字,但是被jvm识别。
-----------------------------------------------------------------------------
4. 下面程序的输出结果是什么(D)

    int[] arr = new int[10];
    System.out.println(arr[0]);

    A.编译不通过
    B.运行时出错
    C.输出null 
    D.输出0

    数组顾名思义是数据排成组,它就是用来存储数据的。
    当我们定义好它时,它就已经被明确装的是何种类型的数据,
    而当我们没有初始化里面元素的时候,java会默认会按照你指定元素的类型来在角标上初始化相应的默认值。
    想一想String类型的数组如果没有初始化,那它的结果是什么呢? 
        答:是null。因为String是一个类类型,是引用数据类型。
-----------------------------------------------------------------------------
5. 下面哪些赋值语句是正确的?(ABD)

    A. long test = 012;    // 可以,八进制表示
    B. float f = -412;     // 可以
    C. int other = (int) true;     // 布尔类型不能转换为数值类型
    D. double d = 0x12345678;      // 可以,十六进制表示,在double范围内
    E. byte b = 128;      // 超出byte范围 -128~127

    这道题考察数据类型声明及转换。

    请思考:
        byte b = 4; // 默认将b强转为int类型
        b = 3 + 7;
        System.out.println(b); // 结果如何呢?为什么?
        结果为10

        byte b = 4;
        byte b1 = 3; // 默认将b1强转为int类型
        byte b2 = 7; // 默认将b2强转为int类型
        b = b1 + b2; // 类型不匹配:无法从int转换为字节
        System.out.println(b); // 结果如何呢?为什么?
        编译报错:类型不匹配:无法从int转换为字节
-----------------------------------------------------------------------------
6. 下面哪个语句正确地声明一个整型的二维数组(CD)

    A. int a[][] = new int[][]; 
    B. int b[10][10] = new int[][];
    C. int c[][] = new int[10][10];
    D. int []d[] = new int[10][10];
    
    数组定义格式问题:
    int arr[][]=new arr[2][3] or int arr[][]=new arr[2][];
    左边部分[]在arr两侧均可。
-----------------------------------------------------------------------------
7. 下面哪些函数是public void aMethod() {...}的重载函数?(BD)

    A. void aMethod( ) {...}
    B. public int aMethod(int a, float b) {...}
    C. public void aMethod () {...}
    D. public float aMethod (int m) {...}

    重载是同一个类中相同方法名,不同的参数列表,好比一个人可以用不同种餐具;重载同返回值无关。
-----------------------------------------------------------------------------
8. 下列代码运行的结果是(C)

    public static void main(String[] args) {
        int x = 4;
        int y = 5;
        if(x++ > 4 & ++y > 5) {
           x++;
        }
        System.out.println("x="+ x + ",y=" + y);
    }

    A. x=4,y=5
    B. x=4,y=6
    C. x=5,y=6
    D. x=6,y=6
-----------------------------------------------------------------------------
9. 尝试运行下面的代码会发生什么?(B)

    public class Test {
      public static void main(String args[]) {
           boolean m = true;
           if (m = false) {
               System.out.println("true");
           } else {
               System.out.println("false");
           }
        }
    }

    A. 输出字符串”true”
    B. 输出字符串”false”
    C. 编译时错误
    D. 运行时错误

    我们要明白if(){}语句中条件句中到底装的是什么,它里面判断的无非就是真假,true或者false,
    这里m作为一个boolean变量,在if中将它重新赋值为false,所以相当于if(false),故执行else中的代码。
-----------------------------------------------------------------------------
10. 在Java中,下列语句不能通过编译的有(BD)

    A. String s = “join” + 3;     // +前后有字符串 会将其作为字符串参与连接                 
    B. int a = “join” + 3;        // 字符串无法转换为int类型
    C. int a = ‘a’ + 5;           // 可以的,在int范围之内
    D. float f = 5 + 5.5;         // 小数java默认为double类型,无法从大变小,对于数据类型,一句话:可以鸡犬升天,不能委曲求全。

 
-----------------------------------------------------------------------------
11. 设 a = 3,则表达式 (--a )<<a的结果是(B)

    A. 16                      
    B. 8
    C. 24                      
    D. 12

    计算过程:
    按照运算符的优先级,小括号优先级最高,先执行--a,
    --a运算特点是在参与其他运算之前将自己-1,再用新值参与其他运算,a此时为2,
    也就是2<<2  2的二进制为10,左移两位1000,所以答案为8。
-----------------------------------------------------------------------------
12. 下面关于java中包的说法正确的是(ACD)

    A. 在java中可以使用import语句导入包     // 必须对啊import javax.servlet.*;
    B. 在java中可以使用package语句导入包    // 这是打包package com.lan.huyou
    C. 位于同一个包中的类,不需要导包就可以直接访问 
    D. 不同的包中可以出现类名相同的类        // 必须可以啊,要不然你的机器上怎么可能编写Person,早都被老师用了 
-----------------------------------------------------------------------------
13. 以下代码段的输出结果是?(AB)

    public static void main(String args[]) {
       int i;
       int j;
       outer: for (i = 1; i < 3; i++) {
           inner: for(j = 1; j < 3; j++) {
                  if (j == 2)
                  continue outer;
                  System.out.println("Value for i = " +i + " Value for j = " +j);
            }
        }
    }
    
    A. Value for i = 1 value for j = 1
    B. Value for i = 2 value for j = 1
    C. Value for i = 2 value for j = 2
    D. Value for i = 3 value for j = 1

    先输出1和1,然后是2和1。
    第一次循环时,i=1和j=1,这个不难理解,
    第二次i=2,而j虽然也自加为2,但是没有执行完,所以放在临时内存的2被舍弃,还是1。
-----------------------------------------------------------------------------
14. 编译并运行以下代码将发生什么?(E)

    public static void main(String[] args) {
        char digit = 'a';
        for (int i = 0; i < 10; i++) {
            switch (digit) {
                case 'x': {
                    int j = 0;
                    System.out.println(j);
                }
                default: {
                    int j = 100;
                    System.out.println(j);
                }
            }
        }
        int i = j;
        System.out.println(i);
    }

    A. 输出11次100
    B. 输出10次100,然后抛出运行期异常
    C. 编译错误,因为变量i不能在main() 方法中被声明2次
    D. 编译错误,因为变量j不能在main() 方法中被声明2次
    E. 以上都不对

    j是局部变量,在switch外是没法访问到的,编译出错提示找不到j变量。
-----------------------------------------------------------------------------
15. 下列关于 html 的说法哪些是正确的?(AB)

    A. Html就是超文本标记语言的简写,是最基础的网页语言
    B. Html代码不用区分大小写
    C. Html是由xml发展而来的    // 既生瑜何生亮,两就不是一个玩意。
    D. Html中所有的标签都必须要有开始标签和结束标签        // <input type="text" name="test"/>
-----------------------------------------------------------------------------
16. 在Java中,用来跳出循环的关键字为(C)

    A. return
    B. continue
    C. break
    D. exit
-----------------------------------------------------------------------------
17. 下列关于tcp协议的描述正确的有(BD)

    A. tcp协议是sun公司制定的协议
    B. tcp是基于ip协议的一种连接协议
    C. tcp协议面向无连接
    D. tcp协议面向连接必须稳定
-----------------------------------------------------------------------------
18. 在web页面中,经常需要使用javascript进行表单验证,现假设对用户名的限定为字母数字或下划线,以下的正则表达式哪些可以完成这样的限定?(BC)

    A. [a-z0-9_]
    B. \w 
    C. [a-zA-Z0-9_] 
    D. \W 
-----------------------------------------------------------------------------
19. 下列关于接口的说法正确的是(AD)

    A. 接口中所有的方法都是默认抽象的
    B. 接口是一种特殊的java类,所以也可以定义构造函数 
    C. 接口中的方法前面必须要加上public        // 没什么意义,可以不加上,编译器默认自动加上
    D. 一个类只能extends继承一个父类,但是可以实现多个接口
-----------------------------------------------------------------------------
20. 运行以下代码片段,输出结果是?(D)

    class X {
        Y b = new Y(); // 2运行到这里,执行y的构造函数输出Y
        X() {    
            System.out.print("X"); // 3 输出X
        }
    }

    class Y {
        Y() {
            System.out.print("Y");
        }
    }

    public class Z extends X {
        Y y = new Y();  // 4 输出Y
        Z() {
            System.out.print("Z"); // 5 输出 Z
        }

        public static void main(String[] args) {
        new Z(); // 1  Z的实例对象
        }
    }

    A. Z
    B. YZ
    C. XYZ
    D. YXYZ
    
    对继承的中构造函数的考察,会先实现父类,再实现子类。
-----------------------------------------------------------------------------
21. 下面程序的输出结果是什么?(D)

    Set set= new HashSet();
    set.add("aaa");
    set.add("bbb");
    set.add("aaa");
    System.out.println(set.size());

    A. 编译不通过
    B. 运行时出错
    C. 输出3
    D. 输出2

    一看到set想到set的特点是元素不可重复、无序。
    选D,编译时会有警告提示,使用泛型指定类型即可。
-----------------------------------------------------------------------------
22. 下列选项中关于Java中super关键字的说法正确的是(AD)

    A. super关键字是在子类对象内部指代其父类对象的引用。    // 例如:super.getClass()
    B. super关键字不仅可以指代子类的直接父类,还可以指代父类的父类。
    C. 子类通过super关键字只能调用父类的方法,而不能调用父类的属性。
    D. 在子类的构造函数中可以通过super关键字调用父类的构造函数。
-----------------------------------------------------------------------------
23. 下列关于类的继承的描述,正确的有(BD)

    A. 一个类可以同时继承多个父类     // java中不支持此种方式实现多继承
    B. 一个类可以具有多个子类
    C. 子类会自动拥有父类所有的方法   // 自动拥有父类所有的非私有方法
    D. 一个类继承另一个类需要使用extends关键字
-----------------------------------------------------------------------------
24. 下列代码运行的结果是(D)

    public static void main(String[] args) {
        int num = 4;
        int y = 0;
        switch (num) {
            case 1:
                y++;
            case 2:
                y += 2;
            case 3:
                y += 3;
            case 4:
                y += 4;
            case 5:
                y += 5;
        }
        System.out.println(y);
    }

    A. 0
    B. 4
    C. 5
    D. 9

    没有break来跳出,造成case穿透。
-----------------------------------------------------------------------------
25. 下列选项中关于java中this关键字的说法错误的有(BD) 

    A. this关键字是一个对象的引用     // this可以代表当前类
    B. this关键字可以用于引用当前类以外其他类型的对象    // this只代表本类对象
    C. this可用于构造函数中,调用类本身重载的构造函数,但是必须写在首行
    D. this可用于静态方法中         // this是对象的引用,静态方法没有对象,没有爹啊 所以不能在静态方法中引用this(静态方法不能与this同时使用)
-----------------------------------------------------------------------------
26. 下列关于java中抽象类的说法正确的有(AD) 

    A. 含有抽象方法的类必须声明为抽象类
    B. 抽象类中不可以有非抽象方法
    C. 抽象类中至少需要包含一个抽象方法
    D. 抽象类无法实例化     // 在抽象类中实例化有屁用
-----------------------------------------------------------------------------
27. 下列关于构造函数的说法正确的是(ABD)

    A. 方法名必须与类名相同
    B. 使用new关键字创建对象时,java虚拟机会自动调用构造函数     //调用默认空参的构造函数,如果类中定义了带参的,那么需要在new的时候提供参数
    C. 我们在定义一个类时,必须要声明至少一个构造函数
    D. 构造函数中不能使用return语句 构造函数返回值是对象,但是java规定不可以显式返回该对象
-----------------------------------------------------------------------------
28. 下面有关Java异常处理的说法错误的是(A)

    A. 一个try块只能有一条catch语句
    B. 一个try块中可以不使用catch语句     // 可以不处理,直接抛异常
    C. catch块不能单独使用,必须始终与try块在一起 try 和 catch是好基友
    D. finally块不能单独使用,必须始终与try块在一起 
-----------------------------------------------------------------------------
29. 下列关键字能和try语句一起使用的是(CD)

    A. final
    B. finalize
    C. finally
    D. catch
-----------------------------------------------------------------------------
30. 编译并运行以下代码的输出结果是?(C)

    String s1 = new String("amit"); // 字符串常量池
    System.out.println(s1.replace('m','r')); // replace方法返回一个字符串,这个字符串当然是新的了,不会影响原来的s1
    System.out.println(s1);
    String s3 = "arit";
    String s4 = "arit";
    String s2 = s1.replace('m','r');
    System.out.println(s2 == s3);
    System.out.println(s3 == s4); 

    A.  
    arit
    amit
    false
    true

    B.  
    arit
    arit
    false 
    true
     
    C. 
    amit
    amit
    false
    true
     
    D.
    arit
    amit
    true
    true
-----------------------------------------------------------------------------
31. 当select下拉列表的选项发生改变时会触发下面的那个事件?(C)

    A. onclick事件
    B. onsubmit事件
    C. onchange事件
    D. onload事件
-----------------------------------------------------------------------------
32. 编译并运行以下代码将发生什么?(D)

    class MyClass {
        int x;
        MyClass(int i) {
           x = i;
        }
        public static void main(String args[]) {
           MyClass m1 = new MyClass(100);
           MyClass m2 = new MyClass(100);
           if(m1.equals(m2)) {    // 继承Object类,比较的是对象的地址值
               System.out.println("Bothare equal");
           }else {
               System.out.println("Bothare not equal");
           }
        }
    }

    A. 代码编译时报出错误提示信息“equals() 方法未定义”
    B. 编译通过,抛出运行期异常.
    C. 输出Both are equal.
    D. 输出Both are not equal

    查看object类的equals方法,就一目了然了。
-----------------------------------------------------------------------------
33. 阅读下面的html页面,选出能获取table元素的语句(BD)

    <html>
        <body>
           <table name=”mytab”>
               <tr>……</tr>
           </table>
        </body>
    </html>

    A. document.getElementById("mytab") 
    B. document.getElementsByName("mytab")[0]
    C. document.getElementsByTagName("mytab")[0]
    D. document.getElementsByTagName("table")[0]
-----------------------------------------------------------------------------
34. 运行以下的main()方法,结果是?(AC)

    public static void main(String[] args) {
        String myString;
        int x = 100;
        if (x < 100) 
            myString = "x is less than 100";
        if (x > 100) 
            myString = "x is greater than 100";
        System.out.println(myString.length());
    }

    A.编译时报出错误提示信息“变量myString没有被初始化” 局部变量必须在使用前初始化
    B.译通过
    C.编译未能通过。但如果变量myString在第8行前的代码中被初始化,代码可以编译通过,运行时可以输出字符串myString的长度
    D.以上都不对
-----------------------------------------------------------------------------
35. 下列哪些代码可以顺利通过编译和运行?(ABD)

    A.Integer i = new Integer("A");
    B.Integeri = new Integer("7");        // 把字符串转为int类型,注意这个字符串必须是由数字字符组成。
    C.Characterc = new Character("A");
    D.Booleanb = new Boolean(null);       // 在Boolean的构造函数中,除了"true"和"false"之外的字符串虽然不会造成编译错误,但是会返回false。
    E.Integeri = new Integer("0x10");
    
    因为这个Boolean的构造函数是根据输入的值判断的是true还是false或者输入的值是"true"或"false";
    如果输入的值是Boolean类型true,则返回true,否则返回false。
    如果输入的值是String类型的"true"或"false",
    那么这个构造函数会判断输入的是否为 "" 为空,也是返回false,
    不为空则进行长度判断,长度如果不满足true的长度,那么也是返回false,否则返回true;
    如果长度满足条件则进行对该字符串的每个字符进行编码转换,然后继续判断每个字符是否满足条件,也是返回Boolean类型。
    如果满足条件则将进行无视大小写的判断返回的也是Boolean类型的。
    原理就是这样。

    所以说,你这个实例化对象Boolean传入的"null"不满足Boolean类型的true,也没满足字符串的"true",所以返回的是false。
-----------------------------------------------------------------------------
36. 下列关于ArrayList、Vector和LinkedList集合的说法正确是有(ACD)

    A. ArrayList集合底层是数组实现,该集合线程不安全
    B. Vector 集合元素的存放是无序的        // Vector底层是数组结构,肯定是有序的
    C. LinkedList集合底层是链表结构,适合做元素的增删操作
    D. 这三个集合都是List接口的实现类
-----------------------------------------------------------------------------
37. 下列哪些方法是ArrayList和LinkedList集合中都定义的(ACD)

    A. add(Object o)
    B. removeFirst()    // LinkedList所特有的方法
    C. remove(Object o)
    D. add(int index, Object o)
-----------------------------------------------------------------------------
38. 下列关于Java中文件输入输出的说法正确的是(AC)

    A. 在Java中,文件的输入输出功能是通过流来实现的
    B. 如果要把数据写入到一个文件中,需要创建一个输入流对象
    C. 字符流在某些方面比如汉字的处理,比字节流更高效
    D. 可以通过Reader r = new Reader("c:\\pet.txt")创建一个输入流对象    // Reader是一个抽象基类,不能创建对象
----------------------------------------------------------------------------- 
39. 下列哪个关键字可以用于实现同步?(C)

    A. native
    B. static
    C. synchronized
    D. abstract
-----------------------------------------------------------------------------
40.  下列哪些方法可以让线程中断?(AD)

    A. sleep    // 线程进入休眠状态,进入中断,时间到自动醒来进入就绪状态
    B. start
    C. notify
    D. wait    // 执行中的让出CPU执行权,进入线程中断
-----------------------------------------------------------------------------
41. 编译并运行以下代码的结果是?(A)
    
    import java.io.*;
    
    public class MyThread extends Thread {
        public static void main(String args[]) {
           MyThread mt = new MyThread();
           mt.start();    // new Thread(mt).start();
        }
        public void run() {
           try {
                sleep(200);
                System.out.println("Printing from thread run() method");
           } catch ( IOException e) {
           }
        }
    }

    A. 编译错误
    B. 输出: Printing from thread run() method
    C. 线程先停止运行,在 200毫秒后恢复,并输出:Printing from thread run() method.
    D. 线程先停止运行,在恰好200毫秒后恢复
    
    因为sleep抛出的异常是InterruptedException不是IOException
-----------------------------------------------------------------------------
42. 在 awt 中,下列哪个组件可以实现带标题的窗口(C)

    A. panel         // 面板不带标题
    B. button        // 按钮不是窗口
    C. frame
    D. graphics
-----------------------------------------------------------------------------
43. Socket类哪个方法返回Socket对象绑定的本地端口(B)

    A. getPort()          // 返回的是连接到的远程端口
    B. getLocalPort()     // 返回此套接字绑定的本地端口
    C. getRemotePort()    // Socket不存在此方法
    D. 不存在这个样的方法,因为SocketChannel对象绑定的本地端口对程序是透明的
-----------------------------------------------------------------------------
44. 在 html 中,下面那些标签属于表单标签(BC)

    A. table
    B. radio
    C. input
    D. marquee
-----------------------------------------------------------------------------
45. 下列哪些集合属于Collection的子类(BD)

    A. TreeMap
    B. ArrayList
    C. HashTable
    D. HashSet
-----------------------------------------------------------------------------
46. 有关Java中的类和对象,以下说法正确的有(ACD)

    A. 同一个类的所有对象都拥有相同的特征和行为        // 行为一致,每个对象特征不一致以区分不同对象
    B. 类和对象一样,只是说法不同    // 类是物体的抽象描述,对象是一个具体的物体,两者有区别
    C. 对象是具有属性和行为的实体
    D. 类规定了对象拥有的特征和行为
-----------------------------------------------------------------------------
47. 下列关于javascript的说法错误的有(BCD)

    A. JavaScript是基于对象和事件的脚本语言
    B. JavaScript 脚本是java语言的一个分支         // javascript跟java没有关系
    C. JavaScript 脚本必须要内嵌在html语言中使用    // 也可以外链
    D. JavaScript脚本需要编译后ie浏览器才能解释执行  // JavaScript是解释执行,不需要编译
-----------------------------------------------------------------------------
48. 下面的javascript语句,哪些是有错的(BD)

    A. var num = 1 + "abc";
    B. if (x = 4) alert(1);
    C. var arr = new Array(); // 有多种定义方式,通过array对象,或者直接定义
    D. var arr = {1,2,3,4};   // 语法问题:[ ]
-----------------------------------------------------------------------------
49. 下列代码运行的结果是(A)

    public static void main(String[] args) {
        int num = getNum();  // 在静态函数中不能引用非静态的方法,得给这个方法一个承载体,可以new 类().getNum();    输出结果为1 
        System.out.println(num);
        public int getNum() {
           int num = 1;
            return num++;
        } 
    }    

    A. 编译时报错
    B. 运行时报错
    C. 1
    D. 2
-----------------------------------------------------------------------------
50. 在Java中,如果要在字符串类型对象s="java"中,得到字符 'v' 出现的位置,可使用下面的那个方法?(B)

    A. s.matches('v');
    B. s.charAt('v');    // 传入int索引,返回指定索引的字符
    C. s.indexOf('v'); 
    D. s.substring('v');
-----------------------------------------------------------------------------

 

我的GitHub地址:https://github.com/hei*gjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
上一篇:iOS开发那些事--自定义单元格实现


下一篇:.NET一个线程更新另一个线程的UI(两种实现方法及若干简化)