《各公司经典面试题.pdf》由会员分享,可在线阅读,更多相关《各公司经典面试题.pdf(112页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面试宝典2010版Java基础部分71、一个”.j ava”源文件中是否可以包括多个类(不是内部类)?有什么限制?72、Java 有没有 goto?73、说说&和&的区别。84、在 JAVA中如何跳出当前的多重嵌套循环?85 switch语句能否作用在byte上,能否作用在10ng上,能否作用在String上?96、short si=l;sl=sl+1;有什么错?short si=l;s l+=1;有什么错?97、char型变量中能不能存贮一个中文汉字?为什么?98、用最有效率的方法算出2 乘以8 等於几?99、请设计一个一百亿的计算器910、使用final关键字修饰一个变量时,是引用
2、不能变,还是引用的对象不能变?1111、=和 equals方法究竟有什么区别?II12、静态变量和实例变量的区别?1213、是否可以从一个static方法内部发出对非static方法的调用?1214、Integer 与 int 的区别 1315、Math.round(l 1.5)等於多少?Math.round(-11.5)等於多少?1316、下面的代码有什么不妥之处?1317、请说出作用域public,private,protected,以及不写时的区别 1318、Overload和 Override的区别。Overloaded的方法是否可以改变返回值的类型?1419、构造器 Construc
3、tor 是否可被 override?1520、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是否可以有静态的main方法?1521、写 clone。方法时,通常都有一行代码,是什么?1522、面向对象的特征有哪些方面 1523、j ava中实现多态的机制是什么?1724、abstract class 和 interface 有什么区别?1725、abstract的 method是否可同时是static,是否可同时是native,是否可同时是synchronized?1826、什么是内部类?Static Nest
4、ed Class 和 Inner Class 的不同。1927、内部类可以引用它的包含类的成员吗?有没有什么限制?2028,Anonymous Inner Class(匿 名 内 部 类)是 否 可 以 extends(继承)其它类,是否可以implements(实现)interface(接 口 )?2129、super.getClass()方法调用 2130、String是最基本的数据类型吗?2231、String?s?=?He?o;s?=?s?+?world!;这两行代码执行后,原始的String对象中的内容到底变了没有?2232、是否可以继承String类?2333、String s=n
5、ew String(xyz);创建了几个 String Obj ect?二者之间有什么区别?2334、String 和 StringBuffer 的区另1 2335、如何把一段逗号分割的字符串转换成一个数组?2436、数组有没有length。这个方法?String有没有length。这个方法?2437、下面这条语句一共创建了多少个对象:String s=a+b+c+d;2438、try 里有一个return语句,那么紧跟在这个try后的finally什里的code会不会被执行,什么时候被执行,在 return前还是后?2539、下面的程序代码输出的结果是多少?2540、final,finall
6、y,finalize 的区另I 。2741、运行时异常与一般异常有何异同?2742 error 和 exception 有什么区别?2843、Java中的异常处理机制的简单原理和应用。2844、请写出你最常见到的5 个 runtime exception。2845、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在 try块中可以抛出异常吗?2946、j av a中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop。和 suspend()方法为何不推荐使用?2947、sleep()和 wait()有什么区别?304
7、8、同步和异步有何异同,在什么情况下分别使用他们?举例说明。3249.下面两个方法同步吗?(自 己 发 明)3350、多线程有几种实现方法?同步有几种实现方法?3351、启动一个线程是用run()还是start()?.3352、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?3353、线程的基本概念、线程的基本状态以及状态之间的关系 3454、简述 synchronized 和 j ava.util.concurrent.locks.Lock 的 异 同?3455、设计4 个线程,其中两个线程每次对j增 加 1,另外两个线程对j每次减少1。写出程
8、序。3656、子线程循环10次,接着主线程循环1 0 0,接着又回到子线程循环10次,接着再回到主线程又循环1 0 0,如此循环50次,请写出程序。3857、介绍Collection框架的结构4358、Collection框架中实现比较要实现什么接口 4359、ArrayList 和 Vector 的区别 4460、HashMap 和 Hashtable 的区另IJ 4461、List 和 Map 区别?4562、List,Set,Map 是否继承自 Collection 接口?4563、List、Map、Set三个接口,存取元素时,各有什么特点?4564、说出 ArrayList,Vecto
9、r,LinkedList 的存储性能和特性 4665、去掉一个Vector集合中重复的元素4666、Collection 和 Collections 的区别。4767、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用=还是equals。?它们有何区别?4768、你所知道的集合类都有哪些?主要方法?4769、两个对象值相同(x.equals(y)=tru e),但却可有不同的hash co d e,这句话对不对?4870、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的 compareTo方法,还是使用的子类的compareTo方法,还是抛异常
10、!4871、说出一些常用的类,包,接口,请各举5 个4972、j ava中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?4973、字节流与字符流的区别 5074、什么是j ava序列化,如何实现j ava序列化?或者请解释Serializable接口的作用。5175、描述一下JVM加载class文件的原理机制?5276、heap和 stack有什么区别。5277、G C是什么?为什么要有GC?5278、垃圾回收的优点和原理。并考虑2 种回收机制。5279、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?52
11、80什么时候用asserto 5381、j ava中会存在内存泄漏吗,请简单描述。5382、能不能自己写个类,也叫j avaJang.String?5783.Java代码查错57二.算法与编程 611、编写一个程序,将 a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。612、编写一个程序,将 d:j ava目录下的所有.j ava文件复制到d:j ad目录下,并将原来文件的扩展名从.j ava改为.j ad。623、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但
12、要保证汉字不被截取半个,如“我 ABC”,4,应该截取“我 AB”,输入“我 ABC汉 DEF”,6,应该输出“我 ABC”,而 不 是“我 ABC+汉的半个”。654、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。655、说明生活中遇到的二叉树,用 j ava实现二叉树666、从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序:717、写一个 Singleton 出来。758、递归算法题1 779、递归算法题2 7810、排序都有哪儿种方法?请列举。用 JAVA实现一个快速排序。7911有数组a n,用j ava代码将
13、数组元素顺序颠倒801 2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(1011)(一 千 零 一 拾-元整)输出。81三,html&JavaScript&aj ax 部分 821.判断第二个日期比第一个日期大822,用 table显示n 条记录,每 3 行换一次颜色,即 1,2,3 用红色字体,4,5,6 用绿色字体,7,8,9 用红颜色字体。833、HTM L的 form 提交之前如何验证数值文本框的内容全部为数字?否则的话提示用户并终止提交?844、请写出用于校验HTML文本框中输入的内容全部为数字的j avascript代 码 845、说说你用过那些aj ax技术和框架,说说它
14、们的区别85四,Java web 部分 851、Tomcat的优化经验852、HTTP请求的GET与 POST方式的区别 853、解释一下什么是servlet;854、说一说Servlet的生命周期?865、Servlet的基本架构866、SERVLET API 中 forward。与 redirect。的区别?867,什么情况下调用doGet()和 doPostO?868、Request对象的主要方法:879、forward 利 redirect 的区别 8710、request.getAttribute()和 request.getParameter()有何区别?88ll.j sp 有哪些
15、内置对象?作用分别是什么?分别有什么方法?8812.j sp 有哪些动作?作用分别是什么?8813、JSP的常用指令 8914.JSP中动态INCLUDE与静态INCLUDE的区别?8915、两种跳转方式分别是什么?有什么区别?8916、页面间对象传递的方法 8917、JSP和 Servlet有哪些相同点和不同点,他们之间的联系是什么?9018、MVC的各个部分都有那些技术来实现?如何实现?9019、我们在web应用开发过程中经常遇到输出某种编码的字符,如 iso8859-l等,如何输出一个某种编码的字符串?902 0.现在输入n 个数字,以逗号,分开:然后可选择升或者降序排序;按提交键就在另
16、一页面显示按什么排序,结果为,提供reset 91五.数 据 库 部 分 911、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。912、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 913、存储过程与触发器必须讲,经常被面试到?924、数据库三范式是什么?945、说出一些数据库优化方面的经验?956、union和 union all有什么不同?967.分页语句 978.用一条SQL语句 查询出每门课都大于80分 的 学 生 姓 名 1009.所有部门之间的比赛组合10010.每个月份的发生额都比101科 目多的科目10111.统计每年每月的信息 102
17、12.显水文章标题,发帖人、最后回复时间 10313.删除除了 id 号不同,其他都相同的学生冗余信息10414.航空网的几个航班查询题:10415.查出比经理薪水还高的员工信息:10516、求出小于4 5 岁的各个老师所带的大于12岁的学生人数 10617.求出发帖最多的人:10718、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决?10719、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户。10820.xxx公司的sql面试10821、注册Jdbc驱动程序的三种方式10922、用 JDBC如何
18、调用存储过程10923、JDBC 中的 PreparedStatement 相比 Statement 的好处 11024.写一个用j dbc连接并访问oracle数 据 的 程 序 代 码 11125、Class.forName的作用?为什么要用?11126、大数据量下的分页解决方法。11127、用 JD B C 查询学生成绩单,把主要代码写出来(考试概率极大).11228、这段代码有什么不足之处?11229、说出数据连接池的工作机制是什么?11330、为什么要用ORM?和 JDBC有何不一样?113六.XML部分1131、xml有哪些解析技术?区别是什么?1132、你在项目中用到了 xml技
19、术的哪些方面?如何实现的?1143、用j dom解析xml文件时如何解决中文问题?如何解析?1144、编程用JAVA解析XML的方式.1155、X M L文档定义有几种形式?它们之间有何本质区别?解 析 X M L文档有哪几种方式?117七.流 行 的 框 架 与 新 技 术 1171、谈谈你对Struts的理解。1172、谈谈你对Hibernate的理解。1183、AOP的作用。1184、你 对 Spring的理解。1185、谈谈 Struts 中的 Action servlet。1206、Struts优缺点 优点:1.实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.1207、STR
20、UTS 的应用(如 STRUTS 架构)1218、说说strutsl与 struts2的区别。9、hibernate 中的 update。和 saveOrUpdate()的区别,session 的 10ad()和 get()的区别。12210、简 述 Hibernate和 JD B C 的优缺点?如何书写一个 one to m any配 置 文 件.122Ik iBatis 与 Hibernate 有什么不同?12212、写 Hibernate的一对多和多对一双向关联的orm配置?1229、hibernate 的 inverse 属性的作用?12213、在 DAO中如何体现DAO设计模式?12
21、314、spring+Hibemate中委托方案怎么配置?12315、spring+Hibernate中委托方案怎么配置?12316.hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决;12317.介绍一下Hibernate的二级缓存 12318、Spring的依赖注入是什么意思?给 一 个 B ean的 message属性,字符串类型,注入值为 Hello的 X M L配置文件该怎么写?12519、Jdo 是什么?12520、什么是 spring 的 IOC AOP12621、STRUTS的工作流程!12622、spring 与 EJB
22、 的区别!126八.软 件 工 程 与 设 计 模 式 1261、UML 方面 1262、j 2ee常用的设计模式?说明工厂模式。1263、开发中都用到了那些设计模式?用在什么场合?127九.j 2ee部 分 1271、BS与 C S 的联系与区别。1272、应用服务器与WEB SERVER的区别?1283、应用服务器有那些?1284、J2EE 是什么?1285、J2EE是技术还是平台还是框架?什么是J2EE 1286、请对以下在J2EE中常用的名词进行解释(或简单描述)1297、如何给weblogic指定大小的内存?1298、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
23、1299、如何启动时不需输入用户名与密码?13010、在 weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行j m s及 ej b或连接池等相关信息进行配置后,实际保存在什么文件中?13011 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.j sp放入何目录下,然的在浏览器上就可打入htlp:主机:端口号/helloword.j sp就可以看到运行结果了?又比如这其中用到了一个自己写的j avaBean该如何办?13012、在 weblogic中发布ej b需涉及到哪些配置文件13013、如何在weblogic中进行ss
24、l配置与客户端的认证配置或说说j 2ee(标准)进 行 ssl的配置?13014、如何查看在weblogic中已经发布的EJB?131十.EBJ部 分 1311、EJB是基于哪些技术实现的?并说出SessionBean和 EntityBean的区别,StatefulBean和StatelessBean 的区别。1312、简要讲一下 EJB 的 7 个 Transaction Level?1313、EJB 与 JAVA BEAN 的区别?1314、EJB包 括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?1325、EJB容器提供的服务 1326、EJB的激
25、活机制 1327、EJB的几种类型 1328、客服端调用EJB对象的几个基本步骤133I.webservice 部分 1331、WEB SERVICE名词解释。JSW DL开发包的介绍。JAXP、JA X M 的解释。SOAP、UDDLWSDL 解释。1332、CORBA是什么?用途是什么?1333.Linux 1344、LINUX下线程,GDI类的解释。1345.问得稀里糊涂的题1346、四种会话跟踪技术1347、简述逻辑操作(&,1,人)与 条 件 操 作 的 区 别。134十 二.其 他 1341、请用英文简单介绍一下自己.1342、请 把 http:/tomcat.apache.org
26、/?首页的这一段话用中文翻译一下?1353、美资软件公司JAVA工程师电话面试题目135这套面试题主要目的是帮助那些还没有j av a软件开发实际工作经验,而正在努力寻找jav a 软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以,大家应该早作准备,从拿到这套面试宝典之日起,就要坚持在每天闲暇之余学习其中儿道题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了。答题时,先答是什么,再答有什么作用和要注意什
27、么(这部分最重要,展现自己的心得)答案的段落分别,层次分明,条理清晰都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。要讲你做出答案的思路过程,或者说你记住答案的思想都写下来。把答题想着是辩论赛。答题就是给别人讲道理、摆事实。答题不局限于什么格式和形式,就是要将自己的学识展现出来!别因为人家题目本来就模棱两可,你就心里胆怯和没底气了,不敢回答了。你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗?关于就业薪水,如果你是应届生,那不能要高工资,好比大饼的故事,没有文凭还想拿高
28、工资,就去中关村缺什么补什么吧!少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。1.Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,i。的语法,虚拟机方面的语法。1、一个”.j ava”源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java 有没有 goto?j ava中的保留字,现在没有在j ava中使用。3、说说&和&的区别。&和&都可以用作逻辑与的运算符,表示逻辑与(a n d),当运算
29、符两边的表达式的结果都为true时,整个运算结果才为tru e,否则,只要有一方为false,则结果为false。&还具有短路的功能,即如果第 个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&!str.equals(u )表 达 式,当 str为 null时,后面的表达式不会执行,所以不会出现NullPointerExceplion如果将&改为&,则会抛出NullPointerException异常。If(x=33&+y0)y 会增长,If(x=33&+y0)不会增长&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通
30、常使用OxOf来与一个整数进行&运算,来获取该整数的最低4 个 bit位,例如,0 x31&0 x0f 的结果为 0 x01 1,备注:这道题先说两者的共同点,再说出&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。4、在 JAVA中如何跳出当前的多重嵌套循环?在 Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如,ok:for(int i=0;i10;i+)for(int j=O;j 10;j+)System.out.println(i廿+i+,j=+j);if(j =5)b
31、reak ok;另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。int arr=l,2,3,4,5,6,7,9);boolean found=false;for(int i=0;iarr.length&!found;i+)for(int j=O;j long、float double-boolean 和 short。j ava.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类31、String?s?=?Hello;s
32、?=?s?+?world!;这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s 原先指向一个String对象,内容是Hello”,然后我们对s 进行了+操作,那么s 所指向的那个对象是否发生了改变呢?答案是没有。这时,s 不指向原来那个对象了,而指向了另一个String对象,内容为Heno?world!,原来那个对象还存在于内存之中,只是 s 这个引用变量不再指向它了通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使
33、用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都 需 要 个 String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s 的S trin g 引 用 变 量 进 行 初 始 化,把 它 设 置 为 初 始 值,应 当 这 样 做:public?class?Demo?private?String?s;.pub
34、lic?Demo?s?=?Initial?Value;.而 非s?=?new?String(Initial?Value);后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因 为 String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s 都指向同一个对象。上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new 调用构造器,总是会创建一个新的对象,无论内容是否相同。至于为什么要把String类设计成不可变
35、类,是它的用途决定的。其实不只String,很多Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即 StringBuffer。32、是否可以继承String类?String类是final类故不可以继承。33、String s=new String(xyz);创建了 几个 String Obj ect?二者之间
36、有什么区别?两个或一个,“xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量 xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量 xyz”对象的内容来创建出一个新String对象。如果以前就用过x y z,这句代表就不会创建“xyz”自己了,直接从缓冲区拿。34、String 和 StringBuffer 的区另!JAVA平台提供了两个类:String和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffei类提供的字符串进行修改
37、。当你知道字符数据要改变的时候你就可以使用StringBuffero典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了 equals方法,newString(abc).equals(new String(abc)的结果为 true,而 StringBuffer 没有实现 equals 方法,所以,new StringBuffer(uabc?,).equals(new StringBuffer(uabcv)的结果为 false。接着要举一个具体的例子来说明,我们要把1至 I 100的所有数字拼起来,组成一个串。StringBuffer sbf=new Str
38、ingBuffer();for(int i=0;i100;i+)(sbf.append(i);)上面的代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了 101个对象。String str=new StringO;for(int i=0;i final,finally,finalize 的区别。final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码finally是异常处理语句结构的一部分,表示总是执行。finalize是 Obj ect类的一个方法,在垃圾收
39、集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JV M 不保证此方法总被调用41、运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。j ava编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。42、error和 exception有什么区别?error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception表示一种设计或实现问题。也就是说,它表示
40、如果程序运行正常,从不会发生的情况。43、Java中的异常处理机制的简单原理和应用。异常是指j ava程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常的信息。Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为j ava.lang.Throwable,Throwable 下面又派生了两个子类:Error 和 Exception.Error 表示
41、应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线程死锁等系统问题。Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉,例 如,数 组 脚 本 越 界(Array IndexOutOfBoundsException),空指针异常(NullPointerException)类转换异常(ClassCastException);普通异常是运行环境的变化或异常所导致的问题,是用户能够
42、克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。j av a为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try.catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常,而系统异常可以处理也可以不处理,所以,编译器不强制用try.catch处理或用throws声明,所以系统异常也称为unchecked异常。提示答题者:就按照三个级别去思考:虚拟机必须宕机的错误,程序可以死掉也可以不死掉的错误,程序不应该死掉的错误;44、请写出你最常见到的5 个 runtime exceptiono这道题主要考你的代码量到底
43、多大,如果你长期写代码的,应该经常都看到过一些系统方面的异常,你不一定真要回答出5 个具体的系统异常,但你要能够说出什么是系统异常,以及几个系统异常就可以了,当然,这些异常完全用其英文名称来写是最好的,如果实在写不出,那就用中文吧,有总比没有强!所谓系统异常,就是它 们 都 是 RuntimeException的子类,在 j dk d o c 中查RuntimeException类,就可以看到其所有的子类列表,也就是看到了所有的系统异常。我比较 有 印 象 的 系 统 异 常 有:NullPointerException、ArraylndexOutOfBoundsException、Class
44、CastException。45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在 try块中可以抛出异常吗?46、j av a中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop。和 suspend()方法为何不推荐使用?j ava5以前,有如下两种:第一种:new Thread。.start。;这表示调用Thread子类对象的run方法,new Thread。表示一个Thread的匿名子类的实例对象,子类加上run方法后的代码如下:new Thread()public void run().start();第
45、二种:new Thread(new Runnable。).start。;这表示调用 Thread 对象接受的 Runnable 对象的 run方法,new Runnable。表示一个Runnable的匿名子类的实例对象,runnable的子类加上run方法后的代码如下:new Thread(new Runnable()public void run().start();从j ava5开始,还有如下一些线程池创建多线程的方式:ExecutorService pool=Executors.newFixedThreadPool(3)for(int i=0;i 简述 synchronized 和 j
46、ava.util.concurrent.locks.Lock 的 异 同?主要相同点:Lock能完成synchronized所实现的所有功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而 Lock一定要求程序员手工释放,并且必须在finally从句中释放。Lock还有更强大的功能,例如,它的tryLock方法可以非阻塞方式去拿锁。举例说明(对下面的题用lock进行了改写):package com.huawei.interview;import j ava.util.concurrent.locks.Lock;import
47、j ava.util.concurrent.locks.ReentrantLock;public class ThreadTest*param args*/private int j;private Lock lock=new ReentrantLock();public static void main(String args)/TODO Auto-generated method stubThreadTest tt=new ThreadTest();for(int i=0;iv2;i+)(new Thread(tt.new Adder().start();new Thread(tt.new
48、 Subtractor().start();)private class Subtractor implements Runnable(Overridepublic void run()/TODO Auto-generated method stubwhile(true)(/*synchronized(ThreadTest.this)System.out.println(j =+j-);这里抛异常了,锁能释放吗?*/lock.lock();try(System.out.println(j =+j );finally(lock.unlock();)private class Adder impl
49、ements RunnableOverridepublic void run()/TODO Auto-generated method stubwhile(true)/*synchronized(ThreadTest.this)System.out.println(j+=+j+);*/lock.lock();try(System.out.println(j+=n+j+);finally(lock.unlock();55、设计4 个线程,其中两个线程每次对j增 加 1,另外两个线程对j每次减少1。写出程序。以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。public class Th
50、readTestlprivate int j;public static void main(String args)ThreadTestl tt=new ThreadTestl();Inc inc=tt.new Inc();Dec dec=tt.new Dec();for(int i=0;i2;i+)Thread t=new Thread(inc);t.start();t=new Thread(dec);t.start();private synchronized void inc()j+;System.out.println(Thread.currentThread().getName()