说明:以下面试题中,选项背景为这个颜色的,则代表为正确答案,后续会继续总结其它面试题系列,持续做题关注。
01
下面程序运行的结果为?
public static void main(String args[]){
Thread t = new Thread(){
public void run(){
pong();
}
};
t.run();
System.out.println("ping");
}
static void pong(){
System.out.println("pong");
}
A. | pingpong | |||
---|---|---|---|---|
B. | pongping | |||
C. | pingpong和pongping都有可能 | |||
D. | 都不输出 |
解析
考点:Thread类中start()和run()方法的区别
start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run();
02
下面哪个流属于面向字符的输入流()?
A. | BufferedWriter | |||
---|---|---|---|---|
B. | FileInputStream | |||
C. | ObjectInputStream | |||
D. | InputStreamReader |
解析
考点:I/O流、字节流、字符流、输入流、输出流
Java的I/O操作中有面向字节(Byte)和面向字符(Character)两种方式。 面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。 面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。
总结:
以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流;
03
新建一个流对象,下面哪个选型的代码是错误的?
A. | new BufferedWriter(new FileWriter("a.txt")); | |||
---|---|---|---|---|
B. | new BufferedReader(new FileInputStream("a.dat")); | |||
C. | new GZIPOutputStream(new FileOutputStream("a.zip")); | |||
D. | new ObjectInputStream(new FileInputStream("a.dat")); |
解析
考点:对象流的使用
Reader只能用FileReader进行实例化
04
System.out.println("5"+2);的输出结果应该是?
A. | 52 | |||
---|---|---|---|---|
B. | 7 | |||
C. | 2 | |||
D. | 5 |
解析
考点:类型转换
Java会自动将2转换为字符串
05
以下程序运行的结果是?
public class Test{
static boolean foo(char c){
System.out.println(c);
return true;
}
public static void main(String[] args){
int i = 0;
for(foo('a');foo('b')&&(i<2);foo('c')){
i++;
foo('d');
}
}
}
A. | abdcbdcb | |||
---|---|---|---|---|
B. | abcdabcd | |||
C. | abcddcdb | |||
D. | an exception is thrown at runtime |
解析
考点:for循环的执行顺序
for(表达式1;表达式2;表达式3){
//循环体
}
先执行“表达式1”,再进行“表达式2”的判断,判断为真则执行“循环体”,循环体执行完以后执行表达式3
06
关于sleep()和wait(),以下描述错误的一项是?
A. | sleep是线程类(Thread)的方法,wait是Object类的方法 | |||
---|---|---|---|---|
B. | sleep不释放对象锁,wait放弃对象锁 | |||
C. | wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态 | |||
D. | sleep暂停线程、但监控状态仍然保持,结束后会自动恢复 |
解析
考点:sleep()和wait()区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态
07
提供Java存取数据库能力的包是?
A. | java.sql | |||
---|---|---|---|---|
B. | java.awt | |||
C. | java.lang | |||
D. | java.swing |
解析
考点:工具包的使用
java.sql是JDBC的编程接口 java.awt和java.swing是做图像界面的类库 java.lang: Java 编程语言进行程序设计的基础类
08
下面哪个表达式的值与数组下标量总数相等?
已知表达式 int m[] ={1,2,3,4,5,6};
A. | m.length() | |||
---|---|---|---|---|
B. | m.length()+1 | |||
C. | m.length | |||
D. | m.length() - 1 |
解析
考点:数组下标API
数组下标是从零开始的,但是数据下标的总量和数据长度相同
09
如下代码,如何使成员变量m被函数fun()直接访问?
class Test{
private int m;
public static void fun() {
//some code„
}
}
A. | 将private int m改为 protected int m | |||
---|---|---|---|---|
B. | 将private int m改为 public int m | |||
C. | 将private int m改为 static int m | |||
D. | 将private int m改为int m |
解析
考点:静态属性的使用
静态的方法中可以直接调用静态数据成员
10
不能用来修饰interface的有?
A. | private | |||
---|---|---|---|---|
B. | public | |||
C. | protected | |||
D. | static |
解析
考点:接口修饰符有哪些
修饰接口可以是public、默认、final;
11
JDBC中,用于表示数据库连接的对象是?
A. | Statement | |||
---|---|---|---|---|
B. | Connection | |||
C. | DriverManager | |||
D. | PreparedStatement |
解析
考点:JDBC连接数据库的步骤
1:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
2:创建连接
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "1111", "1111");
3:创建语句
PreparedStatement ps = con.prepareStatement("select * from user");
4:执行语句
ResultSet rs = ps.executeQuery();
5:处理结果
while(rs.next()) {
rs.get.....(“”);
}
6:关闭资源
finally {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
12
如下代码,输出的结果是?
public class Foo {
public static void main(String[] args) {
try {
return;
}catch(Exception e){
}finally {
System.out.println( "Finally" );
}
}
}
A. | Finally | |||
---|---|---|---|---|
B. | 编译失败 | |||
C. | 代码正常运行但没有任何输出 | |||
D. | 运行时抛出异常 |
解析
考点:finally执行
try.... catch...finally...结构,不管代码是否有异常,finally代码块总会执行
13
下面关于Java的引用,说法正确的是?
A. | 引用实际上就是指针 | |||
---|---|---|---|---|
B. | 引用本身是Primitive | |||
C. | 引用就是对象本身 | |||
D. | 一个对象只能被一个引用所指引 |
解析
考点:Java引用
Java中没有指针,到处都是引用(除了基本类型),在Java中,变量有两种类型,一种是原始类型,一种是引用类型;
引用数据型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址;
强引用--弱引用--软引用--幻想引用(虚引用)
primitive type: 基本类型,eg:int、double等
wrapped type:包装类型,int—>Integer,double—>Decimal等
基本类型跟就是不可实例化的,可以直接初始化、赋值、运算。不可调用方法,不可放入容器;
包装类型就是把基本类型变成一个类实例,一定要new才产生,可以调用方法,可以放入容器;
14
在一个线程中Sleep(1000)方法,将使得该线程在多少时间后获得对CPU的控制(假设睡眠过程中不会有其他事件唤醒该线程)?
A. | 正好1000毫秒 | |||
---|---|---|---|---|
B. | 1000毫秒不到 | |||
C. | =>1000毫秒 | |||
D. | 不一定 |
解析
考点:线程sleep方法
调用sleep(1000)方法后,线程会在1000毫秒之后,才可以重新运行,此时为就绪状态,需要进入到队列中,等待CPU资源的释放,然后才可以获取执行权限,所以需要最少1000毫秒才可以获取CPU的控制权限
15
下面哪个不是JAVA关键字?
A. | integer | |||
---|---|---|---|---|
B. | double | |||
C. | float | |||
D. | default |
解析
考点:Java关键字
Java中存在关键字为:Integer
16
下列关于构造方法的叙述中,错误的是?
A. | Java语言规定构造方法名与类名必须相同 | |||
---|---|---|---|---|
B. | Java语言规定构造方法没有返回值,但不用vold声明 | |||
C. | Java语言规定构造方法不可以重载 | |||
D. | Java语言规定构造方法只能通过new自动调用 |
解析
考点:构造方法
构造方法可以被重载、类的多态性体现
17
Java语言中下面哪个可以用作正确的变量名称?
A. | 3D | |||
---|---|---|---|---|
B. | name | |||
C. | extends | |||
D. | implements |
解析
考点:Java命名规范
1:名称只能由字母、数字、下划线、$符号组成
2:不能以数字开头
3:名称不能使用JAVA中的关键字
4:坚决不允许出现中文及拼音命名
18
在JavaScript中如何验证一个数据是否是数字?
A. | 如果用Integer.parseInt(value)有误就不是数字 | |||
---|---|---|---|---|
B. | int I = value 若报错就不是数字 | |||
C. | 没有方法验证 | |||
D. | 利用isNaN(value) 返回的boolean进行判断 |
解析
考点:JS验证API的使用
isNaN(value)判断value是否为数字
19
如下代码,如何使成员变量m被函数fun()直接访问?
class Test{
private int m;
public static void fun() {
//TODO
}
}
A. | 将private int m改为 protected int m | |||
---|---|---|---|---|
B. | 将private int m改为 static int m | |||
C. | 将private int m改为 public int m | |||
D. | 将private int m改为int m |
解析
考点:static静态变量使用
静态方法中必须使用类变量中的静态变量
20
下面哪些是Thread类的方法?
A. | start() | |||
---|---|---|---|---|
B. | run() | |||
C. | exit() | |||
D. | getPriority() |
解析
考点:Thread类
看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)