- abstract class和interface的区别
1.interface需要实现,用implements,而abstract class需要继承,用extends
2.一个类可以实现多个接口,但只能实现一个抽象类
3.interface强调特定功能的实现,而abstract class强调所属关系。
4.尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
- 写一个singleton(单例模式)
- public class Singleton {
- private Singleton(){}
- //注意这是private 只供内部调用
- private static Singleton instance = new Singleton();
- //这里提供了一个供外部访问本class的静态方法,可以直接访问
- public static Singleton getInstance() {
- return instance;
- }
- }
- Vector与ArrayList区别 :
Vector是线程安全的,从而性能没有ArrayList好
Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
- Hashtable & HashMap 区别:
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
- ArrayList & LinkedList区别:
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别。
- 什么是DI机制?
依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色
需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中
创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者
因此也称为依赖注入。
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。
设置注入的优点:直观,自然
构造注入的优点:可以在构造器中决定依赖关系的顺序。
- Servlet生命周期分为三个阶段:
1,初始化阶段 调用init()方法
2,响应客户请求阶段 调用service()方法
3,终止阶段 调用destroy()方法
- 数据库知识
desc是降序排列,ASC是升序排列.
比如:有学生信息表{学号,班级,姓名,学科,成绩},请写出每班语文成绩在前10名并且数学成绩不在倒数10名的学生的个人信息
- select 学号,班级,姓名,学科,成绩
- from 学生
- where 学号 in
- ( select top 10 学号
- from 学生
- where 学科=‘语文’
- order by 成绩 desc )
- and 学号 not in
- ( select top 10 学号
- from 学生
- where 学科=‘数学’
- order by 成绩 asc )
mysql不支持top,用select * from table_name limit 起始位置,显示行数;
- doGet()hedoPost()区别
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
- json知识
字符串: {“name”:“jobs”}
空: {“object”:null}
JSON对象:
- {
- “starcraft”: {
- “INC”: “Blizzard”,
- “price”: 60
- }
- }
JSON对象数组:
{
"array": [
{
"name": "jobs"
},
{
"name": "bill",
"age": 60
},
{
"product": "war3",
"type": "game",
"popular": true,
"price": 60
}
]
}
- final finally finalize区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
- 线程的四种状态
1.新状态 2.可执行状态 3.死亡状态 4. 阻塞状态
- 下面哪些是Thread类的方法():
A start() B run() C exit() D getPriority()
答案:ABD
- 下列说法正确的有():
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.一个class只能定义一个constructor
答案:C
- 关于new String
String []a = new String[10];
则:a[0]~a[9] = null
a.length = 10
如果是int []a = new int[10];
则:a[0]~a[9] = 0
a.length = 10
- 下列说法正确的是()
A LinkedList继承自List
B AbstractSet继承自Set
C HashSet继承自AbstractSet
D WeakMap继承自HashMap
答案:AC
- 在java中怎样实现多线程?
1.继承 Thread 类,覆盖方法 run(),extends
2.实现 Runnable 接口,implements
- 下面哪个流类属于面向字符的输入流( )
A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader
答案:D
总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流。
发表回复