面试题 | 《Java面试题集》 -- 第二套

说明:以下面试题中,选项背景为这个颜色的,则代表为正确答案,后续会继续总结其它面试题系列,持续做题关注。

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)

原文发布于微信公众号 - 码神联盟(lkchatspace)

原文发表时间:2018-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏携程技术中心

干货 | Kotlin超棒的语言特性

1824
来自专栏noteless

[二十四]JavaIO之PrintWriter

他与PrintStream的逻辑上功能目的是相同的--他们都想做同一件事情--更便捷的格式化打印输出

4532
来自专栏小樱的经验随笔

Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861C Did yo

C. Did you mean... time limit per test:1 second memory limit per test:256 megaby...

2755
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(List、Tuple、Dict专栏)

Python3 与 C# 基础语法对比(基础知识场):https://www.cnblogs.com/dotnetcrazy/p/9102030.html

24710
来自专栏haifeiWu与他朋友们的专栏

System方法总结

最近在研究Android源码,突然看到有很多和System有关,什么System.arraycopy、System.nanoTime(),所以专门花时间看了一下...

1052
来自专栏向治洪

Kotlin 是如何避免空指针问题的

在谈Kotlin的优势的时候,大家都会想到空指针安全这一点,那么Kotlin又是如何避免这些问题的呢?下面从Kotlin的一些语法规则上给出介绍。 可空类型 默...

2887
来自专栏一个会写诗的程序员的博客

第6章 扩展函数与属性第6章 扩展函数与属性

在使用Java的时候,我们经常使用诸如StringUtil, DateUtil等等一堆工具类,代码写起来也比较冗长。举个例子,获取一个字符串的第一个字符值、最后...

742
来自专栏服务端技术杂谈

Java编码规范

命名 类名使用UpperCamelCase风格。 领域模型相关命名:DO / DTO / VO / DAO等。 方法名,参数名,成员变量,局部变量都统一使用lo...

3334
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(List、Tuple、Dict专栏)

Python3 与 C# 基础语法对比(基础知识场):https://www.cnblogs.com/dotnetcrazy/p/9102030.html

943
来自专栏Ldpe2G的个人博客

Scala typeclass 设计模式

本文的写作的灵感主要是看了这个视频 : Tutorial: Typeclasses in Scala with Dan Rosen

1626

扫码关注云+社区

领取腾讯云代金券