- 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只增加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(输出)为后缀的是字符流。
 - Collection和Collections的区别?
 
Collection是集合类(List,Set)的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
 
 - 利用递归方法求5!
public class Test {public static void main(String args[]) {int x = 5;int rs = Fac(x);System.out.println("" + x + "! = " + rs);}public static long Fac(int x) { /*阶乘算法*/if (x > 1)return (x * Fac(x - 1)); /*递归*/elsereturn 1;}}
- JSP四种范围是什么,有什么区别
 
page、     request、    session、   application
 
 当前页面    一次请求       一次会话       服务器打开
 
 - JSP有哪些内置对象?作用分别是什么?
 
| request | 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。 2、response对象 响应客户请求的有关信息 | 
| response | 响应客户请求的有关信息 | 
| session | 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个 WebApplication开始,直到客户端与服务器断开连接为止 | 
| out | 它是JspWriter类的实例,是向客户端输出内容常用的对象 | 
| page | 它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例 | 
| application | 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭 | 
| exception | 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象 | 
| pageContext | 它提供了对JSP页面内所有的对象及名字空间的访问 | 
| config | 它是在一个Servlet初始化时,JSP引擎向它传递信息用的 | 
- 数据库知识
 
学生成绩表(stuscore):
 
 姓名 : name  课程 : subject 分数 : score  学号 : stuid
 
 张三     数学     89     1
 张三     语文     80     1
 张三     英语     70     1
 李四     数学     90     2
 李四     语文     70     2
 李四     英语     80     2
 1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
 答案:select name,sum(score) as allscore from stuscore group by name order by allscore
 2.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
 答案:select distinct t1.stuid,t1.name,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid
 3.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
 答案:select  t1.stuid,t1.name,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore
 4.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)
 答案:select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore where subject = t1.subject order by score desc) order by t1.subject
 2.有如下表:
 日期(rstime)   结果(result)
 2005-05-09       胜
 2005-05-09       胜
 2005-05-09       负
 2005-05-09       负
 2005-05-10       胜
 2005-05-10       负
 2005-05-10       负 
 如果要生成下列结果,该如何写sql语句?
 日期                胜      负
 2005-05-09     2       2
 2005-05-10     1       2 
 select rstime,sum(case result when '胜' then 1 else 0 end)as 胜,sum(case result when '负' then 1 else 0 end)as 负 from result group by rstime;
为了方便阅读,查询此表后的显示结果如下(及格分数为60分)?
 
 select *,case when score>=60 then 'pass' else 'fail' end as 'mark' from temp;