Java开发人员面试宝典.doc
《Java开发人员面试宝典.doc》由会员分享,可在线阅读,更多相关《Java开发人员面试宝典.doc(95页珍藏版)》请在三一办公上搜索。
1、开发人员面试宝典(Java版)八维云计算学院20一五-3-24目录1基础篇61.1Java介绍61.2J2SE、J2EE、J2ME三者区别61.3JDK、JRE、JVM区别61.4JDK常用的包71.5Java中的基本数据类型71.6Java中switch接受的几种数据类型81.7String、StringBuffer、StringBuilder区别81.8Char型变量能不能存储一个汉字?81.9=和equals方法的区别81.10静态变量和实例变量的区别91.11Integer和int的区别91.12Math.round()的使用91.一三构造器是否可以被重写91.14抽象类和接口的区别9
2、1.一五新建对象有几种方式101.16&和&的区别101.17面向对象什么特性111.一八面向对象中多态特性111.19List,set,Collection,Collections111.20线程和进程的区别111.21Jvm内存结构121.22内存泄露和内存溢出121.23解析xml文件的几种技术121.24Dom4j与sax之间的对比一三1.25java Exception体系结构一三1.26抽象类和接口的区别141.27修饰符的作用141.28HashMap和Hashtable的区别141.29字节流和字符流的区别一五1.30运行异常和检查异常有何不同一五1.31error和excep
3、tion的区别一五1.32举例最常用的五个运行时异常一五1.33Sleep和wait的区别一五1.34多线程有几种实现方式161.35启动一个线程用run还是start161.36List和Map的区别161.37说出ArrayList,Vector, LinkedList的存储性能和特性171.38Java序列化171.39堆和栈的区别171.40什么时候用断言171.41Java中会有内存泄露吗一八1.42简述反射的作用一八2Servlet篇192.1Servlet概述192.2九大隐式对象202.3page和pageContext的区别202.4GET和POST的区别202.5转发与重定
4、向的区别202.6四大作用域介绍212.7session和cookie的区别212.8request和session的区别212.9报错状态码222.10常见协议及默认的端口号222.11对过滤器的理解223脚本篇233.1onready和onload的区别233.2对jQuery简单介绍233.3XML和Json的特点233.4对JQuery中Ajax介绍243.5对Ajax介绍244框架篇254.1Struts1运行原理254.2Struts2运行原理254.3Hibernate运行原理264.4Spring运行原理274.5SpringMVC运行原理274.6Struts1和Struts
5、2区别284.7SpringMVC、Struts1和Struts2区别294.8Struts2在的type类型294.9Struts2的常用标签294.10Hibernate可get和load的区别304.11Hibernate、Ibatis、JDBC区别304.12Hibernate与JDBC区别304.一三Hibernate两大配置文件304.14Hibernate中的事务处理314.一五Hibernate三种状态及如何转换314.16Hibernate中的五大核心接口314.17Hibernate缓存概述324.一八SSH概述324.19分页步骤334.20如何防止表单重复提交334.2
6、1通过Struts2来解决表单重复提交334.22拦截器335数据库篇355.1JDBC连接数据库步骤355.2数据库连接池355.3jdbc分段批量提交的时候出现异常怎么处理?355.4JDBC批量处理数据365.5Oracle分页语句365.6MySQL分页语句365.7Oracle基本数据类型375.8id、rowid、rownum的区别375.9主键和唯一索引的区别?375.10Preparedstatement和statement的区别385.11数据库三范氏385.12视图概述385.一三存储过程概述385.14索引概述395.一五Ibatis批量406业务场景篇426.1Spri
7、ng的概述426.2事务概述436.3权限概述446.4OSCache业务场景446.5线程概述446.6Ajax请求Session超时问题456.7Java线程池概述466.8OSCache概述476.9OSCache+autocomplete+单例业务场景476.10缓存概述476.11实现页面静态化业务场景486.12servlet线程安全描述486.一三(jbpm4)工作流引擎描述:496.14JPBM业务场景506.一五Ant描述506.16FreeMarker描述516.17webService描述516.一八oracle索引概述526.19oracle存储过程536.20Juni
8、t 业务场景536.21Apache+Tomcat 实现负载均衡及seesion复制536.22Ant业务场景546.23maven业务场景556.24bugfree的操作步骤556.25Axis2 的配置566.26spring定时器566.27Ext概述576.28lucene的概述576.29线程池作用586.30jbpm是如何和spring进行整合586.31Tomcat优化586.32memcached的介绍607优化篇607.1代码优化607.2业务优化617.3sql优化617.4防sql注入637.5数据库中常用术语657.6深入java虚拟机以及大数据651 基础篇1.1 J
9、ava介绍Java是面向对象的,跨平台的,它通过java虚拟机来进行跨平台操作,它可以进行自动垃圾回收的(c语言是通过人工进行垃圾回收)。java还会进行自动分配内存。(c语言是通过指定进行分配内存的),只需要new一个对象,这个对象占用了多少空间,不需要我们来管,java虚拟机负责管这些,用完之后也不需要我们来释放,java虚拟机会自动释放。1.2 J2SE、J2EE、J2ME三者区别Java SE = Java Standard Edition=j2se = java 标准版Java EE = Java Enterprise Edition=j2ee= java 企业版Java ME =
10、Java Mobile Edition=j2me = java 移动版三者特点:J2SE主要用于桌面程序(swing),控制台开发(main程序)。J2EE企业级开发(JSP,EJB,Spring MVC,Struts,hibernate,ibatis等),用于企业级软件开发,网络开发,web开发。J2ME嵌入式开发(手机,小家电,PDA)。苹果的ios,黑莓。三者之间的关系:Java SE(Java Platform,Standard Edition,Java标准版)就是基于JDK和JRE的。Java SE为Java EE提供了基础。Java EE除了基于我们这个所谓的Java SE外,还新
11、加了企业应用所需的类库。1.3 JDK、JRE、JVM区别Jdk【Java Development ToolKit】就是java开发工具箱, JDK是整个JAVA的核心里边包含了jre,它除了包含jre之外还包含了一些javac的工具类,把java源文件编译成class文件,java文件是用来运行这个程序的,除此之外,里边还包含了java源生的API,java.lang.integer在rt的jar包里边【可以在项目中看到】,通过rt这个jar包来调用我们的这些io流写入写出等。JDK有以下三种版本:J2SE,standard edition,标准版,是我们通常用的一个版本J2EE,enter
12、psise edtion,企业版,使用这种JDK开发J2EE应用程序J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序Jre【Java Runtime Enviromental】是java运行时环境,那么所谓的java运行时环境,就是为了保证java程序能够运行时,所必备的一基础环境,也就是它只是保证java程序运行的,不能用来开发,而jdk才是用来开发的,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具编译器、调试器和其它工具。Jre里边包含jvm。Jvm:【Java Virtual Mechi
13、nal】因为jre是java运行时环境,java运行靠什么运行,而底层就是依赖于jvm,即java虚拟机,java虚拟机用来加载类文件,java中之所以有跨平台的作用,就是因为我们的jvm。三者关系:J2se是基于jdk和jre,JDK是整个JAVA的核心里边包含了jre,Jre里边包含jvm。1.4 JDK常用的包java.lang: 这个是系统的基础类,比如String、Math、Integer、System和Thread,提供常用功能。java.io: 这里面是所有输入输出有关的类,比如文件操作等。: 这里面是与网络有关的类,比如URL,URLConnection等。java.util
14、: 这个是系统辅助类,特别是集合类Collection,List,Map等。java.sql: 这个是数据库操作的类,Connection,Statememt,ResultSet等。1.5 Java中的基本数据类型数据类型大小byte(字节)1(8位)shot(短整型)2(16位)int(整型)4(32位)long(长整型)8(32位)float(浮点型)4(32位)double(双精度)8(64位)char(字符型)2(16位)boolean(布尔型)1位附加:String是基本数据类型吗?(String不是基本数据类型)String的长度是多少,有限制?(长度受内存大小的影响)1.6 Ja
15、va中switch接受的几种数据类型short, int, byte,charenum(JDK1.5以后支持)String(JDK1.7以后支持)1.7 String、StringBuffer、StringBuilder区别String字符串常量不可变使用字符串拼接时是不同的2个空间。StringBuffer字符串变量可变线程安全,字符串拼接直接在字符串后追加。StringBuilder字符串变量可变非线程安全,字符串拼接直接在字符串后追加。1、 StringBuilder执行效率高于StringBuffer高于String。2、 String是一个常量,是不可变的,所以对于每一次+=赋值都会
16、创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer是线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于StringBuffer。3、 对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder。4、 另一种说法,JDK1.6做了优化,通过String声明的字符串在进行用“+”进行拼接时,底层调用的是StringBuffer,所以性能上基本和后两者没有什么区别。1.8 Cha
17、r型变量能不能存储一个汉字?char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。1.9 =和equals方法的区别“=”如果前后比较的是对象,则比较的是对象的地址,如果前后是数字,则比较的数值。“equals”如果前后是对象,比较的是对象的地址。如果比较的对象重写了equals方法,则有可能比较的是“值”。像八个基本数据类型的封装类、String、File、Date都比较的是值。1.10 静态变量和实例变量的区别在语法定义上的区别:静态变量前要加static关键字,而实例变
18、量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。1.11 Integer和int的区别int是java提供的8种原始数据类型之一,意思整型,占用4字节。Integer是java为int提供的封装类,是引用数据类型。int的默认值为0,而Integer的默认值为null,即I
19、nteger可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。 1.12 Math.round()的使用Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor
20、(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。1.13 构造器是否可以被重写构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。1.14 抽象类和接口的区别含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类
21、中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。下面比较一下两者的语法区别:1. 抽象类可以有构造方法,接口中不能有构造方法。2. 抽象类中可以有普通成员变量,接口中没有普通成员变量3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的
22、访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。7. 一个类可以实现多个接口,但只能继承一个抽象类。下面接着再说说两者在应用上的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约;而抽象类在代码实现方面发挥作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 开发人员 面试 宝典
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1877160.html