JVM内存不包含如下哪个部分( ) A.Stacks B.PC寄存器 C.Heap D.Heap Frame
正确答案: D
A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明: 1. A a0=new A(); 2. A a1 =new B(); 3. A a2=new C(); 问以下哪个说法是正确的?( ) 第1行不能通过编译 第1、2行能通过编译,但第3行编译出错 第1、2、3行能通过编译,但第2、3行运行时出错 第1行、第2行和第3行的声明都是正确的
正确答案: A
抽象类和接口都不能实例化
以下代码运行输出的是 public class Person{ private String name = "Person"; int age=0; } public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(p.name); } } A.输出:Person B.没有输出 C.编译出错 D.运行出错
正确答案: C
Java中对字段属性是静态绑定,方法成员是动态绑定,这里错在:在子类中试图访问父类的private字段,所以编译不通过,将private去掉就可访问,不是动态绑定的问题,它本来就属于静态绑定。
判断对错。在java的多态调用中,new的是哪一个类就是调用的哪个类的方法。 A.对 B.错
正确答案: B
java多态有两种情况:重载和覆写
在覆写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法
java运行时内存分为“线程共享”和“线程私有”两部分,以下哪些属于“线程共享”部分 A.程序计算器 B.方法区 C.java虚拟机栈 D.java堆
正确答案: B D
私有:java虚拟机栈,程序计数器,本地方法栈 共享:java堆,方法区
final、finally和finalize的区别中,下述说法正确的有? A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 B.finally是异常处理语句结构的一部分,表示总是执行。 C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。 D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的。
正确答案: A B
选AB
A,D考的一个知识点,final修饰变量,变量的引用(也就是指向的地址)不可变,但是引用的内容可以变(地址中的内容可变)。
B,finally表示总是执行。但是其实finally也有不执行的时候,但是这个题不要扣字眼。
- 在try中调用System.exit(0),强制退出了程序,finally块不执行。
- 在进入try块前,出现了异常,finally块不执行。
C,finalize方法,这个选项错就错在,这个方法一个对象只能执行一次,只能在第一次进入被回收的队列,而且对象所属于的类重写了finalize方法才会被执行。第二次进入回收队列的时候,不会再执行其finalize方法,而是直接被二次标记,在下一次GC的时候被GC。
放一张图吧
有关线程的叙述正确的是() A.可以获得对任何对象的互斥锁定 B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定 C.线程通过使用synchronized关键字可获得对象的互斥锁定 D.线程调度算法是平台独立的
A,“任何对象”锁定,太绝对了,你能锁住你没有权限访问的对象吗?
B,前半句话讲的是创建线程的方式,后半句讲的是锁定,驴头不对马嘴。
C,正确。
D,线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平***立的原因。
以上,选CD
以下各类中哪几个是线程安全的?( ) A.ArrayList B.Vector C.Hashtable D.Stack
BCD
在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
2020-11-9
一个类的构造器不能调用这个类中的其他构造器。( ) A.正确 B.错误
正确答案: B
this()和super()都是构造器,this()调用本类构造器,super()调用父类构造器
以下哪个不属于JVM堆内存中的区域()? A.survivor区 B.常量池 C.eden区 D.old区
正确答案: B
jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。
常量池属于 PermGen(方法区)
Which method you define as the starting point of new thread in a class from which n thread can be execution? 下列哪一个方法你认为是新线程开始执行的点,也就是从该点开始线程n被执行。 A.public void start() B.public void run() C.public void int() D.public static void main(String args[]) E.public void runnable()
正确答案: B
题目的意思是,下列哪一个方法你认为是新线程开始执行的点,也就是从该点开始线程n被执行。
了解过线程的知识我们知道:
start()方法是启动一个线程,此时的线程处于就绪状态,但并不一定就会执行,还需要等待CPU的调度。
run()方法才是线程获得CPU时间,开始执行的点。
将下列哪个代码(A、B、C、D)放入程序中标注的【代码】处将导致编译错误? class A{ public float getNum(){ return 3.0f; } } public class B extends A{ 【代码】 } A.public float getNum(){return 4.0f} B.public void getNum(){} C.public void getNum(double d){} D.public double getNum(float d){return 4.0d}
正确答案: B
方法重写要求方法名,返回值类型,参数完全相同,所以A符合,B返回值类型不同,编译错误。而C和D不仅返回值类型不同,参数也不同,不属于方法重写,而是属于子类自己新增的方法。所以选B
jre 判断程序是否执行结束的标准是() A.所有的前台线程执行完毕 B.所有的后台线程执行完毕 C.所有的线程执行完毕 D.和以上都无关
正确答案: A
来源百度: 后台线程:指为其他线程提供服务的线程,也称为守护线程。JVM的垃圾回收线程就是一个后台线程。 前台线程:是指接受后台线程服务的线程,其实前台后台线程是联系在一起,就像傀儡和幕后操纵者一样的关系。傀儡是前台线程、幕后操纵者是后台线程。由前台线程创建的线程默认也是前台线程。可以通过isDaemon()和setDaemon()方法来判断和设置一个线程是否为后台线程。
在创建派生类对象,构造函数的执行顺序() A.基类构造函数,派生类对象成员构造函数,派生类本身的构造函数 B.派生类本身的构造函数,基类构造函数,对象成员构造函数 C.基类构造函数,派生类本身的构造函数,派生类对象成员构造函数 D.对象成员构造函数,基类构造函数,派生类本身的构造函数
正确答案: A
类的初始化过程也就是方法执行的过程。
父类的静态域-子类的静态域 父类的非静态域-父类的构造函数 子类的非静态域-子类的构造函数 规律就是 父类先于子类 静态的先于非静态的
其中静态域包含静态代码块与静态方法,这个谁在前面,则先执行谁。
非静态域同理
关于HashMap和Hashtable正确的说法有() A.都实现了Map接口 B.Hashtable类不是同步的,而HashMap类是同步的 C.Hashtable不允许null键或值 D.HashMap不允许null键或值
正确答案: A C
1、继承不同。public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements Map
2、Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。
3、Hashtable中,key和value都不允许出现null值。在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
4、两个遍历方式的内部实现上不同。Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。
5、哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。
6、Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数
在J2EE中,使用Servlet过滤器,需要在web.xml中配置()元素 A.<filter> B.<filter-mapping> C.<servlet-filter> D.<filter-config>
答案:AB
Servlet过滤器的配置包括两部分:
第一部分是过滤器在Web应用中的定义,由元素表示,包括和两个必需的子元素
第二部分是过滤器映射的定义,由元素表示,可以将一个过滤器映射到一个或者多个Servlet或JSP文件,也可以采用url-pattern将过滤器映射到任意特征的URL。
Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。 A.加载Servlet类及.class对应的数据 B.创建servletRequest和servletResponse对象 C.创建ServletConfig对象 D.创建Servlet对象
"编译看左边,运行看右边"(多态执行)
含义:
Animal c = new Cat(); 左边是 Animal 类(或接口) 右边是 Cat()类; 在编译的时候编译器不管你右边是什么类,只要左边的Animal类(或接口)能编译通过就不会报错。但是运行的时候就要按照右边的Cat()类实际情况来运行。