题目来源:https://www.nowcoder.com/
第一题:
1.下面关于Spring的说法中错误的是
A.Spring是一系列轻量级Java EE框架的集合
B.Spring中包含一个“依赖注入”模式的实现
C.使用Spring可以实现声明式事务
D.Spring提供了AOP方式的日志系统
选D
解析:
Spring没有提供AOP(面向切面编程)方式的日志系统,是需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现了日志系统。
第二题:
2.如何获取ServletContext设置的参数
A.context.getParameter()
B.context.getInitParameter()
C.context.getAttribute()
D.context.getRequestDispatcher()
选B
解析:
getParameter()是获取POST/GET传递的参数值;
getInitParameter获取Tomcat的server.xml中设置Context的初始化参数getAttribute()是获取对象容器中的数据值;
getRequestDispatcher是请求转发。
第三题:
3.关于多线程和多进程,下面描述正确的是():
A.多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。
B.线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护。
C.线程的通信速度更快,切换更快,因为他们在同一地址空间内。
D.一个线程可以属于多个进程。
选AC
解析:
B.同一个进程下的多个线程之间可以共享数据,因此开销较小。但不利于资源的管理和保护;而进程执行开销大,但是能够很好的进行资源管理和保护。
D.一个进程可以有多个线程,但至少有一个线程(主线程),而一个线程只能属于一个进程,
第四题:
4.类 ABC 定义如下:
public class ABC{
public int max( int a, int b) { }
}
将以下哪个方法插入行 3 是不合法的。( )。
A.public float max(float a, float b, float c){ }
B.public int max (int c, int d){ }
C.public float max(float a, float b){ }
D.private int max(int a, int b, int c){ }
选B
解析:
重载:就是在同一个类中可以创建多个方法,它们具有相同的名字,但具有不同的参数个数哥不同定义,调用方法时通过传递给它们的不同参数个数和类型来决定具体使用哪个方法。当方法同名时,至少需要下面之一不同: 1.参数个数不同 2.对应位置上的参数类型不同。B选项,方法同名,参数个数相同,对应位置上的参数类型都相同。
第五题:
5.关于static说法不正确的是( )
A.可以直接用类名来访问类中静态方法(public权限)
B.静态块仅在类加载时执行一次
C.static方法中不能有用this调用的方法
D.不可以用对象名来访问类中的静态方法(public权限)
选D
解析:
A.静态方法属于类本身,可以用类名直接调用;
B.static方法都只会在类加载时只进行一次初始化操作;
C.this表示的当前类,static修饰的方法都是由类直接调用,不需要创建对象;static块和方法不能出现this和super
D.可以,实例对象也可以调用静态方法。
第六题:
6.下列关于包(package)的描述,正确的是
A.包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。
B.import语句将所对应的Java源文件拷贝到此处执行。
C.包(package)是Eclipse组织Java项目特有的一种方式。
D.定义在同一个包(package)内的类可以不经过import而直接相互使用。
选D
解析:
A:包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。
B:import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。
C:Java提供的包机制与eclipse没有关系。
第七题:
7.关于Java和C/C++的比较,下列哪个描述是错误的?
A.Java不支持指针,C/C++支持
B.Java程序不需要显式地关心内存释放,而C/C++需要
C.Java和C++一样,是纯编译型语言,因此它们的class都是在编译时静态联编(static binding)的
D.Java数组、字符串不可能溢出,C/C++数组、字符串则有可能溢出边界
选CD
解析:
C:Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。
D.java数组溢出,溢出是会抛出异常,也就是ArrayIndexOutOfBoundsException
第八题:
8.java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。()
A.正确
B.错误
选A
解析:
for(int i=0;i<10;i++){
a[i+1]=a[i]
}
这个i+1就是整数型表达式 或者a[5+3]就是a[8]
第九题:
9.在Java线程状态转换时,下列转换不可能发生的有()?
A.初始态->运行态
B.就绪态->运行态
C.阻塞态->运行态
D.运行态->就绪态
选AC
解析:
第十题:
10.下列关于继承的哪项叙述是正确的?
A.在java中类允许多继承
B.在java中一个类只能实现一个接口
C.在java中一个类不能同时继承一个类和实现一个接口
D.java的单一继承使代码更可靠
选D
解析:
A.Java只能单继承
B.一个类可以实现多个接口
C.一个类只能实现继承一个父类但是可以同时实现多个接口