方块糖的工坊
方块糖的工坊

JAVA面试题—亲身经验

  • abstract class和interface的区别
1.interface需要实现,用implements,而abstract class需要继承,用extends
2.一个类可以实现多个接口,但只能实现一个抽象类
3.interface强调特定功能的实现,而abstract class强调所属关系。
4.尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
  • 写一个singleton(单例模式)
  1. public class Singleton {
  2. private Singleton(){}
  3. //注意这是private 只供内部调用
  4. private static Singleton instance = new Singleton();
  5. //这里提供了一个供外部访问本class的静态方法,可以直接访问
  6. public static Singleton getInstance() {
  7. return instance;
  8. }
  9. }
  • 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名的学生的个人信息
  1. select 学号,班级,姓名,学科,成绩
  2. from 学生
  3. where 学号 in
  4. ( select top 10 学号
  5. from 学生
  6. where 学科=‘语文’
  7. order by 成绩 desc )
  8. and 学号 not in
  9. ( select top 10 学号
  10. from 学生
  11. where 学科=‘数学’
  12. order by 成绩 asc )
mysql不支持top,用select * from table_name limit 起始位置,显示行数;
  • doGet()hedoPost()区别
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
  • json知识
字符串: {“name”:“jobs”}
空:  {“object”:null}
JSON对象:
  1. {
  2. “starcraft”: {
  3. “INC”: “Blizzard”,
  4. “price”: 60
  5. }
  6. }
JSON对象数组:
  1. {
  2. "array": [
  3. {
  4. "name": "jobs"
  5. },
  6. {
  7. "name": "bill",
  8. "age": 60
  9. },
  10. {
  11. "product": "war3",
  12. "type": "game",
  13. "popular": true,
  14. "price": 60
  15. }
  16. ]
  17. }
  • 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(输出)为后缀的是字符流。
来自为知笔记(Wiz)

方块糖的工坊

JAVA面试题—亲身经验
abstract class和interface的区别 1.interface需要实现,用implements,而abstract class需要继承,用extends 2.一个类可以实现多个接口,但只能实现一个抽象类 3.interface强调特定功能…
扫描二维码继续阅读
2015-06-27