Android面试大全(java篇)
Android面试大全(四大组件篇)
Android面试大全(性能优化篇)
Android面试大全(异常处理篇)
Android面试大全(开源框架篇)
Android面试大全(网络篇)
Android面试大全(java篇)
java基础
- java三大特性
封装、继承、多态 - 多态实现原理
- 基本数据类型及占用的字节数
8种
类型 | 包装类 | 所占位数(二进制) | 所占字节数 |
---|---|---|---|
byte(字节) | Byte | 8 | 1 |
short(短整型) | Short | 16 | 2 |
int(整型) | Integer | 32 | 4 |
long(长整型) | Long | 64 | 8 |
float(浮点型) | Float | 32 | 4 |
double(双精度) | Double | 64 | 8 |
char(字符型) | Character | 16 | 2 |
boolean(布尔型) | Boolean | 1 |
-
switch支持什么类型
jdk1.6以及之前版本是byte、char、short、int、枚举 五种
jdk1.7时,又增加了String,所以相对于JDK1.7而言就是六种 -
String StringBuffer StringBuilder说明及区别
-
字符串是否可改变
String:String中的字符串是固定的,即常量
StringBuffer StringBuilde都可改变字符串的长度等,通过.append()方法进行字符串的拼接 -
线程安全方面:
StringBuilder:线程非安全的
StringBuffer:线程安全的 -
执行速度比较
StringBuilder>StringBuffer>String(少量数据其实区别不大) -
使用经验:
1.操作少量的数据用 :String
2.单线程操作字符串缓冲区 下操作大量数据 :StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 :StringBuffer(线程安全) -
Java集合继承子类继承关系
-
Collection
- List
- LinkedList
- ArrayList
- Vector
- Stack
- List
-
Map
- HashTable
- HashMap
- WeakHashMap
-
进程与线程区别
一个程序至少有一个进程,一个进程至少有一个线程
线程是比进程更小的划分单位,多线程程序的并发性高
进程在执行的过程中拥有独立的内存单元,而线程是多个线程共享内存单元,从而提高程序运行效率
两者执行过程有所区别。每个独立的线程有一个程序运行的入口、顺序执行序列以及程序的出口,但是线程是不能独立运行的,必须依附在应用程序中,有应用程序提供多个线程执行控制。
线程是进程的一个实体,是CPU调度和分派的基本单元,是比进程更小的能独立运行的基本单位,线程自己不用有系统资源,只拥有在运行中必不可少的资源,它可与同属一个进程的其他线程共享进程所拥有的 全部资源
一个线程可以创建和撤销另一个线程;统一进程中线程可以多个并发进行 -
final finally finalize都是干什么用的?有什么区别
-
final
final 是java中的关键字。如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
final变量的初始化:
①:在定义的时候初始化。
②:可以在初始化块中初始化,不可以在静态初始化块中初始化。
③:静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。
④:还可以在类的构造器中初始化,但是静态final变量不可以。
-
final
-
finally
java中异常处理时,提供 finally 块来执行操作。在开发者使用finally的情况下,如果程序抛出一个异常,那么相匹配的 catch 模块会执行,然后程序就会进入 finally 块中,如果程序正常执行(未发生异常),在执行完程序后(try{}部分)同样会进入finally中,即无论程序是否异常,finally始终都会进入(开发者可以在此模块中做相应的操作,do everything what you want......)。有一种特殊情况可能不会进入,当程序还没执行完毕,强制结束程序进程。(这个是整个程序被终止了,和本身程序的执行顺序并没有什么关系) -
finalize
方法名,java允许使用 finalize() 方法在垃圾收集器中将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 -
java的四种引用?
强引用、弱引用、软引用、虚引用 -
内部类、静态内部类、匿名内部类、局部内部类
-
==与equals的区别
-
Java反射机制
-
Java注解相关
-
Java泛型
-
Java枚举
-
Java操作文件的基本API,RdomAccessFile
-
访问网络的基本API. Socket
-
Java异常有几种?什么是运行时异常,有什么特点?
-
接口与抽象类的区别
-
什么导致线程阻塞
-
ArrayMap对比HashMap
-
HashMap的实现原理
-
Java排序算法
-
接口的意义
规范、扩展、回调 -
抽象类的意义
为其子类提供一个公共的类型,封装子类中重复的内容,定义抽象方法。子类可有又不同的实现方法,但是定义是一致的 -
内部类的作用
-
内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立
-
在单个外围类中,可以让多个内部类以不同的方式实现同一个接口或者继承同一个类
-
创建内部类对象的时刻并不依赖于外围内对象的创建
-
内部类没有“is-a”关系,是一个独立的实体
-
内部类提供了更好的封装,除了该外围类,其他类都不能访问
-
父类的静态方法能否被子类重写
不能
子类继承父类后,用相同的静态方法和非静态方法,这是非静态方法会覆盖父类中的非静态方法(即方法的重写),父类的该静态方法被隐藏(若对象是父类则调用该隐藏的方法),子类可继承父类的静态与非静态方法
正在持续更新中……