Java题库

对原理的掌握,决定你以后发展的高度

  • Java的数据结构你用过哪些?Map与Set的本质区别是什么?

  • Spring整合ORM框架时,事务管理用哪个类?是Spring控制事务的提交还是ORM框架控制?同一事务中执行两个更新操作,它的工作原理是怎样的?

  • Http协议你了解吗?文件上传时,进度条的设计原理是什么?

  • 查询一个字段值有重复的表,要去除重复项,SQL语句怎么写?

  • Java中的Annotation的工作原理是什么?
    *分层架构中,Dao层的作用是什么?如果不要DAO层,能不能实现有Dao层时的优点?

  • HibernateDaoSupport,ActionSupport等类中所指的Support,是不是一种设计模式?若是,那说说你对这种设计模式的理解?

  • 对数据库的存储过程熟悉不?对CSS熟悉不?

  • 说说Struts2的工作原理?

  • Hibernate框架的设计有什么不好的地方?

  • 你是怎么样实现分页显示的?具体原理怎么样?Hibernate的setMaxResults和setFirstResult内部是怎么实现分布查询的?

  • Struts,Hibernate,Spring等框架,你哪个最熟悉?有没有读过它的源代码?你用过Spring框架的那些功能?

  • 面向对象的特征有哪些方面?
    抽象,就是将具有一致属性和行为的对象抽象成一个类,只强调本质的属性和行为,先不考虑具体的细节。
    继承,子类自动共享父类的属性和行为。单重继承是指子类只继承一个父类的属性和行为,多重继承是子类可以继承多个类的属性和行为。
    多态,相同的函数作用在不同的对象上会获得不同的结果。
    封装,只给用户看用户需要看的东西。

  • int 和 Integer 有什么区别
    Java 提供两种不同的类型:原始类型(或内置类型)和引用类型。Java为每个原始类型提供了封装类。
    Int是java的原始数据类型,Integer是java为int提供的封装类。原始类型 封装类boolean Booleanchar Characterbyte Byteshort Shortint Integerlong Longfloat Floatdouble Double
    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题等。另外,对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

  • String 和StringBuffer的区别
    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串。
    String类提供了数值不可改变的字符串。而StringBuffer类提供的字符串可以进行修改,常使用StringBuffers来动态构造字符数据。

  • 说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。
    Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。
    LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

  • Collection 和 Collections的区别。   Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

  • HashMap和Hashtable的区别。
    HashMap是Map接口的实现,允许键(key)和值(value)为null,使用containsKey()和containsValue()来判断是否含有某数据。
    Hashtable继承Dictionary类,不允许值为null,使用contains()判断是否含有某数据。
    最大不同时HashMap不支持线程安全,因此,多线程访问时必须提供外同步方法,使用方法为Map map = Collections.synchronizedMap(new HashMap());)
    Hashtable支持线程安全,多线程访问不需提供外同步方法。

  • final, finally, finalize的区别。   final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器GC执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

  • sleep() 和 wait() 有什么区别?
    sleep()是Thread类里的方法,调用并不释放锁,即占有资源等待。一般给sleep()指定时间,时间一到,线程处于可运行状态。可以在任意地方使用sleep(),但使用时需要捕捉InterpretedException。
    wait()是Object类里的方法,调用释放锁,即释放资源后进入被释放资源的等待池等待被notify。一般不给wait()指定时间,因为时间一到,线程也只是转入到就绪状态。wait()必须和notify()/notifyAll()在同步控制方法中一起使用。

  • Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    Overload是重载,是同一个类中的多态的体现。相同名字的函数改变参数个数或者参数类型可以实现重载。
    Override是重写,是父类和子类之间的多态的体现。若子类中定义的函数与父类中某函数具有相同的名称和参数,则该方法被重写。
    Overload重载的方法可以改变返回值的类型。10.error和exception有什么区别?
    error表示恢复很困难的严重问题,如内存溢出。程序并不能处理这样的情况。
    exception指程序中的问题。在程序中,可以throw,也可以被捕捉进行处理。

  • abstract class和interface有什么区别?
    interface中有:
    变量(public、static、final),因为是static的,所以不通过对象访问;因为是final的,所以声明时需要有value(指定的或默认的)且该值不能修改。
    函数(public、static、abstract),不能有函数体实现,也就是函数声明后面没有{},直接跟;。
    abstract class中有:
    变量
    抽象函数,即没有方法体的函数
    一般函数
    interface体现的是“like a”,而abstract class体现的是“is a”,可以根据这个含义在实际应用中灵活使用接口或者抽象类。
    interface是实现(implement),abstract class是继承(extends)。
    interface可以继承多个interface,并且一个类可以实现多个interface,而一个类只能继承一个abstract class。
    abstract class可以实现interface。12.内存分配的几种方式?
    栈(Heap),由系统申请和释放,存放函数的参数和局部变量。
    堆(Heap),由程序员申请。
    全局变量区,由系统申请和释放存放全局变量或者静态变量。
    常量区,存放常量字符串。
    代码区,存放代码。

  • heap和stack有什么区别?
    栈(Heap),由系统申请和释放,存放函数的参数和局部变量。栈的容量是有限的。存取效率高。
    堆(Heap),由程序员申请。堆的容量和虚拟内容有关。

  • GC是什么? 为什么要有GC?GC有什么优点?
      GC是垃圾收集器的意思(Gabage Collection)。对象一旦被创建,GC就会监控它的内存地址,大小等使用情况,采用有向图的方法标记对象为可达或者不可达,当对象为不可达时,GC就会回收它。
    也可以使用System.gc()主动进行垃圾回收,但是JVM回收垃圾的时间并不能得到确定。
    Java中的垃圾回收机制可以使程序员不去关注内存回收的情况,专注于自己的程序。

  • 给我一个你最常见到的runtime exception。
    IndexOutOfBoundException越界
    NumberFormatException是Sring类型转换成数字类型型时出错。16.List, Set, Map是否继承自Collection接口? List,Set是,Map不是
    List元素是有序可重复的,实现有ArrayList,Vector。
    Set元素是无序不可重复的,实现有HashSet,TreeSet。

  • equals()和==的区别?
    ==是判断对象在内存中的地址是否相等。
    equals()是Object类里的方法,其实现使用==,所以,是判断对象在内存中地址是否相等。但是,在一些特殊类(如Integer,String)中,该方法被重写,可以判断内容是否相同。

  • 是否可以继承String类? String类是final类故不可以继承。

  • swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

  • try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。

  • 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 需要看这两个对象是什么。如果是String、Integer,会出现这样的情况,因为此时equals()是比较两个对象的内容。对于 一般的对象,equals()比较的是内存中的地址,所以,如果地址相同,则hash code也会相同。

  • 编程题: 写一个Singleton出来。 Singleton模式保证该类只有一个对象,并且易于访问。


    复制代码

    1 public class Singleton{ 2 3 private static Singleton instance;//private保证其他类不能直接访问Singleton的对象,static保证可以直接使用Singleton的名字,而非再在类外定义Singleton的对象。 4 5 private Singleton() 6 7 { 8 9 //do something10 11 } 12 13 public static Singleton getInstance()//使Singleton的对象易于访问14 15 {16 17 if(instance==null) instance=new Singleton();18 19 return instance;20 } 22 23 }


    复制代码
  • Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所 有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

  • 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify

  • 进程、线程的基本概念、基本状态以及状态之间的关系
    进程是计算机中资源分配的基本单位,是程序的一次运行。
    线程是计算机中调度的基本单位,每个程序至少都有一个线程。
    基本状态是:就绪、运行、阻塞或挂起、结束。
    运行start(),处于就绪状态,运行run()方法,处于运行状态,wait()是被挂起,dead()表示结束。

  • 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
    条件操作只能操作布尔型,逻辑操作不仅可以操作布尔型,而且可以操作数值型
    条件操作会产生短路(确定这个语句的结果后,后面的部分就不再执行),逻辑操作不会产生短路。

  • .j2ee常用的设计模式?说明工厂模式。
    Factory(工厂模式)
    Singleton(单例模式)
    Adapter(适配器模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

  • 排序都有哪几种方法?
    插入排序:直接插入排序、希尔排序
    交换排序:冒泡排序、快速排序
    选择排序:简单选择排序、堆排序
    二路归并排序
    技术排序

  • JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
    Java中每个异常都是一个对象,是Throwable类或其他子类的实例。
    throws用于函数声明的最后,表明该函数可能会发生的异常
    throw语句明确的抛出异常
    try语句块里是可能发生异常的程序,紧跟在try后面应该是catch语句块来捕捉“异常”的类型
    finally是不管语句块发生什么异常,总会执行的语句

  • 一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
    可以。但是必须只有一个public的类的名字与文件名相同。

  • java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被“挂起”的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。举例

  • java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。

  • java中会存在内存泄漏吗,请简单描述。
    Java中内存泄露是指能够可达,但是不会再被使用的对象。而C/C++中内存泄露是指找不到,无法被回收的对象。

  • .是否可以从一个static方法内部发出对非static方法的调用? 不可以。这个在程序挑错里可能会出现。
    例如:


    复制代码

    1 public class Something {2 public static void main(String[] args) {3 Something s = new Something();4 System.out.println("s.doSomething() returns " + doSomething());5 }6 public String doSomething() {7 return "Do something ...";8 }9 }


    复制代码

答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成"System.out.println("s.doSomething() returns " + s.doSomething());"。同理,static method不能访问non-static instant variable。

  • 说出一些常用的类,包,接口,请各举5个
    常用的类:String、Integer、Math、FileReader、FileWriter
    常用的包:java.util、java.io、java.sql、java.lang、java.awt
    常用的接口:Runnable、List、Set、Map、Document
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,513评论 18 399
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,202评论 0 2
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,143评论 11 349
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,477评论 0 3
  • 又梦君泪两行 红尘一寂为谁叹 本是心无波澜...
    徽州金勇阅读 266评论 0 1