博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 面试题
阅读量:6968 次
发布时间:2019-06-27

本文共 2770 字,大约阅读时间需要 9 分钟。

1.run start

public static void main(String args[]) {        Thread t = new Thread() {            public void run() {                pong();            }        };        t.run();        System.out.print("ping");    }    static void pong() {        System.out.print("pong");    }

A pingpong        B pongping       C pingpong和pongping都有可能       D 都不输出

答案:B

解析:这里考的是Thread类中start()和run()方法的区别了。start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。

 

 

2.

. 下面哪个流类属于面向字符的输入流(  )

A  BufferedWriter           B  FileInputStream          C  ObjectInputStream          D  InputStreamReader

 答案:D

 解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。

面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。
面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。

总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;

          以Reader(输入)/Writer(输出)为后缀的是字符流。

扩展:Java流类图结构,一目了然,解决大部分选择题:

 

 

3.不通过构造函数也能创建对象吗()

A 是     B 否

答案:A

解析:Java创建对象的几种方式(重要):

(1) 用new语句创建对象,这是最常见的创建对象的方法。

(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

(1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。

 

4.

17. 下面哪些是对称加密算法()

A DES   B AES   C DSA   D RSA

答案:AB

解析:常用的对称加密算法有:DES、3DES、RC2、RC4、AES

常用的非对称加密算法有:RSA、DSA、ECC

使用单向散列函数的加密算法:MD5、SHA

 

5.

class HelloA {    public HelloA() {        System.out.println("HelloA");    }        { System.out.println("I'm A class"); }        static { System.out.println("static A"); }}public class HelloB extends HelloA {    public HelloB() {        System.out.println("HelloB");    }        { System.out.println("I'm B class"); }        static { System.out.println("static B"); }        public static void main(String[] args) {      new HelloB();    }}

答案:

static Astatic BI'm A classHelloAI'm B classHelloB

解析:说实话我觉得这题很好,考查静态语句块、构造语句块(就是只有大括号的那块)以及构造函数的执行顺序。

对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。

下面稍微修改下上面的代码,以便更清晰的说明情况:

class HelloA {    public HelloA() {        System.out.println("HelloA");    }        { System.out.println("I'm A class"); }        static { System.out.println("static A"); }}public class HelloB extends HelloA {    public HelloB() {        System.out.println("HelloB");    }        { System.out.println("I'm B class"); }        static { System.out.println("static B"); }        public static void main(String[] args) {        System.out.println("-------main start-------");        new HelloB();        new HelloB();        System.out.println("-------main end-------");    }}

此时输出结果为:

static Astatic B-------main start-------I'm A classHelloAI'm B classHelloBI'm A classHelloAI'm B classHelloB-------main end-------

转载地址:http://qpisl.baihongyu.com/

你可能感兴趣的文章
VCD分解
查看>>
CGLib 动态代理
查看>>
理解 Linux 的处理器负载均值(翻译)
查看>>
LNMP(php-fpm的pool,慢执行日志,定义open_bashdir,php-fpm进程管理
查看>>
Bulk
查看>>
Springboot2.0 升级(Gradle工程)
查看>>
Android性能优化
查看>>
mysql limit 百万数据分页
查看>>
ibatisnet使用心得
查看>>
Python3.x 操作Mongodb
查看>>
Django import / export实现数据库导入导出
查看>>
自由软件基金会对使用 Secure Boot 提出安全警告
查看>>
LINUX 配置mysql不区分大小写
查看>>
中文显示不全?docker+ firefox
查看>>
Guided Project: Predicting board game reviews
查看>>
数理统计6--泊淞分布
查看>>
Messaging using C#相关博客
查看>>
Zookeeper集群搭建(简单)(29)
查看>>
初识Comet技术
查看>>
在项目中引入jena的maven报错NoClassDefFoundError:org/w3c/dom/ElementTraversal
查看>>