一、什么是对象序列化,为何要使用?
html
所谓对象序列化,就是把一个对象以二级制的方式保存到硬盘上,方便远程调用。java
二、值传递与引用传递的区别?android
值传递就是把一个对象的值传给一个新的变量,可是系统会给这个新的变量开辟一个新的内存空间。不改变原有的值。算法
引用传递就是把一个对象在堆保存的数据传递给一个变量,此时新的变量与原有的变量对应同一个内存存储空间,当新的变量修改对象属性是,内存中的数据也会被修改。编程
三、接口与抽象类的区别?api
1:接口里面不能够实现方法体,抽象类能够实现方法体数组
2:接口能够多个接口,抽象类不能够安全
3:接口须要子类实现,抽象类要须要子类单一继承网络
4:接口中只能有公有的方法和属性并且必须赋初值,抽象类中随意多线程
5:接口中不能有静态方法,但属性能够有final,抽象中方法能够有静态方法,属性也能够
四、谈谈继承,为何要使用继承?
继承就是找出几个类的共同部分,提取出来做为父类。而子类只须要继承父类,就能够共享父类的方法,使用继承可以减小重复代码。
五、方法重载的好处(overload)
重载就是在同一个类中能够定义多个相同的方法,可是方法的参数类型和参数的个数以及顺序要不一样。
重载的好处是可以让咱们很快掌握该方法的功能,咱们只要记住该方法就能很快理解该方法的参数和参数的做用。
六、项目中印象最深的部分
反射技术的强大之处,
一、当加入新的功能是,不会修改原有代码(面向接口编程)
二、当咱们写一个类能够重复的运用于其余项目。(代码的服用性)
三、当写一个新类的时候要考虑到他的课扩展性。(灵活性)
七、谈谈集合框架
集合框架分为三部分,第一部分是Collection接口,第二部分是Map接口、第三部分是collections帮助类
collection接口下分为set接口,list接口,往下是他们的实现类。
实现类再分为两部分,第一部分是set的实现类TreeSet、HashSet,第二部分是list的实现类ArrayList、LinkedList、Vector
八、再说Map接口,map接口下面有treeMap、HashMap、HashTable三个实现类。
最后说collections帮助类,collections提供了一系列静态方法实现对各类集合的搜索、排序,线程安全化等操做
九、什么是异常?描述下异常处理
异常就是在执行程序的时候发生的错误,会使程序终止
异常处理:
一、使用try-catch捕获异常
二、使用throw-throws抛出异常
十、多线程的优先级?为何要分优先级?
由于有一些线程很重要,因此才划分优先级
Trowable是全部错误的超类,它下面有两个子类;error和Execption
error表明系统级别的错误能捕捉,但不能处理。Exception表明异常主要自于程序,能够捕获也能处理
Exception有分为两类:编译器异常、运行期异常。
区别他是运行期异常仍是编译期异常就看它是否是RuntimeException的子类,若是是的话,即是运行期异常。
十一、说一下iterator
iterator是一个接口,用于实现对容器里面的元素遍历操做。
任何遍历均可以使用iterator。
十二、什么是泛型,泛型的好处?
泛型就是本身指定的一种类型,之后存放的东西就只能有这一种类型。泛型的好处是在编译的时候检查类型安全,而且全部的强制类型转换都是自动和隐式的,提升代码的重用率。
1三、说一下你在项目中遇到的异常,并说出何时发生,怎么解决的。
空指针异常最多见。根据异常的提示找到相应的类进行处理,发生的缘由有不少,好比变量没有初始化,没有赋值,对android来讲,activity,service等没有注册,
根据错误提示找到出错的api进行相应的处理
1四、java为何是跨平台的?
对于不一样的系统有不一样的虚拟机,虚拟机提供了硬件平台规范。用java开发的程序被编译成java虚拟机指令组成的字节代码,虚拟机将这些指令翻译成对应OS的指令(jvm屏蔽了底层操做系统的硬件)。
1五、private变量能不能被其它类访问?若是能,怎么访问?
能,经过反射。详情请见:http://my.oschina.net/carbenson/blog/496931
1六、演示java项目如何打包成jar文件
http://blog.csdn.net/cyb_23/article/details/40341857
java的环境变量怎么配置?为何要配置?
1:在个人电脑->属性->高级->环境变量->系统变量
新建变量名JAVAHOME,设置java的JDK目录(不能有中文)
2:选择系统变量PATH,前面添加%JAVAHOME%\bin;
3:运行dos,输入java -version;若是能看到版本号,说明安装成功。
使系统能够找到程序javac.exe的运行路径!方便在dos窗口操做
1七、static和非static修饰的变量那个生命周期长?
static更长,由于它一直在内存
什么是线程同步?
线程同步就是说同一时间访问某个资源的时候,资源只能被一个线程所使用。
1八、什么是封装?封装的好处是什么?
封装就是把一个已经实现好的功能的代码,放在一个方法中,实现了隐藏。
好处是提升代码的重用性,安全性,只须要调用该方法无论具体实现。
1九、线程中wait和sleep的区别?
1:wait是Object定义的方法,而sleep是线程Thread定义的方法。
2:sleep是让当前线程睡眠,因此能够放在任何位置,而wait是让当前线程放弃资源的使用权,,必须在同步块或同步方法里面调用。
3:sleep不释放对象锁,wait会释放对象同步锁
4:sleep是等待一段时间后自动醒来,而wait必须让其余线程唤醒。
20、Class和class的区别
Class是类的名称。class是java保留字
2一、awt和swing的区别
awt是重量级的组件,swing是轻量级的组件。
eg:在swing组件中当咱们调用repaint()方法时,会很快调用paint()。而在重量级组件中,会先调用updata()方法,而后在update()方法里面在调用paint()方法,在重量级组件中实现了双缓冲,咱们就要重写update()方法,在重写的时候记得实现刷新屏幕操做。
2二、为何实现一个接口必须实现接口里面全部的方法?
由于这是sun公司的规定。若是不实现它里面全部的方法那就不叫接口。
2三、线程和进程的区别
进程是一个小的应用程序,须要分配内存空间。
线程是进程中的一个顺序控制流,也能够这样理解,线程是进程的实体。
2四、java基础技能中强调程序代码的读写能力,若是一个类很长,你会怎么读写?
1:类分解,每一个类只作他该作的事情。
2:方法分解。
2五、抽象方法能不能是private和static修饰符?
能
2六、使用接口的好处?
1:使用接口有很好的扩展性。
2:接口能够多继承接口。
3:隐藏实现
2七、什么是反射?
所谓反射就是在编译的时候不知道加载什么,只能等到运行的时候才知道执行什么。
2八、建立对象的方法有哪些?
一、用new语句建立对象,这是最多见的建立对象的方法。
二、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
三、调用对象的clone()方法
四、运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法
2九、transient是什么意思
transient表明没法到达某一对象所抛出的异常。但也不表明没有该对象
30、在设计类的时候,你是怎么使用静态变量和成员变量的?
若是须要一直存在于内存当中,就选择静态变量不然就选择成员变量。
3一、定义抽象方法的意义何在?
1:为了减小重复代码
2:抽象方法有很好的扩展性
3二、集合的遍历方式
forEach()、for()、interator
for、while是同样的,形式上不一样,
forEach(),Iterator也是同样的,形式上不一样,性能的话,确定是迭代器好一些。迭代器能直接访问集合内部元素。并且有得集合没有索引,根本没法使用for,只能用迭代器。
3三、java安全性体如今什么地方?
1:java提供一个用于网络/分布式的计算环境。所以,java强调安全性,如确保无病毒、小应用程序运行安全控制等等
2:java的验证技术是以公钥(public-key)加密算法为基础,并且从环境变量、类加载器、文件系统、网络资源和名字空间等方面实施安全策略。
3四、谈谈线程所拥有的几种状态
就绪:线程分配了CPU之外的所有资源,等待得到CPU调度
执行:线程得到CPU,正在执行
阻塞:线程因为发生I/O或者其余的操做致使没法继续执行,就放弃处理机,转入线程就绪队列
挂起:因为终端请求,操做系统的要求等缘由,致使挂起。
3五、面向对象的特征有哪些?
封装、继承、多态(每一个java码农必须熟记于心)
3六、解析一下在项目里面你怎么去实现多线程的。
通常是实现Runnable接口,重写run();new Thread(new MyThread()).start();
(假如MyThread已经实现了Runnable接口)
3七、启动线程是能够调用run()方法吗?
能够,由于run方法里面执行的代码就是所要执行的方法。
3八、java程序的执行过程是怎样的?
java源程序 编译.class字节码 -> 类加载器 -> 字节码校验器 -> 解析执行
3九、java程序的引用数据类型有哪些?
对象、集合、数组、接口
40、变量按做用域分类分为几种?
分两种:全局变量和局部变量
4一、集合里面的接口有哪些?
Collection接口、set接口、list接口、map接口、iterator接口
4二、int与Integer的区别
int是原始数据类型,integer是int的包封装类,他提供转换类型的不少方法。
4三、checked异常与unchecked异常的区别是什么?
区别是看他们是否是runtime的子类,若是是runtime的子类那么就是运行期异常,不然是编译期异常
4四、final,finally和finalize的区别
final用于声明属性,方法和类,分别表示属性不可更改,方法不可重写,类不可继承
finally是异常处理语句结构的一部分,它表示老是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用回收对象的此方法,能够覆盖此方法提供垃圾收集是的其余资源回收,好比关闭文件等。
4五、重写与重载的区别?参数同样,返回类型不同,是重载吗?
重载:方法名相同,参数类型不一样,参数个数不相同,参数顺序不一样
重写:方法名相同,参数类型相同,返回的类型相同。
返回类型不相同的不是重载,重载是根据参数类判断的。
4六、写一个数组的建立
int [] i = new int[5];
int [] i = {1,2,3,4};
4七、何时用输入流,何时用输出流?
读写数据的时候使用输入流,写入数据的时候用输出流,相对内存来讲。
4八、双缓冲如何实现?为何要双缓冲?
如今内存中分配一个和咱们动画窗口同样大的空间(内存中的空间咱们是看不到的),而后利用getGraphics_r()方法去得到空间并将它所有一次性的显示到咱们的屏幕上,这样在咱们的动画窗口上面的显示效果会很是流畅,避免了闪烁的效果。
4九、举出经常使用的list类,哪一种状况用哪一个
ArrayList、LinkedList、Vector
ArrayList是连续的控件,遍历速度快,插入和删除就比较慢。
LinkedList是一个双向链表存放数据,若是删除和添加元素比较多的话,要效率高的就是用LinkedList。
Vector和ArrayList的功能同样,惟一的区别是vector是线程安全的,而ArrayList是线程不安全的。
50、map、list、与set的区别?里面经常使用的类有哪些?
map是以键值对的方式存放数据。
list里面的数据能够重复,有顺序。
set里面的数据不能够重复,没有顺序。
list的经常使用类有arraylist
set的经常使用类有treeset
map的经常使用类时hashmap
5一、何时用继承Thread?何时实现Runnable接口
当一个类中没有继承的时候能够继承Thread。
若是类中已经继承了别的类,只能建立一个类并实现Runnable接口,在初始化的时候必须new Thread(new MyThread());
5二、对象如何进行比较,为什么大多数状况下不能使用“==”?
若是对象不是String的话,==与equals并无区别。由于String他是重写了object的方法,因此才有了equals比较内容,==比较地址。
5三、静态变量与成员变量的区别
静态变量在对象加载以前初始化,而成员变量是在编译期间初始化。
静态变量能够直接经过类点名的方式进行访问,而成员变量不行。
5四、修饰符有哪几种?他们之间的区别?
前提:在一个项目里
public 能够在全部包中的全部类随意进行访问
private 只能被当前的类访问
protected 在同一包中,或子类能够进行访问
默认:同包下能被访问。
5五、对象序列化怎么实现?
实现Serializable接口。
5六、讲一下多态的概念。
多态就是在相同的行为不一样的体现方式。(好比:爱好,每一个人都要有本身的爱好,可是爱好都不一样)
5七、子类中怎么调用父类的方法
经过super.方法
5八、this、super的用法与区别
this是访问当前类的属性和方法
super是访问父类的属性和方法
5九、什么是构造方法?构造方法的做用?
构造方法是在调用的时候被new出来的,每一个类都有构造方法。
做用:为对象分配内存、初始化类变量、初始化属性、返回引用。
60、error和exception的区别是什么?
error是系统级别的错误,能够捕获,但不能处理。
exception是程序错误,能够捕获也能够进行处理。
6一、输入输出流分几种?分别在何时使用?
输入流:InputStream、Read
输出流:OutputStream、Writer
读取字节,使用InputStream
以字符读取使用Read
输出字节,使用OutputStream
以字符输出使用Writer
6二、异常捕获的流程?若是异常发生是怎样的流程
try{
容易发生异常的代码
}catch(错误的类型){
打印错误信息
}finally{
无论有没有异常都要执行
}
6三、String是基本的数据类型吗?基本数据类型有哪些?
不是,基本的数据类型有:
byte 8bit
short 16bit
int 32bit
long 64bit
float 32bit
double 64bit
char 16bit
boolean
6四、Collection与Collections的区别?
Collection是一个接口
Collections是一个帮助类(主要对查找、排序)
6五、HashMap等是实现Collection接口的吗?
不是,HashMap是实现map接口的。
6六、若是try快有多个异常,在catch中怎么处理?
直接在catch中写一个Exception异常,由于Exception是全部异常的超类
6七、如何抛出异常?
使用throw明确要抛出异常的代码,在方法中使用throws抛出异常的类型
throw关键字一般用在方法体中
eg:if(y<0)
{ throw new MyException("除数不能为负数");}
throws关键字一般被应用在声明的地方,用来指定可能抛出的异常。若是发生异常,就会将异常抛出给指定的对象。
6八、GUI相应一个事件的代码如何写?
肯定事件源:肯定监听器,监听器须要实现监听器接口,重写其中的方法:完成事件源和监听器的注册
6九、JVM是什么?它的做用是什么?它和java运行环境有什么区别
JVM就是java虚拟机,具备一个指令集并使用不一样的存储区域。
它负责执行指令,还要管理数据、内存和寄存器。java解析器负责将字节代码翻译成特定机器的机器代码
没有java虚拟机就更不要说运行环境了。
70、集合和数组的区别。
1:集合中能够存放不一样类型的元素,而数组中只能放同一种类型的数据
2:集合的长度能够随元素的多少自动增加,数组不行
3:集合只能放置对象,数组能够是对象,也能够是基本数据类型。
4:集合提供很好的算法,数组提供的算法有限
7一、String能否被继承?
不能够,String类被final修饰
7二、基本数据类型和引用数据类型的区别是什么?
基本数据类型表明元素的实际值,也就是说基本数据类型是存在栈中的。引用数据类型是元素所表明的内存中所指向的一个地址,在栈中只是保存对象的地址。而对象的具体内容是保存在堆中
7三、byte的取值范围?
-128~~+127
7四、java中采用什么字符集?char类型能不能放入一个中文字?
Unicode编码。能
7五、java语言的特色是什么?
简单、健壮、安全、分布式、跨平台、解释性、多线程、面向对象、垃圾回收。
7六、String的几个经常使用方法
http://www.cnblogs.com/crazyac/articles/2012791.html
7七、接口能够定义常量吗?
能够定义,必须加上public 且初始化完毕
7八、断言有什么做用?
调试程序
7九、列举出switch()括号中能接受的全部数据类型。
int 、double、float、long
80、如何获取String或数组的长度
String使用length(),数组使用length属性
8一、JDK与JRE分别是什么?
jdk:开发环境
jre:运行环境