您的位置:首页 > 职场人生

JAVA---基础面试题总结(1)

2017-11-02 23:02 417 查看
1.面向对象的特征:

(1)封装:将成员变量私有化,不让外界访问,提供公共的set和get方法;

构造方法:1)类名和方法名相同.2)没有void.3)构造方法可以重载

(2)继承:可以让某个对象获得另外一个类型对象的属性和方法

(3)多态:一个类实例的相同方法在不同情况下的不同表现形式.

多态的前提条件:1)有继承关系.2)存在方法重写.3)父类引用指向子类对象.

2.final,finally和finalize的区别:

(1)final:修饰类:该类不可以被继承;修饰成员变量:该变量是自定义常量;修饰成员方法:该方法不能被重写

局部内部类访问局部变量,该变量被final修饰.

(2)finalize:和gc有关,垃圾回收器,回收不用的对象,底层重写类object类的finalize()方法.

(3)finally:释放资源,IO流使用频繁,该语句中的代码一定会被执行,除非jvm退出.

3.String,StringBuffer和StringBuilder的区别?

String:不可变的字符串序列,一旦被赋值,其值不可以改变,String类耗费内存.

Stringbuffer:可变的字符序列:构造字符串缓冲区,线程安全,同步,但是效率低.

Stringbuilder:可变的字符序列:线程不安全,不同步,效率高.

4.集合和数组的区别?

1)长度:数组:长度固定;集合:长度可变

2)存储类型的区别:

数组:既可以存储基本数据类型,也可以存储引用数据类型.

集合:只可以存储引用数据类型.

3)存储数据类型元素的区别:

数组只可以存储同一种数据类型.

集合可以存储多种类型的数据.

5.IO流:

字节流:FileInputStream;BufferedInputStream;DataInputStream;ObjectInputStream;

字符流:BufferedReader;InputSrtreanReader---->FileReader;   输出流类似

6.多线程:

(1)线程安全的检测标准:

看当前执行环境是否是多线程的.

看当前程序是否有共享数据.

是否有多条语句对共享数据进行操作.

----解决方案:

同步机制:Synchronized:同步机制对多条语句进行共享数据的包装

锁定操作:lock接口---ReentrantLock:执行效率低:等待唤醒机制:生产者消费者模式

(2)多线程的实现方式

1)自定义类继承Thread类:

重写run方法--创建该类对象---启动线程:start()方法

2)自定义类实现runnable接口

实现run()方法--创建该类对象,统一资源--创建Thread类对象,将上步的对象作为参数传递

3)创建线程池对象--自定义类实现Callable接口,实现call方法--结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: