前因 :
记录在牛客上刷题的错题记事本
1. 有以下类定义: 运行后:正确的是
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 : 编译能通过,但是没有输出结果
正确答案选B,父类是抽象类,子类继承父类,但是没有实现父类的抽象方法,那么子类也是抽象类。抽象类不能创建对象,所以在主函数中创建对象编译不会通过。
2. 在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
A : Servlet对象
B : HTTP服务器
C : Web容器
D : JSP网页
答案选C, Apache就是一个Http服务器,Tomcat是一个web容器,静态的htmlApache还可以处理,但是动态的需要转发给Tomcat去处理了,比如jsp页面,请求先经由Apache转发给Tomcat再由Tomcat解析请求。所以应该是web容器去解析成request对象。
3. 从内存实现或者反射的角度来看,关于继承的说法正确的是()。注:此处的继承不代表能调用
A : 子类将继承父类的所有的数据域和方法
B : 子类将继承父类的其可见的数据域和方法
C : 子类只继承父类public方法和数据域
D : 子类只继承父类的方法,而不继承数据域
答案选A,子类可以继承父类的全部数据域和方法,但是这里继承代表的是“拥有”,即:只是拥有父类的全部数据域和方法,但不具备对某些私有数据域或私有方法的使用权(调用)。
4. 下面关于程序编译说法正确的是()
A : java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
B : java编译出来的目标文件与具体操作系统有关
C : java在运行时才进行翻译指令
D : java编译出来的目标文件,可以运行在任意jvm上
答案选C,A:.java编译成的是字节码,再被各系统的jvm翻译成本系统可以识别的机器码,这就是java一次编程多平台应用的跨平台性 B:java源文件生成的是class文件,与系统无关 C:注意字节码和机器码不是一回事 java程序在运行时字节码才会被jvm翻译成机器码,所以说java是解释性语言 D:注意jvm的版本,好比人穿裤子,一条裤子能被任何人穿上吗
5. java8中,下面哪个类用到了解决哈希冲突的开放定址法
A : LinkedHashSet
B : HashMap
C : ThreadLocal
D : TreeMap
答案选C, ThreadLocalMap中使用开放地址法来处理散列冲突,而HashMap中使用的是分离链表法。之所以采用不同的方式主要是因为:在ThreadLocalMap中的散列值分散得十分均匀,很少会出现冲突。并且ThreadLocalMap经常需要清除无用的对象,使用纯数组更加方便。
6. 以下JAVA程序的运行结果是什么( )
public static void main(String[] args) {
Object o1 = true ? new Integer(1) : new Double(2.0);
Object o2;
if (true) {
o2 = new Integer(1);
} else {
o2 = new Double(2.0);
}
System.out.print(o1);
System.out.print(" ");
System.out.print(o2);
}
A : 1 1
B : 1.0 1.0
C : 1 1.0
D : 1.0 1
答案选D, 三元操作符如果遇到可以转换为数字的类型,会做自动类型提升。
7. 下列方法中哪个是线程执行的方法? ()
A : run()
B : start()
C : sleep()
D : suspend()
答案选A, start是启动线程对象,使之从新建状态转入就绪状态;sleep让线程睡眠一段时间,在此期间线程不消耗CPU资源;suspend使线程挂起,暂停执行, 如果想恢复线程,必须由其他线程调用 resume方法。