《最新java面试宝典版.docx》由会员分享,可在线阅读,更多相关《最新java面试宝典版.docx(376页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJava面试宝典2015版Java面试宝典2015版JAVA面试、笔试题(2015版) 欲想成功,必须用功!目录一、HTML&CSS部分91、HTML中定义表格的宽度用80px和80%的区别是什么?92、CSS样式定义优先级顺序是?103、div和span的区别?104、CSS选择器包括?105、用css3语法中,如何实现一个矩形框的圆角效果和50%红色透明效果?,请
2、写出关键脚本106、Div与Table的区别117、行级标签转块级标签,块级标签转行级标签11二、Java基础部分111、java中有哪些基本类型?112、java为什么能够跨平台运行?123、String是基本数据类型吗?我可不可以写个类继承于String?124、谈谈&和&的区别?125、Switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么?126、short s1=1;s1=s1+1;有什么错?short s1 = 1;s1+=1 有什么错?127、char为什么能存贮一个汉字?138、用最效率的办法算出2乘以8等于几?139、final修饰变量时,
3、该变量是对象时,对象的值可不可以改变?1310、静态变量和实例变量的区别?1311、面向对象的基本特征是什么?1312、作用域public,private,protected,以及不写时的区别?1413、Overload和Override的区别。1414、构造器可不可以被重载或重写?1415、Java中有没有多继承?1516、抽象类和接口的区别?1517、java中实现多态的机制是什么?1518、int和integer的区别?1519、String和StringBuffer的区别?StringBuffer和StringBuilder区别?1620、String s=new String(“xy
4、z”);创建了几个String Object?1621、数组中有没有length()方法,String中有没有length()方法?1622、try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后?1623、final, finally, finalize的区别。1724、=和equals的区别?1725、error和exception有什么区别?1726、heap和stack有什么区别。1827、GC是什么? 为什么要有GC?1828、什么是内部类?分为哪几种?1829、为什么需要内部类?1830、内部类可以
5、引用它的包含类的成员吗?有没有什么限制?1931、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?2032、使用java命令查看java虚拟机版本2033、数字转字符有多少种方式,分别是什么2034、Java创建对象有几种方式2035、写一个反序列化实例20三、JavaScript/JQuery/Ajax部分221、请写一段Javascript程序,对以下程序的用户输入日期的有效性进行判断,如果格式错误就提示用户。在程序的恰当位置注明怎样调用你写的程序。日期格式为:年年年年月月日日
6、小时,例如2003010812。222、Java和Javascript区别在哪?233、列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。244、谈谈你的JS的理解?255、ajax的优点?266、简述一下ajax调试代码查找错误的方法?267、简述ajax中Js脚本缓存问题该如何解决?268、Ajax应用和传统的web应用有何不同?269、javascript的作用?2710、为什么要有jquery?2711、jQuery选择器有多少种?2712、jquery选择器有哪些优势?2713、你是如何使用jquery中的ajax的?2814、jquery中的$.get
7、和$.post请求区别?2815、jquery中如何操作样式的?2816、如何设置和获取HTML和文本的值?2817、Jquery能做些什么?2818、在ajax中data主要有哪几种?2919、jQuery中ajax由几部分组成?29四、jsp/servlet部分291、Tomcat的优化经验292、Tomcat根目录下有哪些文件293、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储。304、解释一下什么是servlet;什么是servlet容器;305、说一说Servlet的生命周期,执行过程?316、实例化servlet有几种方式317、HTTP请求的GET与POST方式的区
8、别318、请写一个Servlet的基本架构。329、forward 和redirect的区别?3210、servlet中怎么定义forward 和redirect3311、过滤器有哪些作用?3312、JSP的常用指令?3313、JSP和Servlet中的请求转发分别如何实现?3314、JSP乱码如何解决?3415、session 和 application的区别?3416、jsp有哪些内置对象?作用分别是什么?3417、Jsp有哪些动作?作用分别是什么?3518、JSP中动态INCLUDE与静态INCLUDE的区别?3519、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?3
9、520、页面传递对象的方法?3621、Cookied和session区别?36五、数据库部分361、触发器的作用?362、什么是存储过程?用什么来调用?373、存储过程的优缺点?374、存储过程与函数的区别375、索引的作用?和它的优点缺点是什么?386、什么样的字段适合建索引387、索引类型有哪些?388、什么是事务?什么是锁?399、什么叫视图?游标是什么?3910、视图的优缺点3911、列举几种表连接方式,有什么区别?4012、主键和外键的区别?4013、在数据库中查询语句速度很慢,如何优化?4014、数据库三范式是什么?4115、union和union all有什么不同?4116、Va
10、rchar2和varchar有什么区别?4217、Oracle和Mysql的区别?4218、Oracle语句有多少类型4319、oracle分页语句4320、从数据库中随机取50条4421、order by与group by的区别4422、commit在哪里会运用4423、行转列、列换行怎么转4424、什么是PL/SQL?4425、序列的作用4526、表和视图的关系4527、oracle基本数据类型4528、truncate与 delete区别4529、oracle获取系统时间4630、oracle怎么去除去重4631、现在有表:4632、现有表:4733、怎样把这样一个表(表名:tmp_ta
11、ble_201307)4834、数据库中有一张表ismg_icp_flow,结构如下49六、Java高级部分501、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?502、sleep() 和 wait() 有什么区别?503、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?514、线程的基本概念515、什么是多线程516、程序、进程、线程之间的关系517、创建线程有几种方式,分别是什么?528、线程的生命周期539、线程currentThread()与interrupt()方法
12、的使用5310、线程状态5311、什么是java序列化,如何实现java序列化?5412、编写一个程序,将d:java目录下的所有.java文件复制到d:jad目录下,并将原来文件的扩展名从.java改为.jad。5413、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?5714、字节流与字符流的区别5715、怎么判断指定路径是否为目录5916、怎么获取指定路径下的全部文件5917、Java怎么读取文件和写入文件6018、java怎么复制文件6219、用JDBC如何调用存储过程6320、JDBC中的PreparedStatement相比State
13、ment的好处6521、写一个用jdbc连接实例。6622、ArrayList和Vector的区别?6723、List、Set和Map的区别?6824、Collection 和 Collections的区别。6925、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用=还是equals()? 它们有何区别?6926、HashMap与HashTable的区别6927、Java中有多少种数据结构,分别是什么?7028、Arraylist 和linklist 的区别7029、List遍历方式有多少种7030、Map怎么遍历7131、怎么获取Map所有的key,所有的value7132
14、、获取Class的实例有几种方式7133、怎么获取类中所有的方法,所有属性71七、框架部分711、谈谈你对Struts2的理解。712、谈谈你对Hibernate的理解。723、你对Spring的理解。734、Struts2优缺点735、说说struts1与struts2的区别。756、struts的核心组件有哪些?767、Strus2的执行过程768、为什么要使用struts2?769、openSession和getCurrentSession7710、拦截器的作用?拦截器和过滤器的区别?7711、struts.xml中result的type有哪些类型?7812、一般情况下,关系数据模型与对
15、象模型之间有哪些匹配关系?7813、hibernate 数据的三个状态7814、Hibernate中load和get的区别?7915、Hibernate的工作原理?7916、hibernate优缺点?7917、Hibernate是如何延迟加载的?8018、如果优化Hibernate?8019、什么是ORM?8120、Hibernate的主键生成策略?8121、Hibernate的级联操作8122、Hibernate有哪5个核心接口?8223、什么是重量级?什么是轻量级?8224、谈谈Spring的IOC和DI8225、什么是AOP?8426、Spring的通知类型有哪些?8427、什么是MVC
16、?8428、hibernate查询方式有多少种?8529、spring中Bean的scope8530、SSH对应MVC的哪些层8631、spring注入方式有几种86八、XML部分861、xml有哪些解析技术?区别是什么?862、你在项目中用到了xml技术的哪些方面?如何实现的?873、编程用JAVA解析XML的方式.874、XML文档定义有几种形式?它们之间有何本质区别?905、XML和HTML的区别?906、XML文件和普通文件相比有哪些优点?90九、设计模式部分91请写出你所知道的设计模式?91十、算法部分931、说明生活中遇到的二叉树,用java实现二叉树932、第1个人10,第2个比
17、第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?1003、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。1014、金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)(一千零一拾一元整)输出。1035、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:1046、写一个Singleton出来。1097、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1128、简单的说个递归1139、什么是平衡二叉树11310、怎么判断二叉树是否有环
18、114一、 HTML&CSS部分1、HTML中定义表格的宽度用80px和80%的区别是什么?PX标识像素,%标识整个父标签宽度百分比2、CSS样式定义优先级顺序是?内联样式最高优先权,然后是内部样式,然后才是外部样式3、div和span的区别?DIV 和 SPAN 元素最大的特点是默认都没有对元素内的对象进行任何格式化渲染。主要用于应用样式表(共同点)。两者最明显的区别在于DIV是块元素,而SPAN是行内元素(也译作内嵌元素)。 详解:1.所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行,测试一下下面的代码你会有更形象的理解:测试紧跟前面的测试显示这里会另起一行显示 4、CSS选
19、择器包括?1)类别选择器 用“.”来标识2)标签选择器 用HTML标签来标识3)ID选择器 用“#”号来标识4)通配符选择器 用“*”号来标识5、用css3语法中,如何实现一个矩形框的圆角效果和50%红色透明效果?,请写出关键脚本divwidth:200px;height:200px; border-radius: 30px;opacity: 0.5;/* 火狐 */* filter:alpha(opacity=50); IE */ background-color:red; 6、Div与Table的区别1)div大大缩减页面代码,提高页面浏览速度,table代码量繁多,页面浏览效率慢。2)d
20、iv结构清晰,可读性非常强,也容易被搜索引擎搜索到,优化了搜索引擎,Table结构复杂,可读性差。3)div缩短改版时间。只要简单的修改几个CSS文件就可以改变很多页面。Table要想改变的话,需要一个页面一个页面的去修改。4)div表现和内容相分离,非常符合w3c标准。5)table制作效率高于div6)table浏览器兼容性高于div,我们常用的IE6.0,IE7.0火狐Firefox浏览器对div css设置上非常挑剔。7、行级标签转块级标签,块级标签转行级标签行级转块级:display:block块级转行级:float:left二、Java基础部分1、java中有哪些基本类型?byte
21、、short、int、long、float、double、char、boolean2、java为什么能够跨平台运行?因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。3、String是基本数据类型吗?我可不可以写个类继承于String?不是,Strng是引用类型;String是final的类,是不可以被继承的。4、谈谈&和&的区别?&和&都可以用作逻辑与的运算符
22、,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作.。5、Switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么?switch里面的条件必须是能隐式的转化成为Int的故long和String不行,byte可以;使用Switch时候还应注意它的穿透,即每个case后要跟break;6、short s1=1;s1
23、=s1+1;有什么错?short s1 = 1;s1+=1 有什么错?对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。 7、char为什么能存贮一个汉字?char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了全世界所有的字体。8、用最效率的办法算出2乘以8等于几?23 位移运算是最底层的运算
24、,他直接操作的是二进制,故效率最快。9、final修饰变量时,该变量是对象时,对象的值可不可以改变?final修饰的变量指的是引用不可变,对象的值是可以改变的。10、静态变量和实例变量的区别?静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问;而实例变量必须依存于某一实例,只能通过对象才能访问到它。11、面向对象的基本特征是什么?1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2)继承:子类拥有父类一切非私有的属
25、性和方法。3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。4)多态性:同一种事物的不同种表现形式。12、作用域public,private,protected,以及不写时的区别? 作用域 当前类同包 子孙类 其他 public protected default private 不写时默认为default。13、Overload和Override的区别。(Overload)重载:发生在同一个类之中,方法名相同、参数列表不同,与返回值无关、与final
26、无关、与修饰符无关、与异常无关。(Override)重写:发生在子类和父类之间,方法名相同、参数列表相同、返回值相同、不能是final的方法、重写的方法不能有比父类方法更为严格的修饰符权限、重写的方法所抛出的异常不能比父类的更大。如果父类私有的方法,子类拥有方法签名相同的方法,子类不属于重写父类的方法,该方法属于子类的新方法。14、构造器可不可以被重载或重写?构造器不能被继承,故不能被重写、但可以被重载。15、Java中有没有多继承?java中没有多继承,但是可以多实现,即一个类实现多个接口。虽然没有多继承,但是java中接口可以近似的实现多继承,那就是接口;接口和接口之间可以进行多继承。16
27、、抽象类和接口的区别?1)抽象类继承与object接口不继承object.2)抽象类有构造器,接口中没有构造器。3)抽象类中可以有普通成员变量和常量,接口中只能有常量,而且只能是public static final 不写默认。4)抽象类中可以有抽象方法,也可以由普通的方法,接口中只能有抽象的方法而且修饰符只能是public abstract 不写默认。5)抽象类中可以有final的方法,接口中不能有final的方法。6)抽象类只能是单继承,多实现,接口是可以多继承其他接口,但是不能实现接口,和不能继承其他类。7)抽象类中可以有静态的方法,接口中不可以。17、java中实现多态的机制是什么?重
28、写、重载、父类的声明指向子类的对象。18、int和integer的区别?int是java的基本数据类型,integer是1.4版本后提供的基本类型包装类,当两者作为成员变量时,初始值分别为;int是0;integer是null;其中integer提供了一些对整数操作的方法,还定义了integer型数值的最值,其他基本类型也有对应的包装类,基本类型包装类的出现,使得java完全面向对象.19、String和StringBuffer的区别?StringBuffer和StringBuilder区别?String是不可变的,对String类的任何改变都会返回一个新的String对象。StringBuf
29、fer是可变的,对StringBuffer中的内容修改都是当前这个对象。String重写了equals方法和hashCode方法,StringBuffer没有重写equals方法。String是final的类。StringBuffer不是。String创建的字符串是在常量池中,创建的变量初始化一次,如果再对该字符串改变会产生新的字符串地址值,StringBuffer是在堆中创建对象,当对字符串改变时不会产生新的字符串地址值,如果对字符串进行频繁修改的话建议使用StringBuffer,以节省内存。StringBuffer和StringBuilder,StringBuffer是线程安全的,Str
30、ingBulider是线程不安全的。当不考虑并发问题时候,请使用StringBulider。20、String s=new String(“xyz”);创建了几个String Object?两个对象,一个是xyx,一个是指向xyx的引用对象s。21、数组中有没有length()方法,String中有没有length()方法?数组中没有length()方法,但是有length属性,String中有length()方法22、try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后? 这道题很有争议,我是通过debug
31、模式分为两种情况进行测试的. 1)finally中没有return时候:会先执行try里面的,return会执行但是没有真正的return此时去执行了finally里面的,然后再返回来执行return.2)finally中有return时候(其实这种情况不符合编程规范,会报黄线警告):会先执行try里面的,return会执行但是没有真正的return此时去执行了finally里面的,然后执行finally里面的return,直接返回。23、final, finally, finalize的区别。 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局
32、部变量,局部变量必须定义成final类型。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用24、=和equals的区别?=比较的是两个变量的内容和在内存中的地址值是否全部相等,如果要比较两个基本数据类型那必须用=equals如果没有重写,则和=的意义一样,如果重写了,则会会按照重写的内容进行比较,javaBean规定当重写equals时候必须重写hashCode,如果不重写会出现对象相同但是hashCode不同
33、,这样会出现问题,eg:HashSet存储元素时候是按照hashCode,如果重写equals不重写hashCode会导致同一个对象,存储了两次。25、error和exception有什么区别?error表示恢复不是不可能但是很困难的情况下的一种严重问题,例如程序书写错误,虚拟机错误等,exception是一种设计和实现问题,如果程序运行正常,从不会发生的情况。error是可以避免的,exception是不可避免的。26、heap和stack有什么区别。java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的
34、局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。 27、GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
35、28、什么是内部类?分为哪几种?内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类。29、为什么需要内部类?典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是:每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类
36、都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。30、内部类可以引用它的包含类的成员吗?有没有什么限制? 完全可以。如果不是静态内部类,那没有什么限制! 如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:class Outerstatic int x;static class Innervoid test()syso(x);答题时,也要能察言观色,揣摩提问者
37、的心思,显然人家希望你说的是静态内部类不能访问外部类的成员,但你一上来就顶牛,这不好,要先顺着人家,让人家满意,然后再说特殊情况,让人家吃惊。31、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 可以继承其他类或实现其他接口。不仅是可以,而是必须!32、使用java命令查看java虚拟机版本java version33、数字转字符有多少种方式,分别是什么1)String.valueOf()2) + 数字3)Integer.toString()34、Java创建对象有几种方式1)n
38、ew关键字2)反射3)克隆4)反序列化35、写一个反序列化实例testObject.javapublic class testObject implements SerializableuserTest.javaimport java.io.File;import java.io.FileOutputStream;import java.io.ObjectOutputStream;public class useTestpublic static void main(String args)FileOutputStream fileOut = null;ObjectOutputStream o
39、ut = null;TryfileOut = new FileOutputStream(new File(“c:test.dat”);out = new ObjectOutputStream(fileOut);out.writeObject(new testObject();catch(Exception e)e.printStackTrace();finallytryfileOut.close();fileOut = null;out.close();out = null;catch(Exception e)三、JavaScript/JQuery/Ajax部分1、请写一段Javascript
40、程序,对以下程序的用户输入日期的有效性进行判断,如果格式错误就提示用户。在程序的恰当位置注明怎样调用你写的程序。日期格式为:年年年年月月日日小时,例如2003010812。NewPage1 查询日期(yyyymmddhh): 从 到 答: function fun(obj) if(!isDate(obj.value) alert(日期格式错误!); obj.value=; function isDate(str) var reg = /(d4)(d2)(d2)(d2)$/; var result = str.match(reg); if(result = null|parseFloat(res
41、ult4)23)return false; var t=result1+,+parseFloat(result2)+,+parseFloat(result3); var d = new Date(result1,result2-1,result3); var newStr = d.getFullYear()+,+parseFloat(d.getMonth()+1)+,+parseFloat(d.getDate(); return t = newStr; 查询日期(2003010812): 从 到2、Java和Javascript区别在哪?Java与JavaScript是目前比较流行的两种语言,单从表面上看,两者名称很相似,于是许多初学者容易将二者混淆,或者直接归为一类,其实不然,虽然两者有着紧密的联系,但确是两个完全不同的语言。接下来,笔者仅就她们的几个主要差别归纳起来。一开发厂商众所周知,Java是SUN公司推出的程序设计语言,特别适合于Internet应用程序开发,其前身是Oak语言,而JavaScript则是NetScape公司的产品,是为了扩展NetScape Navigator功能而开发的一种可嵌入Web页面中的解释性语言,其前身是Live Script。由于
限制150内