- 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)); /*递归*/
else
return 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;