《JAVA面试题华为-IBM.pdf》由会员分享,可在线阅读,更多相关《JAVA面试题华为-IBM.pdf(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、J A V A 面试题最全集一、J a v a 基础知识1 .J a v a 有那些基本数据类型,S t r in g 是不是基本数据类型,他们有何区别。2 .字符串的操作:写一个方法,实现字符串的反转,如:输入a b c,输出c b a写一个方法,实现字符串的替换,如:输入b b b wl ir b b b,输出b b b h h t c c c。3 .数据类型之间的转换如何将数值型字符转换为数字(I n t e g e r,Do u b l e)如何将数字转换为字符如何取小数点前两位,并四舍五入。4 .日期和时间如何取得年月日,小时分秒如何取得从1 9 7 0 年到现在的毫秒数如何获取某个
2、日期是当月的最后一天如何格式化日期5 .数组和集合6 .文件和目录(I/O)操作如何列出某个目录下的所有文件如何列出某个目录下的所有子目录判断一个文件或目录是否存在如何读写文件7 .J a v a 多态的实现(继承、重载、覆盖)8 .编码转换,怎样实现将GB 2 3 1 2 编码的字符串转换为I S 0-8 8 5 9-1 编码的字符串。9 .J a v a 中访问数据库的步骤,S t a t e m e n t 和 Pr e p a r e d S t a t e m e n t 之间的区别。1 0 .找出下列代码可能存在的错误,并说明原因:二、J S P&S e r v l e t 技术1
3、 .描述J S P和 S e r v l e t 的区别、共同点、各自应用的范围2 .在 W e b 开发中需要处理H T M L 标记时,应做什么样的处理,要筛选那些字符(&)3 .在J S P中如何读取客户端的请求,如何访问C GI 变量,如何确定某个J s p 文件的真实路径。4 .描述C o o kie 和 S e s s io n 的作用,区别和各自的应用范围,S e s s io n 工作原理。5 .列出J s p 中包含外部文件的方式,两者有何区别。6 .说明J s p 中e r r o r Pa g e 的作用,应用范围。7 .介绍在J s p 中如何使用J a v a B e
4、 a n S o8 .简单介绍J S P的标记库9 .J s p 和 S e r v l e t 中的请求转发分别如何实现。三、J 2 EE相关知识1 .介绍 J 2 EE、J 2 S E、J 2 S E 的区别。2 .J 2 EE是一种技术还是一种平台,他提供了那些技术。3 .什么是A p p l ic a t io n S e r v e r,它有什么功能和优点。4 .简单介绍连接池的优点和原理。5 .W e b.x m l 的作用四、其他1 .W e b 安全性的考虑(表单验证、浏览器Basi c 方式的验证,应用程序的安全性,S S L,代码考虑)2 .简单介绍您所了解的MVC。3 .
5、简单介绍所了解的X ML。4 .文档和编码规范5 .J ava中的分页、效率考虑。6 .简单介绍您所了解的st ru c t sol.x m l 在项目中的作用2.s-EJ B与 e-EJ B的区别3.会话面的作用4.c m p与 b m p的优缺点5.j 2 m e程序的必需的几个部分6.c/s与b/s的区别7.构建一个c onnec t pool,然后再调用它,8.j 2 ee平台与d ot net 平台的区别9.ej b 的 l i f e c y c l e10.sessi on b ean 和 ent i t y b ean 的区别11.ej b 中的 t ransac t i on
6、 机制12.sy nc h roni z ed (生产者和消费)13.S t ri ng 和 S t ri ng Bu f f er14 .S eri al i z ab l e15 .MVC(S t ru t s的工作流程)16 .什么是MDA17 .t c p与u d p的区别18.链表与散列表和数组的区别19.堆和栈的区别2 0.ej b 的分类及区别2 1.你对现在软件业以及国内软件业的看法2 2 .谈谈j ava多线程2 3 .谈谈文件加密技术2 4 .软件开发生命周期2 5 .路由协议种类及特点2 6 .j ava的awt 和 swi ng 组件的GUI 设计的关键2 7 .对于j
7、 ava流的认识2 8.简单描述一下awt 与 swi ng 区别。2 9.简述j ava编程中事件处理模式。3 0.你编写过appl et 吗?appl et 的安全权限如何?试列举j ava appl i c at i on或者 appl et 中与servl et/j sp通信可以采用的方式。3 1.简述逻辑操作(如&,|)与条件操作(如&,|)的区别。3 2 .简 述 J ava S erver P ag e和 S ervl et 的联系和区别。3 3 .简述 sy nc h roni z ed 和 j ava.u t i l,c onc u rrent,l oc ks.Loc k 的
8、异同?3 4 .EJ B规范规定EJ B中禁止的操作有哪些?3 5 .j ava除了 8 种基本类型外,在虚拟机里还有哪一种,有什么作用?3 6 .除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式?3 7 .c l assl oad er 中,J DK 的 AP I、Cl asspat h 中的同 web-i nf 中的 c l ass 加载方式有什么区别?3 8.列举三种以上垃圾回收算法,并比较其优缺点?3 9.编写代码实现一个线程池4 0.描述一下J VM加载c l ass文件的原理机制?4 1.试举例说明一个典型的垃圾回收算法?4 2 .请用j av a写二叉树算法,实
9、现添加数据形成二叉树功能,并以先序的方式打印出来4 3 .请写一个j av a程序实现线程连接池功能?4 4 .给定一个C 语言函数,要求实现在j av a类中进行调用。4 5 .如何获得数组的长度?4 6 .访问修饰符 p u b l i c/p r i v at e/p r ot e ct e d/缺省的修饰符”的使用4 7.用关键字f i n al 修饰一个类或者方法时,有何意义?4 8 .掌握类和对象的概念,掌握面向对象编程的本质4 9 .静态变量和静态方法的意义,如何引用一个类的静态变量或者静态方法?5 0 .J A VA 语言如何进行异常处理,关键字:t hor w s,t hr
10、ow,t r y,cat ch,f i n al l y5 1 .O b j e ct 类(或者其子类)的f i n al i z e。方法在什么情况下被调用?5 2 .一个”.j av a”原文件中是否可以包括多个类(不是内部类)?5 3 .掌握内部类和接口的概念5 4 .St r i n gTok e n i z e r 类的使用5 5 .数据结构,如何遍历Li s t 中的元素?如果要按照键值保存或者访问数据,使用什么数据结构?要掌握C ol l e ct i on 相关的接口和类的使用5 6 .使用St r i n gB u f f e r 类与St r i n g类进行字符串连接时有
11、何区别?5 7.调用Thr e ad 类的d e s t r oy 0方法有什么后果?5 8 .多线程,用什么关键字修饰同步方法?s t op。和 s u s p e n d。方法为何不推荐5 9 .使用s ock e t 建立客户端与服务器的通信的过程6 0 .J A VA 语言国际化应用,Local e 类,Un i cod e6 1 .描述反射机制的作用6 2 .如何读写一个文件?6 3 .在图形界面中,一个按钮如何处理鼠标点击事件?6 4 .在图形界面中,一个表格,如何实现编辑单元格时弹出下拉框?6 5 .如何加载图片?6 6 .什么是模态对话框?6 7.阐述M VC 的概念6 8 .
12、G UI 布局管理器的使用,F l ow Lay ou t,B or d e r Lay ou t,G r i d B agLay ou t6 9 .如何构造一棵树?选择树的一个节点时,如何得到这个节点?70 .向编辑框中输入字符时,如何控制只输入整数?71 .描述使用J D BC连接数据库的过程72 .E J B分为几类?什么是BM P,CM P?73 .什么是J N D I?74.AD O 是什么?Ac t i v e X 数据对象,是一个应用级程序接口.75.四种J D BC方式?目前的版本?76.E J B有哪几种?区别是什么?77.J a v a Be a n与E J B有什么区别?
13、78.软件开发生命周期有哪几个阶段?79.软件开发有哪些因素?80 .软件开发中如何进行版本控制?81 .U M L 中,类视图如何表示类中的继承与聚合?82 .客户端游标与服务器端游标的区别?83 .动态游标与静态游标的区别?84.d o t ne t 由哪几个基本框架组成?85.O r a c l e 中 S G A 是什么?86.w e b s e r v e r s 是什么?87.U N I X 中Q T是什么意思?88.在软件开发生命周期中的哪个阶段开始测试?89.d o t ne t 与 J 2 E E 的比较?90 .什么是 Ac t i v e X?91 .J a v a 中
14、I D L 是什么?92 .I S 0 90 0 0 和 CM M 是什么?I S 0 90 0 0 和 CM M (软件能力成熟度模型)认证是国际上通用的软件质量评估方法.CM M 的五个成熟度等级。第一,谈谈 f i na l,f i na l l y,f i na l i z e 的区别。f i na l?修饰符(关键字)如果一个类被声明为f i na l,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为a b s t r a c t 的,又被声明为f i na l 的。将变量或方法声明为f i na l,可以保证它们在使用中不被改变。被声明为f i na l
15、的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为f i na l 的方法也同样只能使用,不能重载f i na l l y?再异常处理时提供f i na l l y 块来执行任何清除操作。如果抛出一个异常,那么相匹配的c a t c h 子句就会执行,然后控制就会进入f i na l l y 块(如果有的话)。f i na l i z e?方法名。J a v a 技术允许使用f i n al i z e()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在O b j e c t 类中定义的,
16、因此所有的类都继承了它。子类覆盖f i n al i z e()方法以整理系统资源或者执行其他清理工作。finalize 0方法是在垃圾收集器删除对象之前对这个对象调用的。第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以 implements(实现)interface(接口)?匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。第三,Static Nested Class和 Inner Class的不同,说得越多越好(面试题有的很笼统)。Nested Class(一般是
17、C+的说法),Inner Class(一般是 JAV A 的说法)。Java内部类与C+嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http:/ Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2 不能从一个static内部类的一个对象访问一个外部类对象第四,&和&的区别。&是位运算符。&是布尔逻辑运算符。第五,HashMap和 Hashtable的区别。都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null键 和 null值。
18、它也比HashMap慢,因为它是同步的。第六,Collection 和 Collections 的区别。Collections是个java,util下的类,它包含有各种有关集合操作的静态方法。Collection是个java,util下的接口,它是各种集合结构的父接口。第七,什么时候用assert o断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一b AssertionErroro它用于调试目的:assert(a 0):/throws an AssertionError if a c h a r l ong、f l oa t、
19、d ou b l e b ool e a n 和 s h or t oj a v a.l a ng.S t r i ng 类是f i na l 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用S t r i ng B u f f e r 类3、in t和I nt e g e r 有什么区别J a v a 提供两种不同的类型:引用类型和原始类型(或内置类型)。I nt 是 j av a 的原始数据类型,I nt e g e r 是 j a v a 为 i nt 提供的封装类。J a v a 为每个原始类型提供了封装类。原始类型封装类b ool e a n B ool
20、 e a nc h a r C h a r a c t e rb y t e B y t es h or t S h or ti nt I nt e g e rl ong L ongf l oa t F l oa td ou b l e D ou b l e引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为nu l l,而原始类型实例变量的缺省值与它们的类型有关。4、S t r i ng 和 S t r
21、i ng B u f f e r 的区别J A VA 平台提供了两个类:S t r i ng 和 S t r i ng B u f f e r,它们可以储存和操作字符串,即包含多个字符的字符数据。这个S t r i ng 类提供了数值不可改变的字符串。而这个S t r i ng B u f f e r 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用S t r i ng B u f f e r。典型地,你可以使用S t r i ng B u f f e r s来动态构造字符数据。5、运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的
22、通常操作中可能遇到的异常,是一种常见运行错误。j a v a 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。6 说出S e r v l e t 的生命周期,并说出S e r v l e t 和 C G I 的区别。S e r v l e t 被服务器实例化后,容器运行其i ni t 方法,请求到达时运行其s e r vi c e 方法,s e r v i c e 方法自动派遣运行与请求对应的d oX X X 方 法(d oG e t,d oPos t)等,当服务器决定将实例销毁的时候调用其d e s t r oy 方法。与 c g i 的区别在
23、于s e r v l e t 处于服务器进程中,它通过多线程方式运行其s e rv i c e 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而C G I对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于s e r v l e t。7 说出A r r a y L i s t,V e c t o r,L i n k e d L i s t 的存储性能和特性A r r a y L i s t 和 V e c t o r 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据
24、快而插入数据慢,V e c t o r由于使用了 s y n c h r o n i z e d 方 法(线程安全),通常性能上较A r r a y L i s t 差,而 L i n k e d L i s t 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。8、E J B 是基于哪些技术实现的?并说出S e s s i o n B e a n 和 E n t i t y B e a n 的区别,S t a t e f u l B e a n 和 S t a t e l e s s B e a n 的区别。E J B 包
25、括 S e s s i o n B e a n E n t i t y B e a n、M e s s a g e D r i v e n B e a n,基于J N D I、R M I、J A T 等技术实现。S e s s i o n B e a n 在 J 2 E E 应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他E J B 组件。E n t i t y B e a n 被用来代表应用系统中用到的数据。对于客户机,S e s s i o n B e a n 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,E n t i t y B e a n 是
26、一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。S e s s i o n B e a n 还可以再细分为 S t a t e f u l S e s s i o n B e a n 与 S t a t e l es s S e s s i o n B e a n ,这 两 种 的 S e s s i o n B e a n 都可以将系统逻辑放在me t h o d 之中执行,不 同 的 是 S t a t e f u l S e s s i o n B e a n 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的S t a
27、t e f u l S e s s i o n Bean的实体。S t a t e l e s s S e s s i o n B e a n 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫S t a t e l e s s S e s s i o n B e an 的时候,E J B C o n t a i n e r 并不会找寻特定的S t a t e l e s s S e s s i o n B ean的实体来执行这个m e t h o d o 换言之,很可能数个使用者在执行某个St a t e l e s s S e s s i o n B e a n 的 m
28、e t h o d s 时,会是同B e a n 的 I n st a n c e 在执行。从内存方面来看,S t a t e f u l S e s s i o n B e a n 与S t a t el e s s S e s s i o n B e a n 比较,S t a t e f u l S e s s i o n B e a n 会消耗 J 2 EE S e r v e r 较多的内存,然 而 S t a t e f u l S e s s i o n B e a n 的优势却在于他可以维持使用者的状态。9 C o l l e c t i o n 和 C o l l e c t
29、i o n s 的区别。C o l l e c t i o n 是集合类的上级接口,继承与他的接口主要有Set和 L i s t.Colle c t i ons是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。10、&和&的区别。&是位运算符,表示按位与运算,&是逻辑运算符,表示逻辑与(and)o11 Hash M ap 和 Hash t ab le 的区别。Hash M ap 是Hash t ab le 的轻量级实现(非线程安全的实现),他们都完成了 M ap 接口,主要区别在于Hash M ap 允许空(nu ll)键 值(ke y),由于非线程安
30、全,效率上可能高于Hash t ab le。Hash M ap 允许将 nu ll 作为一 Is-e nt ry 的 ke y 或者 v alu e,而 Hash t ab le 不允许。Hash M ap 把 Hash t ab le 的 c ont ai ns 方法去掉了,改成 c ont ai nsv alu e 和 c ontai nsK e yo因为c ont ai ns方法容易让人引起误解。Hash t ab le 继承自 Di c t i onary 类,而 Hash M ap 是 Jav al.2 引进的 M ap i nt e rf ac e 的 实 现。最大的不同是,Has
31、h t ab le 的方法是S y nc h roni ze 的,而Hash M ap 不是,在多个线程访问Hash t ab le 时,不需要自己为它的方法实现同步,而Hash M ap 就必须为之提供外同步。Hash t ab le和Hash M ap采用的h ash/re h ash算法都大概一样,所以性能不会有很大的差异。12 f i nal,f i nally,f i nali ze 的区别。f i n a l用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。f i nally是异常处理语句结构的一部分,表示总是执行。f i nali ze是O b j e c t
32、类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。13、sle e p ()和w ai t ()有什么区别?sle e p是 线 程 类(T h re ad)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调 用sle e p不会释放对象锁。w ai t是O b j e c t类的方法,对此对象调用w ai t方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出not i f y方 法(或not i f yAll)后本线程才进入对象锁定池准备获得对象锁进
33、入运行状态。1 4 O v er l o a d和O v er r id e的区别。O v er l o a d ed的方法是否可以改变返回值的类型?方法的重写O v er r id in g和重载O v er l o a d in g是J a v a多态性的不同表现。重写O v er r id in g是父类与子类之间多态性的一种表现,重 载O v er l o a d in g是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我 们 说 该 方 法 被 重 写(O v er r id in g)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定
34、义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(O v er l o a d in g)o O v er l o a d ed的方法是可以改变返回值的类型。1 5、er r o r和ex c ep t io n有什么区别?e r r o r表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。ex c ep t io n表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。1 6、同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例
35、如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。1 7 a b s t r a c t c l a s s 和 in t er f a c e 有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(a b s t r a c t c l a s s),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建a b s t r a
36、 c t类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。A b s t r a c t类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接 口(in t er f a c e)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义s t a t ic f in a l 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口
37、时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,i ns t a nc e of 运算符可以用来决定某对象的类是否实现了接口。18、h e a p和 s t a c k 有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素19、f or w a r d 和 r e d i r e c t 的区别f or w a r d 是服务器请求资源,服务器直接访问目标地址的
38、U R L,把那个U R L 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。r e d i r e c t 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以s e s s ion,r e qu e s t 参数都可以获取。2 0、E J B 与 J A V A B E A N 的区别?J a v a B e a n 是可复用的组件,对 J a v a B e a n并没有严格的规范,理论上讲,任何一个J a v a 类都可以是一个B e a n。但
39、通常情况下,由于J a v a B e a n是被容器所创建(如 T om c a t)的,所以J a v a B e a n应具有一个无参的构造器,另外,通常J a v a B e a n还要实现S e r i a l i z a b l e 接口用于实现B e a n的持久性。Ja v a B e a n实际上相当于微软C O M 模型中的本地进程内C O M 组件,它是不能被跨进程访问的。E nt e r pr i s e J a v a B e a n 相当于D C O M,即分布式组件。它是基于J a v a 的远程方法调用(R M I)技术的,所以E J B 可以被远程访问(跨进程
40、、跨计算机)。但 E J B 必须被布署在诸如W e b s pe r e、W e b L og i c 这样的容器中,E J B 客户从不直接访问真正的E J B 组件,而是通过其容器访问。E J B 容器是 E J B 组件的代理,E J B 组件由容器所创建和管理。客户通过容器来访问真正的E J B 组件。21、S t a t i c N es t ed C l a s s 和 I n n er C l a s s 的不同。S t a t i c N es t ed C l a s s 是被声明为静态(s t a t i c)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要
41、在外部类实例化后才能实例化。22、J S P 中动态I N C L UD E 与静态I N C L UD E 的区别?动态 I N C L UD E 用 js p:i n cl u de 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态I N C L UD E 用 i n cl u de伪码实现,定不会检查所含文件的变化,适用于包含静 态 页 面 i n cl u de fi l e=i n cl u ded.ht m%23、什么时候用a s s er t oa s s er t i o n(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制
42、。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。24、G C是什么?为什么要有GC?G C是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java
43、提供的G C功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。25 short si=1;si=si+1;有什么错?short si=1;s1+=1;有什么错?short si=1;si=si+1;(sl+1 运算结果是 int 型,需要强制转换类型)short si=1;si+=1;(可以正确编译)26、Math,round(H.5)等於多少?Math,round(-11.5)等於多少?Math,round(11.5)=12Math,round(-11.5)=-11round方法返回与参数最接近的长整数,参数加1/2后求其floo
44、r.27 String s=new String(xyz”);创建了几个 String Object?两个28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。public class ThreadTestlprivate 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
45、t=new Thread(inc);t.start();t=new Thread(dec);t.start();)private synchronized void inc()j+;System,out.printin(Thread.currentThread().getName()+“-inc:+j);)private synchronized void dec()System,out.printin(Thread.currentThread().getName()+“-dec:+j);)class Inc implements Runnablepublic void run()for(in
46、t i=0;i100;i+)inc();class Dec implements Runnablepublic void run()for(int i=0;ija v a t es t.Child Cla s sFa t her Cla s s Cr ea t eFa t her Cla s s Cr ea t eChild Cla s s Cr ea t e6、内部类的实现方式?答:示例代码如下:p a c ka ge t es t;p u blic c la s s Ou t er Cla s sp r iv a t e c la s s Int er Cla s sp u blic In
47、t er Cla s s()(S y s t em,o u t.p r int in(Int er Cla s s Cr ea t e);)p u blic Ou t er Cla s s O(Int er Cla s s ic =new Int er Cla s s();S y s t em,o u t.p r int In(Ou t er Cla s s Cr ea t e);)p u blic s t a t ic v o id ma in(S t r ing a r gs)(Ou t er Cla s s o c 二 new Ou t er Cla s s O;)输出结果:C:ja v
48、 a t es t/Ou t er Cla s sInt er Cla s s Cr ea t eOu t er Cla s s Cr ea t e再一个例题:p u blic c la s s Ou t er Cla s s p r iv a t e d o u ble d l=1.0;/ins er t c o d e her e)Y o u need t o ins er t a n inner c la s s d ec la r a t io n a t line 3.W hic h t w o innerc la s s d ec la r a t io ns a r ev a l
49、id?(Cho o s e t w o.)A.c la s s Inner 0nep u blic s t a t ic d o u ble met ho d a O r et u r n d l;)B.p u blic c la s s Inner Ones t a t ic d o u ble met ho d a()r et u r n d l;)C.p r iv a t e c la s s Inner Oned o u ble met ho d a()r et u r n d l;)D.s t a t ic c la s s Inner Onep r o t ec t ed d o
50、u ble met ho d a()r et u r n d l;)E.a bs t r a c t c la s s Inner Onep u blic a bs t r a c t d o u ble met ho d a O;)说明如下:一,静态内部类可以有静态成员,而非静态内部类则不能有静态成员。故A、B错二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;r et u r n d l 出错。故 D 错三.非静态内部类的非静态成员可以访问外部类的非静态变量。故 C 正确四.答案为C、E7、垃圾回收机制,如何优化程序?希望大家补上,谢谢8、flo a t 型