一只菜鸟对面试时候会被问到java基础的个人总结:
1.Q:首先java的数据类型分为:基本数据类型(int,short,byte,char,long,double,float,boolean 八种),对象类型(又称为引用类型),【各种变种(String是不是基本数据类型)】
2.Q:final,finally,finalize()的区别:
A:final修饰变量-->引用地址不会变,修饰方法,方法不可变,修饰类,类不可继承。finally是用在try catch finally模块,表示最终会被执行的。finalize()方法用在GC里面,一般是GC之前所做的事情可以写在finalize()方法里面,比如关闭数据库连接
3.Q:变量以及作用范围:
A:static修饰的静态变量。new 出来的成员变量,{}里面的局部变量。静态变量的生命周期由类决定,成员变量随着new出来的对象而初始化,随着对象被回收而结束的变量。局部变量只存在{}内
4.Q:==与equal的区别(equal重写)
A:==比较的地址,equal比较的是值
默认的Object下的equal方法是
boolean equals(Object o){
return this==o;
}
5:Q:&与&&区别
A:两周都表示and的逻辑,符号两边的表达式都true时候 整个表达式返回true,否则就返回false
&&具有短路的功能,如果第一个&&左边的表达式为false的话就不执行后面那个表达式
&有位运算的功能,如果&两边不是逻辑表达式的话就是用位运算。
6. Q:Switch(expr1) 里面能用什么类型
A:里面只能用int或者能转换成int的char,byte,short 或者枚举常量
7.Q:四个作用域(public protect default private)的作用范围
作用域 | 当前类 | 同一包 | 子类 | 其他包 |
---|---|---|---|---|
public | 有 | 有 | 有 | 有 |
protect | 有 | 有 | 有 | 无 |
default | 有 | 有 | 无 | 无 |
private | 有 | 无 | 无 | 无 |
8.Q:java中实现多太的机制”
A:靠的是父类或者接口定义的变量可以指向子类或者具体实现类的实例对象,从而可以动态的调用方法。
9.Q:抽象类与接口的区别:
A:
1、抽象类可以有构造方法,接口不可以
2、抽象类可以有普通成员变量,接口不可以
3、抽象类中可以包含非抽象方法,接口不可以
4、抽象类可以包含静态方法,接口不可以
5、一个类只能继承一个抽象类,但是可以实现多个接口
10.Q Sting 可以被继承吗?
A: 不能 final类不能被继承。不过重写String类 然后加载自己的String类
11、Q:error与exception有什么区别?
A:Error表示应用程序不能处理的问题,比如内存溢出等错误。exception代表应用程序可以应付的错误,一般是设计上的问题。
12、Q:sleep()与wait()有什么区别
sleep是Thread的方法,sleep是执行的线程主动让出CPU去执行其他线程,在指定的时间过后就继续执行这个线程,sleep并不释放线程锁
wait是object类的方法,是暂时让出同步锁,让其他线程可以得到这个线程锁,最后需要notif唤醒
13.Q:同步与异步的区别
A:同步是指数据在线程间共享,例如写的数据以后可能会被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了。那么这些数据就是共享数据就必须使用同步。
当程序在对象上调用了一个需要很长时间来执行的方法时候,并且希望不让程序在等方法的返回时候,就应该使用异步编程,很多时候使用异步编程更有效率。
14、Q 线程与进程的区别
A:线程为轻量级进程,一个或者多个线程组成一个进程。
进程为程序的一种动态形式,是CPU,内存占用的基本单位,而线程是不能独立占有这些资源的。
进程之间通信比较困难,而线程共享一个内存空间,所以通信比较easy。
15:Q:线程类的实现方式
A:继承Thread类,实现Runnable接口。
16、 Q:反射的机制
A:为了动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求设计的。
17、Q:Collection
A:List : 有序排列,允许重复 Set: 无序排列,不允许重复 Map:以键值对的方式存值
18:、Q:ArrayList 与 Vector的区别
ArraryList的增长方式 原有容量*1.5+1,初始容量是10 线程不安全
Vector 增长方式是 *2 线程安全 使用插入或者删除会导致数组需要重新创建影响效率,尽量不使用,一般编程中都使用ArraryList