其他分享
首页 > 其他分享> > 8.28考试复盘

8.28考试复盘

作者:互联网

  1. 下面的方法,当输入为2的时候返回值是多少?

public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
A.0
B.2
C.4
D.10
答案:D
要注意的是 switch结构中没有break的话,匹配完不会跳出,会继续匹配下一个case直到整个结构结束
所以:case 2结束时result=4;
case3结束时result=10;
return 10

  1. 下列代码的输出结果是_____

    boolean b=true?false:true==true?false:true;
    System.out.println(b);
    A.true
    B.false
    C.null
    D.空字符串
    知识点:

==优先级大于?:
?:计算方向:从右到左

解析:

boolean b=true?false:truetrue?false:true;
=boolean b=true?false:(true
true)?false:true;
=boolean b=true?false:true?false:true;
=boolean b=true?false:(true?false:true);
=boolean b=true?false:false;
=boolean b=false;

  1. 面向对象方法的多态性是指()
    A.一个类可以派生出多个特殊类
    B.一个对象在不同的运行环境中可以有不同的变体
    C.针对一消息,不同的对象可以以适合自身的方式加以响应
    D.一个对象可以是由多个其他对象组合而成的
    答案:C

  2. 关于Java中参数传递的说法,哪个是错误的?
    A.在方法中,修改一个基础类型的参数不会影响原始参数值
    B.在方法中,改变一个对象参数的引用不会影响到原始引用
    C.在方法中,修改一个对象的属性会影响原始对象参数
    D.在方法中,修改集合和Maps的元素不会影响原始集合参数
    答案:D

A、在方法中,修改一个基础类型的参数永远不会影响原始参数值。

B、在方法中,改变一个对象参数的引用永远不会影响到原始引用。然而,它会在堆中创建了一个全新的对象。(译者注:指的是包装类和immutable对象)

C、在方法中,修改一个对象的属性会影响原始对象参数。

D、在方法中,修改集合和Maps会影响原始集合参数。

11.下列不属于算法结构的是()
A.输入数据
B.处理数据
C.存储数据
D.输出结果
答案:C

  1. 在Java中,以下关于方法重载和方法重写描述正确的是?
    A.方法重载和方法的重写实现的功能相同
    B.方法重载出现在父子关系中,方法重写是在同一类中
    C.方法重载的返回值类型必须一致,参数项必须不同
    D.方法重写的返回值类型必须相同或相容。(或是其子类)

目前的问题:父类的功能无法满足子类的需求。

方法重写的前提: 必须要存在继承的关系。

方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。

什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。

方法重写要注意的事项:
1.方法重写时, 方法名与形参列表必须一致。
2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。
3.方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。
4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。

26.(多选)如果Child extends Parent,那么正确的有()?
A.如果Child是class,且只有一个有参数的构造函数,那么必然会调用Parent中相同参数的构造函数
B.如果Child是interface,那么Parent必然是interface
C.如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface
D.如果Child是class,并且没有显示声明任何构造函数,那么此时仍然会调用Parent的构造函数
A 可以调用父类无参的构造函数,子类的有参构造函数和是否调用父类的有参数的构造函数无必然联系。
B 接口继承的时候只能继承接口不能继承类,因为如果类可以存在非抽象的成员,如果接口继承了该类,那么接口必定从类中也继承了这些非抽象成员,这就和接口的定义相互矛盾,所以接口继承时只能继承接口。
C 接口可以多继承可以被多实现,因为接口中的方法都是抽象的,这些方法都被实现的类所实现,即使多个父接口中有同名的方法,在调用这些方法时调用的时子类的中被实现的方法,不存在歧义;同时,接口的中只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。 对于一个接口继承多个父接口的情况也一样不存在这些缺点。所以接口可以多继承。
D 子类即使没有显示构造函数,也会有个无参数的默认构造函数,仍然会调用父类的构造函数。

  1. 以下代码对其执行后,NumberList里的元素依次为:
    List NumberList = new ArrayList();
    NumberList.add(2);
    NumberList.add(4);
    NumberList.add(1);
    NumberList.add(3);
    NumberList.add(5);
    for(int i =0;i<NumberList.size();++i){
    int v = NumberList.get(i);
    if(v%2==0){
    NumberList.remove(v);
    }
    }
    ArrayList删除元素后,剩余元素会依次向前移动,因此下标一直在变,size()也会减小;
    remove()方法调用的是remove(int index),而不是remove(Object o),因此删除的是index索引处的元素;
    该题具体流程:i=0,v=2,remove(2)删除掉了元素1,因此NumberList剩余元素为[2,4,3,5];i=1,v=4,remo > ve(4),此时线性表中只有四个元素,不可能删除索引为4的元素,因此会报数组下标越界异常。

32.以下哪项不属于java类加载过程?
A.生成java.lang.Class对象
B.int类型对象成员变量赋予默认值
C.执行static块代码
D.类方法解析
答案:B

  1. 下列有关Servlet的生命周期,说法不正确的是?
    A.在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
    B.在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
    C.在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
    d.destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法
    Servlet的生命周期大致分为四个阶段:
    1.实例化:也就是创建Servlet实例,一般默认Servlet实例是第一次访问的时候,由服务器自动创建。执行一次
    2.初始化:调用init()来初始化Servlet实例,只执行一次,以后再访问时,不再调用这个方法。
    3.服务:根据用户的请求,来执行Servlet,其实就是执行doGet()方法或doPost方法。访问几次,就执行几次。
    4.销毁:在销毁Servlet之前,需要调用destory()方法来释放资源。执行一次

34(多选) 下面的对象创建方法中哪些会调用构造方法 ()?
A.new语句创建对象
B.调用Java.io.ObjectInputStream的readObject方法
C.java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
D.调用对象的clone()方法
答案:AC

题目的四个选项是构造方法new,序列化对象,反射,克隆分别创建一个对象的方法,,只有new和反射用到了构造方法

  1. 下面关于静态方法说明正确的是
    A.在静态方法中可用this来调用本类的类方法
    B.在静态方法中调用本类的静态方法时可直接调用
    C.在静态方法中只能调用本类中的静态方法
    D.在静态方法中绝对不能调用实例方法
    A:静态方法没有this。
    C:静态方法中可以调用其他类的静态方法,比如我们经常用的println。
    D:静态方法可以通过创建类的实例来调用实例方法。

  2. 下面哪些不是Thread类的方法
    A.start()
    B.run()
    C.exit()
    D.getPriority()
    答案:C

  3. 下列不正确的 Java 语言标识符是( )
    A.Sky
    B.$Computer
    C.for
    D.NULL

Java标识符命名规范是:
1)只能包含字母a-zA-Z,数字0-9,下划线_和美元符号$;
2)首字母不能为数字;
3)关键字和保留字不能作为标识符。
null是关键字,NULL不是关键字,java区分大小写。这题答案D是对的,但C是错的,for是关键字。

49.(多选) 在使用super和this关键字时,以下描述错误的是()
A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法内第一行
C.this()和super()可以同时出现在一个构造函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块

uper和this都只能位于构造器的第一行,而且不能同时使用,这是因为会造成初始化两次,this用于调用重载的构造器,super用于调用父类被子类重写的方法

我们分两种情况讨论,第一种当初始化的时候,父类没有带参构造器的话。子类构造器会默认调用父类无参构造器。这种情况下,子类构造器没有在第一行写super(),但实际上系统为了节约代码量,没显示而已,运行时会自动执行super()语句。
第二种当父类有带参构造器时,这个时候子类构造器如果需要调用父类带参构造器,则必须显式在子类构造器的第一行执行super(参数)。
因此,无论哪种情况,子类构造器在完成初始化过程中,都会调用父类构造器来帮助其进行初始化。因此,子类构造器第一行一定是super()。综上所述,A答案正确,B答案错误

  1. 如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?
    nums.add(6);
    nums.add(0,4);
    nums.remove(1);
    A. [5, 3, 1, 6]
    B.[4, 3, 1, 6]
    C. [4, 3, 6]
    D. [5, 3, 6]

初始化为{5,3,1}
nums.add(6)后list为{5,3,1,6}
nums.add(0,4)是在0号索引上添加数字4得到list为{4,5,3,1,6}
nums.remove(1)是将1号索引上的5进行remove得到list为{4,3,1,6}

  1. 以下哪个I / O类可以附加或更新文件
    A.RandomAccessFile()
    B.OutputStream()
    C.DataOutputStream()
    D.None of the above
    答案:A

  2. 下面哪一项不是加载驱动程序的方法?
    A.通过DriverManager.getConnection方法加载
    B.调用方法 Class.forName
    C.通过添加系统的jdbc.drivers属性
    D.通过registerDriver方法注册
    答案:A

  3. (多选)java运行时内存分为“线程共享”和“线程私有”两部分,以下哪些属于“线程共享”部分
    A. 程序计算器
    B.方法区
    C.java虚拟机栈
    D.java堆
    答案;BD

  4. 下列哪些操作会使线程释放锁资源?
    A.sleep()
    B.wait()
    C.join()
    D.yield()
    答案:BC

  5. 有一个源代码,只包含import java.util.* ; 这一个import语句,下面叙述正确的是? ( )
    A.只能写在源代码的第一句
    B.可以访问java/util目录下及其子目录下的所有类
    C.能访问java/util目录下的所有类,不能访问java/util子目录下的所有类
    D.编译错误

答案:C

  1. java用()机制实现了进程之间的同步执行
    A.虚拟机
    B.多个CPU
    C.异步调用
    D.监视器
    答案:D

  2. 在创建派生类对象,构造函数的执行顺序()
    A.基类构造函数,派生类对象成员构造函数,派生类本身的构造函数
    B.派生类本身的构造函数,基类构造函数,对象成员构造函数
    C.基类构造函数,派生类本身的构造函数,派生类对象成员构造函数
    D.对象成员构造函数,基类构造函数,派生类本身的构造函数
    答案:A

下:
5. 要使对象具有序列化能力,则其类应该实现如下哪个接口( )。
A. java.io.Serializable
B. java.lang.Cloneable,
C. java.lang.CharSequence
D. java.lang.Comparable

  1. HashSet子类依靠()方法区分重复元素。
    A. toString(),equals()
    B. clone(),equals()
    C. hashCode(),equals()
    D. getClass(),clone()

19有以下类定义:
abstract class Animal{
abstract void say();
}
public class Cat extends Animal{
public Cat(){
System.out.printf(“I am a cat”);
}
public static void main(String[] args) {
Cat cat=new Cat();
}
}
运行后:
A. I am a cat

B. Animal能编译,Cat不能编译

C. Animal不能编译,Cat能编译

D. 编译能通过,但是没有输出结果
包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别: 1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。 2)抽象类不能用来创建对象; 3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。 在其他方面,抽象类和普通的类并没有区别。

  1. 下列哪一种叙述是正确的()
    A. abstract修饰符可修饰字段、方法和类

B. 抽象方法的body部分必须用一对大括号{ }包住

C. 声明抽象方法,大括号可有可无

D. 声明抽象方法不可写出大括号

答案:D

  1. 要导入java/awt/event下面的所有类,叙述正确的是?()
    A. import java.awt.*和import java.awt.event.*都可以

B. 只能是import java.awt.*

C. 只能是import java.awt.event.*

D. import java.awt.*和import java.awt.event.*都不可以
答案:

  1. (多选)java中提供了哪两种用于多态的机制
    A. 通过子类对父类方法的覆盖实现多态

B. 利用重载来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。

C. 利用覆盖来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。

D. 通过子类对父类方法的重载实现多态
答案:AB

  1. (多选)有关会话跟踪技术描述正确的是()
    A. Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端

B. 关闭浏览器意味着临时会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期

C. 在禁用Cookie时可以使用URL重写技术跟踪会话

D. 隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示

D错:D:隐藏域在页面

  1. ArrayList和Vector主要区别是什么?
    A. Vector与ArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步

B. Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步

C. Vector是通过链表结构存储数据,ArrayList是通过数组存储数据

D上述说法都不正确
Vector & ArrayList 的主要区别
1) 同步性:Vector是线程安全的,也就是说是同步的 ,而ArrayList 是线程序不安全的,不是同步的 数2。
2)数据增长:当需要增长时,Vector默认增长为原来一倍 ,而ArrayList却是原来的50% ,这样,ArrayList就有利于节约内存空间。
如果涉及到堆栈,队列等操作,应该考虑用Vector,如果需要快速随机访问元素,应该使用ArrayList 。

  1. HashMap和HashTable的描述,错误的是?
    A. 他们都实现了Map接口。

B. HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。

C. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

D. 通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。
区别:
a) 继承不同。

public class Hashtable extends Dictionary implements Map

public class HashMap extends AbstractMap implements Map

b) Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。

c) Hashtable 中, key 和 value 都不允许出现 null 值。 在 HashMap 中, null 可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为 null 。当 get() 方法返回 null 值时,即可以表示 HashMap 中没有该键,也可以表示该键所对应的值为 null 。因此,在 HashMap 中不能由 get() 方法来判断 HashMap 中是否存在某个键, 而应该用 containsKey() 方法来判断。

d) 两个遍历方式的内部实现上不同。Hashtable、HashMap都使用了Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

e) 哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

f) Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

标签:调用,java,8.28,子类,父类,方法,复盘,考试,构造函数
来源: https://blog.csdn.net/weixin_44031266/article/details/100130752