传智播客java就业班入学测试题 多选题 单选

传智播客java就业班入学测试题

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

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

参考答案:https://cloud.tencent.com/developer/article/1353368

对应试者的忠告:

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

本测试题的目的在于帮助学员检测自己的java基础,因为公司要保证教学质量,光有名师授课是远远不够的,还需要学员们都具备一个基本的java基础,试想一下,如果学员入学前我们不进行测试,那么必然会导致学生的技术水平参差不齐,再好的老师也无法把这样的班教好。

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

如果您试图通过找人帮忙做题等其他途径来完成这套测试题,我们劝您千万别这样做,因为这样是害了自己。即使通过测试,顺利进入就业班的学习,同样是跟不上老师的进度,不会有一个好的结果。

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

 

  1. 在JAVA中,下列哪些说法是正确的( A)

A.java源文件的扩展名为.java

B.写好的java源程序可以直接运行

C.编写的源程序必须先编译后才能运行

D.程序员可以读懂扩展名为.class的文件//字节码

AC

  1. 下列标识符哪个是合法的(D )

A.class

B.$abc

C.1234

D._name

标识符(掌握)

  (1)就是给类、接口、方法、变量等起名字的字符序列。

  (2)组成规则:

    A:可由英文大小写字母组成;

    B:可由数字组成;

    C:可由$和_组成;

    D:可由中文组成,但是不建议用中文!

  (3)注意事项:

    A:不能以数字开头;

    B:不能是java中的关键字;

    C:java语言严格区分大小写。

 

 

  1. 下面哪些赋值语句是正确的?(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

 

 

  1. 在Java中,下列语句不能通过编译的有(b )

A. String s= “join”+ 3;                      

B. int a= “join”+3;

C. int a= ‘a’+5;

D. float f=5+5.5; // 小数java默认为double类型,无法从大变小,对于数据类型,一句话:可以鸡犬升天,不能委曲求全。

 

 

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

A. 16                      

B. 8

C. 24                      

D. 12

(--a)  a =2    2<<10   1000 =8

  1. 下列代码运行的结果是(c )

public static void main(String[] args) {

   

    int x = 4;

    int y = 5;

    if(x++>4 & ++y>5) {//0  &  1

       x++;

    }//   x=5   y=6

    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

 

  1. 尝试运行下面的代码会发生什么?( 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. 运行时错误

 

  1. 编译并运行以下代码将发生什么? ( d)

public static void main(String args[]){

       char digit = 'a';//65

       for (int i = 0; i < 10; i++){

           switch (digit)//65

           {

                  case 'x' :

                  {

                     int j = 0;//局部

                     System.out.println(j);     

                  }

                  default :

                  {

                     int j = 100;

                     System.out.println(j);   //10次 100   

                  }

           }

   }

    int i = j;

   System.out.println(i);  

}

A. 输出11次100

B. 输出10次100,然后抛出运行期异常

C. 编译错误,因为变量i不能在main() 方法中被声明2次

D. 编译错误,因为变量j不能在main() 方法中被声明2次

E. 以上都不对

知识点:变量作用范围

编译错误:

Compilation Failed
/usercode/file.java:19: error: cannot find symbol

    int i = j;

            ^

  symbol:   variable j

  location: class file

1 error

 

  1. class Demo

{

    public static int fun(int c)

{

       return  c+=2;

    }

    public static void main(String[] args)

{

       int temp = fun(2);

       System.out.println(temp);

    }

}

  1.   2
  2.   4
  3.   6
  4.   8

 

 

  1. 下面哪些函数是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){…}
知识点:重载函数:

http://www.runoob.com/java/java-override-overload.html

 

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

  • 被重载的方法必须改变参数列表(参数个数或类型不一样)
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。

 

  1. 在java中,关于数组描述正确的是(bcd )

A.数组中的索引下标从1开始0 

B.存储在数组当中的数据都属于同一数据类型

C.通过数组名.length()能获得数组的长度

D.数组的最大索引下标是数组的长度减1

知识点:C选项

不对的,字符串有成员函数length(), 可以通过调用 str.length() 来获得字符串的长度
数组的length是一个静态成员变量,不是方法,array.length就是数组的长度(容量)

 

  1. 下面程序的输出结果是什么( d)

int[] arr = new int[10];

System.out.println(arr[0]);

A.编译不通过

B.运行时出错

C.输出null

D.输出0

 

  1. 下面哪个语句正确地声明一个整型的二维数组( c)

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];

知识点: 二维数组定义  CD

数组定义格式问题:
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化



下面是一些例子

float[][] numthree; //定义一个float类型的2维数组

numthree=new float[5][5]; //为它分配5行5列的空间大小

numthree[0][0]=1.1f; //通过下标索引去访问 1行1列=1.1

long[][] numfive=new long[5][]; //定义一个long类型的不规则数组

numfive[0]=new long[5]; //为第1行分配5列

//定义double型的数组分配3行3列的空间同时赋值

double[][] numsix={{1.111D,2.222D,3.333D},{4.444D,5.555D,6.666D}};



int[][] numseven=new int[][]{{10,20,30},{40,50},{60}};
    int arr[][]=new arr[2][3] or int arr[][]=new arr[2][];
    左边部分[]在arr两侧均可。

 

 

  1. 以下代码输出是( d )

class Demo {

    public static void main(String[] args) {

       int i = 0;

       int sum = 0;

       while (i <= 10) {//  0---10

           i++;

           if (i % 2 != 0) //奇数

              continue;

           sum += i;// 2  4   6  8  10

 

       }

       System.out.println(sum);

    }

}

  1.   55
  2.   45
  3.   35
  4.   30

求偶数和

    0 + 2 + 4 + 6 + 8 + 10

  1. 和下面代码能完成相同的选项是(b)

class Demo {

    public static void main(String[] args) {

       int i = 1;

       int sum = 0;

       while (i <= 100) {

           if (i % 2 == 0) {

              sum = sum + i;//  100内 偶数

           }

           i++;

       }

       System.out.println(sum);

    }

}  

  1.   for (int x =1; x<=100;x++){ sum=sum+x;}
  2.   for (int x =0; x<=100;x+=2){ sum=sum+x;}
  3.   for (int x =1; x<=100;x+=2){ sum=sum+x;}

D.上述全对

 

  1. 下列有关类、对象和实例的叙述,正确的是哪一项?(b)

A.类就是对象,对象就是类,实例是对象的另一个名称,三者没有差别

B.对象是类的抽象,类是对象的具体化,实例是对象的另一个名称

C.类是对象的抽象,对象是类的具体化,实例是类的另一个名称

D.类是对象的抽象,对象是类的具体化,实例是对象的另一个名称

知识点:d

类 ,对象的定义  关系

  1. 下面关于java中包的说法正确的是( ad)

A. 在java中可以使用import语句导入包

B. 在java中可以使用package语句导入包

C. 位于同一个包中的类,不需要导包就可以直接访问

D. 不同的包中可以出现类名相同的类

知识点 :acd

 

  1. 下列有关抽象类的叙述正确的是哪项?(c)

A.抽象类中一定含有抽象方法

B.抽象类既能被实例化也能被继承

C.抽象类的声明必须包含abstract关键字

D.抽象类中不能有构造方法

知识点:抽象类

抽象类总结规定

  • 1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
  • 2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
  • 3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
  • 4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法
  • 5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

 

  1. 下列有关接口的叙述错误的是哪项?(d)

A.接口中只能包含抽象方法和常量

B.一个类可以实现多个接口

C.类实现接口时必须实现其中的方法

D.接口不能被继承

http://www.runoob.com/java/java-interfaces.html

接口的声明

接口的声明语法格式如下:

[可见度] interface 接口名称 [extends 其他的接口名名] { // 声明变量 // 抽象方法 }

接口的继承

 

 

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

下面的Sports接口被HockeyFootball接口继承:

/ 文件名: Hockey.java public interface Hockey extends Sports

{ public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); }

 

  1. 运行以下代码片段,输出结果是?( D )

class X {//父类

    Y b = new Y();//父类代码块

    X() {

            System.out.print("X");

    }

}

 

class Y {

    Y() {

            System.out.print("Y");

    }

}

 

public class Z extends X {

    Y y = new Y();//子类代

    Z() {

            System.out.print("Z");

    }

 

    public static void main(String[] args) {

           new Z();

    }

}

A. Z

B. YZ

C. XYZ

D. YXYZ

A:成员变量的问题
        int x = 10; //成员变量x是基本类型
        Student s = new Student(); //成员变量s是引用类型
    B:一个类的初始化过程
        先进行成员变量的初始化:
            默认初始化
            显示初始化
            构造方法初始化
    C:子父类的初始化(分层初始化)
        先进行父类初始化,然后进行子类初始化。
            
        结果:
            YXYZ
    
        问题:
            虽然子类中的构造方法默认有一个 super();
            但初始化的时候,不是按照那个顺序进行的。
            而是按照分层初始化进行的。
            super(); 它仅仅表示要先初始化父类数据,再初始化子类数据。

 

 

  1. 下列关于类的继承的描述,正确的有( bd )

A. 一个类可以同时继承多个父类(x)

B. 一个类可以具有多个子类(V)

C. 子类会自动拥有父类所有的方法(X)

D. 一个类继承另一个类需要使用 extends 关键字(V)

 

  1. 下列选项中关于java中this关键字的说法错误的有( b ) 

A. this关键字是一个对象的引用

B. this关键字可以用于引用当前类以外其他类型的对象

C. this可用于构造函数中,调用类本身重载的构造函数,但是必须写在首行

D. this可用于静态方法中

知识点:bd

this  是对象引用  静态方法没有对象

 

  1. 下列关于构造函数的说法正确的是( ABCD )AB

A. 方法名必须与类名相同

B. 使用new关键字创建对象时,java虚拟机会自动调用构造函数//d //调用默认空参的构造函数,如果类中定义了带参的,那么需要在new的时候提供参数

 

C. 我们在定义一个类时,必须要声明至少一个构造函数

D. 构造函数中不能使用return语句// 构造函数返回值是对象,但是java规定不可以显式返回该对象

 

 

 

 

  1. 编译并运行以下代码将发生什么?( 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("Both are equal");

       } else {

           System.out.println("Both are not equal");

       }

    }

}

A. 代码编译时报出错误提示信息“equals() 方法未定义”

B. 编译通过,抛出运行期异常.

C. 输出Both are equal.

D. 输出Both are not equal

 

  1. 运行以下的main()方法,结果是?( b)    AC

1   public static void main(String[] args)

2   {

3      String myString;

4      int x = 100;

5     

6      if (x < 100) myString = "x is less than 100";

7      if (x > 100) myString = "x is greater than 100";

8      System.out.println(myString.length());

9   }

A. 编译时报出错误提示信息“变量myString没有被初始化”

B. 编译通过

C. 编译未能通过。但如果变量myString在第8行前的代码中被初始化,代码可以编译通过,运行时可以输出字符串myString的长度

D. 以上都不对

 

  1. 有如下代码,请问哪些是正确的?(  c   d)acd

class ClassA{}

class ClassB extends ClassA{}

class ClassC extends ClassA{}

以及

ClassA p0 = new ClassA();

ClassB p1 = new ClassB();

ClassC p2 = new ClassC();

ClassA p3 = new ClassB();

ClassA p4 = new ClassC();

A.p0 = p1;//classa    classb

B.p1 = p2;

C.p1    = (ClassB)p3;   b  

D.p2 = (ClassC)p4;

 

A.p0 = p1; // 赋值操作,把子类的地址用父类来接收,没问题
B.p1 = p2; // 赋值操作,把子类的地址用其他子类类来接收,有问题
C.p1 = (ClassB)p3; // 赋值操作,把父类的地址强转为子类的地址再用父类来接收,没问题
D.p2 = (ClassC)p4; // 赋值操作,把父类的地址强转为子类的地址再用父类来接收,没问题

 

 

  1. 关于继承, 以下说法正确的是: (ad)ACD

A.Java中只支持单继承, 一个类只能继承一个类, 但是可以有多个子类

B.一个类如果没有自己写无参构造方法, 那么子类将无法继承

C.子类可以当父类用, 父类不可以当子类用

D. 子类重写父类方法时访问权限不能更低

 

  1. 编译并运行以下代码的输出结果是?(d  )

String s1 = new String("amit"); // 字符串常量池

System.out.println(s1.replace('m','r')); arit // replace方法返回一个字符串,这个字符串当然是新的了,不会影响原来的s1

 

System.out.println(s1); amit

String s3 = "arit";

String s4 = "arit";

String s2 = s1.replace('m','r'); arit

System.out.println(s2 == s3); //false

System.out.println(s3 == s4);true

 

  1.   arit

amit

false

true

 

  1.   arit

arit

false 

true

 

  1.   amit

amit

false

true

 

  1.   arit

amit

true

true

 

  1. 下列哪些代码可以顺利通过编译和运行? ( A )ABD

A.Integer i =  new Integer('A');

B.Integer i = new Integer("7"); // 把字符串转为int类型,注意这个字符串必须是由数字字符组成。

 

C.Character c = new Character("A");

D.Boolean b = new Boolean(null); / 在Boolean的构造函数中,除了"true"和"false"之外的字符串虽然不会造成编译错误,但是会返回false。

 

E.Integer i = new Integer("0x10");

 

java.lang.NumberFormatException: For input string: "0x10"

  1. 在Java中,如果要在字符串类型对象s="java"中,得到字符 'v' 出现的位置,可使用下面的那个方法?( B )C

A. s.matches('v');

B. s.charAt('v');  ??/

C. s.indexOf('v');

D. s.substring('v');

知识点:String 类 方法

char charAt(int index)
返回指定索引处的 char 值。

 

boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。

int indexOf(int ch)
返回指定字符String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。在此字符串中第一次出现处的索引。

如果此字符串中没有这样的字符,则返回 -1

int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。

  1. 下列关于ArrayList、Vector和LinkedList集合的说法正确是有( c )

A. ArrayList集合底层是数组实现,该集合线程不安全

B. Vector 集合元素的存放是无序的

C. LinkedList集合底层是链表结构,适合做元素的增删操作

D. 这三个集合都是List接口的实现类

ArrayList、Vector和LinkedList相关知识ACD

 

  1. 下面程序的输出结果是什么(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

 

Java 集合框架:

 

Set
 

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

Set 接口存储一组唯一,无序的对象。

 

  1. 下列哪些方法是ArrayList和LinkedList集合中都定义的(a  )ACD

A. add(Object o)

B. removeFirst()//LinkedList     移除并返回此列表的第一个元素。

C. remove(Object o)

D. add(int index,Object o)

 

  1. 下列哪些集合属于Collection体系的子类( a )BD

A. TreeMap

B. ArrayList

C. Hashtable

D. HashSet

 

 

从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,ListSet Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap 等等。

 

http://www.runoob.com/java/java-collections.html

 

  1. 下面有关Java异常处理的说法错误的是( ab)A

A. 一个try块只能有一条catch语句

B. 一个try块中可以不使用catch语句

C. catch块不能单独使用,必须始终与try块在一起

D. finally块不能单独使用,必须始终与try块在一起  ???

 

  1. 下列关键字能和try语句一起使用的是( c  d )

A. final

B. finalize

C. finally

D. catch

 

  1. 下面程序的运行结果是( a   )d

  FileOutputStream fos = new FileOutputStream(“c:\\demo.txt”);

  fos.write(“abc”);

  fos.close();

A.在C盘创建文件demo.txt,但文件是空的

B.在C盘创建文件demo.txt,并写入数据abc

C.将C盘已有的文件demo.txt中追加写入abc

D.编译失败

缺少try---- catch (FileNotFoundException e)

  1. 下列关于Java中文件输入输出的说法正确的是( a )

A. 在Java中,文件的输入输出功能是通过流来实现的

B. 如果要把数据写入到一个文件中,需要创建一个输入流对象  出

C. 字符流在某些方面比如汉字的处理,比字节流更方便

D. 可以通过Reader r = new Reader("c:\\pet.txt")创建一个输入流对象   ??? Reader类是一个抽象类,需要实现方法public abstract class Reader implements Readable, Closeable {

 

AC

  1. 请看如下代码:

BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\b.txt"));

String line = null;

while ((line = br.readLine()) != null) {

bw.write(line);

    bw.newLine();

bw.flush();

}

bw.close();

br.close();

它表达的意思是?( a )

A. 把c盘目录下的a.txt文件内容复制到d盘目录下的b.txt

B. 把d盘目录下的b.txt文件内容复制到c盘目录下的a.txt

C. 读取c盘目录下a.txt文件,输出在控制台

D. 把控制台的内容写入到d盘目录下的b.txt文件中

 

  1. 关于泛型的说法正确的是(c)ABC

A.泛型是JDK1.5出现的新特性

B.泛型是一种安全机制

C.使用泛型避免了强制类型转换

D.使用泛型必须进行强制类型转换

 

  1. 关于方法的递归算法,说法正确的是(bc)ABD

A.递归就是方法自己调用自己

B.递归的次数不能过大,否则会导致栈内存溢出

C.使用递归算法,方法必须有返回值

D.构造方法不可以使用递归算法

递归,就是在运行的过程中调用自己。

  递归必须要有三个要素:

  、边界条件

  、递归前进段

  、递归返回段

  当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

 

  1. 下列哪个关键字可以用于实现同步?(  c)

A. native

B. static

C. synchronized

D. abstract

 

  1. 下列哪些方法可以让线程中断? (a d  )

A. sleep

B. start

C. notify

D. wait

 

  1. 启动线程调用哪个方法? ( b )

A. run()

B. start()

C. play()

D. go()

 

  1. 在 awt 中,下列哪个组件可以实现带标题的窗口( c )

A. Menu

B. Button

C. Frame

D. TextField

 

  1. 编写Button组件的事件处理类时,需要实现哪个接口? ( c )

A ItemListener

B ActionListener

C ButtonListener

D WindowListener

 

  1. 下面哪项不是TCP的特点? ( c )B

A.面向连接

B.数据不可靠

C.传输速度慢

D.对数据大小无限制

TCP   UDP

小结TCPUDP的区别:

1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

tcp协议和udp协议的差别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度

  1. TCP协议的服务器的Socket对象是下面哪一个类? ( C )

A Socket//客户端

BInputStream

CServerSocket

DOutputStream

 

  1. 正则表达式中可以表示所有的单词字符信息的是下面哪个规则:(C  )

A \W

B \w

C [a-zA-Z]

D[a-zA-Z_0-9]

正则表达式   BD

  1. 获取Class类型的对象的三种方式是:( AB D )

A. Object类的getClass()

B. class静态属性

C. 自己创建Class对象

D. Class类的forName()静态方法

解析:

    // 1. 根据给定的类名来获得:用于类加载

    String classname = "cn.itcast.reflect.Person"; // 来自配置文件

    Class clazz = Class.forName(classname); // 此对象代表Person.class

 

    // 2. 如果拿到了对象,不知道是什么类型:用于获得对象的类型

    Object obj = new Person();

    Class clazz1 = obj.getClass(); // 获得对象具体的类型

 

    // 3. 如果是明确地获得某个类的Class对象:主要用于传参

    Class clazz2 = Person.class;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值