Java 笔试面试 全 复习笔记 rnxefe版本Word文件下载.docx
- 文档编号:20513994
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:55
- 大小:78.34KB
Java 笔试面试 全 复习笔记 rnxefe版本Word文件下载.docx
《Java 笔试面试 全 复习笔记 rnxefe版本Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java 笔试面试 全 复习笔记 rnxefe版本Word文件下载.docx(55页珍藏版)》请在冰豆网上搜索。
22.sleep()和wait()有什么区别(需要编程实践方能深刻理解)?
10
23.heap和stack有什么区别。
24.AnonymousInnerClass是否可以继承其它类,或是实现其他接口?
25.StaticNestedClass和InnerClass的不同10
26.HashMap和Hashtable的区别。
27.你所知道的集合类都有哪些?
主要方法?
28.描述一下JVM加载class文件的原理机制?
29.Collection和Collections的区别。
30.char型变量中能不能存贮一个中文汉字?
为什么?
31.List,Set,Map是否继承自Collection接口?
32.说出ArrayList,Vector,LinkedList的存储性能和特性10
33.什么时候用assert。
11
34.GC是什么?
为什么要有GC?
(基础)。
35.Overload和Override的区别,Overloaded是否可以改变返回值的类型?
36.两个对象值(x.equals(y)==true),但却可有不同的hashcode,对不对?
37.构造器Constructor是否可被override?
38.Set里的元素是不能重复的,是用==,equals()区分重复?
它们有何区别?
39.Strings=newString("
xyz"
);
创建了几个StringObject?
40.String是最基本的数据类型吗?
41.int和Integer有什么区别11
42.String和StringBuffer的区别,是否可以继承他们?
s12
43.Math.round(11.5)等於多少?
Math.round(-11.5)等於多少?
12
44.如何输出一个某种编码的字符串?
45.shorts1=1;
s1=s1+1;
有什么错?
shorts1=1;
s1+=1;
46.Java有没有goto?
47.数组有没有length()这个方法?
String有没有length()这个方法?
48.构造器Constructor是否可被override?
49.一线程进入synchronized方法后,其它线程是否可进入此对象的其它方法12
50.try中finally执行时机在return之前么?
51.编程题:
用最有效率的方法算出2乘以8等於几?
52.一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
53.swtich是否能作用在byte,long和String上?
54.对象和实例有什么区别?
55.Java的安全性在语言级上提供了很好的安全措施,主要体现12
四、经典专题解析13
1.关于java混淆器13
2.1.什么是混淆器?
13
2.2.现有的混淆器有什么问题?
2.3.Java混淆编译器是如何工作的?
2.4.如何使用符号保留指令?
2.Java对象的五个存储区域14
3.1.寄存器14
3.2.堆栈14
3.3.堆14
3.4.常量存储14
3.5.非RAM存储14
3.Java序列化专辑14
4.1.序列化是干什么的?
14
4.2.什么情况下需要序列化14
4.3.相关注意事项14
4.4.详细描述:
15
4.5.序列化机制15
4.6.定制序列化过程16
4.7.完全定制序列化过程16
4.Java内存管理相关17
5.1.Java如何进行内存管理的17
5.2.Java内存泄露17
5.面向对象的特征有哪些方面(需深刻实践理解)20
6.1.抽象:
20
6.2.继承:
6.3.封装:
6.4.多态性:
21
6.Java性能优化之通用篇21
7.1.不用new关键词创建类的实例21
7.2.使用非阻塞I/O21
7.3.慎用异常21
7.4.不要在循环中使用异常22
7.5.不要重复初始化变量22
7.6.尽量指定类的final修饰符22
7.7.尽量使用局部变量22
7.8.尽量重用对象22
7.9.在使用同步机制时,应尽量使用方法同步代替代码块同步。
22
7.10.尽量减少对变量的重复计算22
7.11.数据库操作优化规范22
7.12.对象不用时手动置null22
7.13.乘法和除法22
7.14.尽量采用lazyloading的策略,即在需要的时候才开始创建23
7.15.当复制大量数据时,使用System.arraycopy()命令23
7.16.尽量使用HashMap和ArrayList23
7.17.array(数组)和ArryList的使用23
7.18.StringBuffer的使用23
7.19.SringBuffer和StringBuilder的区别24
7.20.HashMap的遍历效率讨论24
7.Java性能优化之J2EE篇26
8.1.使用缓冲标记26
8.2.始终通过会话Bean访问实体Bean26
8.3.选择合适的引用机制26
8.4.在部署描述器中设置只读属性26
8.5.缓冲对EJBHome的访问26
8.6.为EJB实现本地接口27
8.7.生成主键27
8.8.及时清除不再需要的会话27
8.9.在JSP页面中关闭无用的会话27
8.10.Servlet与内存使用28
8.11.HTTPKeep-Alive28
8.12.JDBC与Unicode28
8.13.JDBC与I/O28
8.14.内存数据库28
8.Java性能优化之GUI篇29
9.1.用JAR压缩类文件29
9.2.提示Applet装入进程29
9.3.在画出图形之前预先装入它30
9.4.覆盖update方法30
9.5.延迟重画操作30
9.6.使用双缓冲区31
9.7.使用BufferedImage31
9.8.使用VolatileImage32
9.9.使用WindowBlitting32
9.Java设计模式32
10.1.创建类型的模式33
10.2.结构类型的模式33
10.3.行为类型的模式34
五、编程题34
1.写一个Singleton出来34
2.设计4个线程,两线程对j增1,两线程对j减1,写出程序。
35
3.编程应用说明多态36
3.1.相关类36
3.2.问题:
以下输出结果是什么?
36
3.3.答案36
3.4.分析36
3.5.其他程序说明37
4.将下列数组求和的函数补充完整:
37
一、关于数据类型转换
1.程序解读示例
(1)publicvoidbyteIntTest(){
byteb=2,e=3;
bytec=b+e;
System.out.println(c);
}
结果如何?
(2)shorts=1;
s=s+1;
shorts=1;
s+=1;
哪一个表达式是错误的?
解题思路:
Java中涉及到byte,short,char类型的运算符首先会将它们这些值转换成int类型,然后对int类型进行运算,最后得到int类型的结果。
,因此,两个byte类型的值相加最后会得到一个int类型结果,如果需要得到byte类型结果,必须将这个int类型的结果进行显示转换为byte类型
答案:
编译错误,应当为:
(1)bytec=(byte)(b+e);
(2)shorts=1;
(s=s+1后返回int类型,必须显示转换)
2.基本数据取值范围
1、整数:
定义:
没有小数部分的数字,负数是允许的。
种类:
Java提供四种整数类型:
int4个字节-2,147,483,648到2,147,483,647
short2个字节-32,768到32,767
long8个字节-9,223,372,036,854,775,808L到9,223,372,036,854,775,807L
byte2个字节-128到127
2、浮点数:
定义:
含有小数部分的数字。
分类:
Java提供两种浮点数:
float4个字节约+-3.40282347E+38F(6~7个有效的十进制数位)
double8个字节约+-1.79769313486231570E+308(15个有效数位)
说明:
1)float类型的数值有个后缀:
F,如果没有后缀F,那么默认为double。
double类型的数值也可以使用后缀D。
2)当这些数字遇到取值范围错误时,会发生(上溢Overflow);
而在遇到象被零除时,会发生下溢(Underflow)。
3、字符类型:
单引号用来表示char常量,
说明:
1)双引号则表示一个字串,他是Java的一个对象,并不是数据类型。
2)char类型表示Unicode编码方案中的字符。
Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,实际上是Unicode的一个子集。
Unicode字符通常用十六进制编码方案表示,范围在'
\u0000'
到'
\uFFFF'
之间。
\u0000到\u00FF表示ASCII/ANSI字符。
\u表示这是一个Unicode值。
3)在Java中除了用这个\u的形式来表示字符外,还可以使用换码序列来表示特殊字符。
\b退格\u0008\tTab制表\u0009\n换行\u000a\r硬回车\u000d
\"
双引号\u0022\'
单引号\u0027\反斜杠\u005c
4、布尔类型:
boolean类型只有两个值:
false和true
3.变量概念相关
变量和实例变量的区别
类变量
实例变量
别名
静态变量
对象变量
标识符
变量前加了static
变量前没加static
作用域
是所有对象共有,其中一个对象将它值改变,其他对象也可以得到改变后的结果;
对象私有,某一个对象将其值改变,不影响其他对象;
例如:
publicclassA{
staticinta=0;
//类变量
privateintb=0;
//实例变量
publicvoidmain(String[]args){
Aa1=newA();
Aa2=newA();
a1.a=3;
//等同于
A.a=3;
a1.b=4;
System.out.println(a2.a);
//结果为3,类变量是针对所有对象的,所以a1改变a,a2的a也改变
System.out.println(a2.b);
//结果为0,实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
二、数据运算优先级
1.概论
具体运算符的优先级见下表:
优先级
运算符
结合性
1
()[].
从左到右
2
!
+(正)-(负)~++--
从右向左
3
*/%
从左向右
4
+(加)-(减)
5
<
>
>
6
<
=>
=instanceof
7
==
!
=
8
&
(按位与)
9
^
10
|
11
12
||
13
?
:
14
=+=-=*=/=%=&
=|=^=~=<
=
说明:
1、该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
2、结合性是指运算符结合的顺序,通常都是从左到右。
从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
3、instanceof作用是判断对象是否为某个类或接口类型,后续有详细介绍。
4、注意区分正负号和加减号,以及按位与和逻辑与的区别
5.一句话Java中的运算符按优先级从高到低排列如下:
[]()++--!
~instanceof*/%+-<
=>
\==!
=&
^&
&
||?
:
=op=
其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代,示例代码:
intm=12;
intn=m<
1+2;
(1+2);
//这样更直观
这样书写代码,更方便编写代码,也便于代码的阅读和维护。
2.经典优先级程序示例
2.1.++与=问题
inta,c=1;
c=c++;
a=c;
System.out.println("
a="
+a+"
c="
c);
结果为a=1,c=1
分析:
主要问题在c=c++;
这个式子,因为'
++'
的优先级比'
='
高.先算C++,C++算是一个式子这个式子的返回值是1然后C变成2然后再执行前面的c=1;
这时C又变成1了
2.2.简单等式转换
A=X+Y-2/2+Z;
等价于A=X+(Y-2)/(2+Z);
三、Java面试宝典经典问题
1.列举出10个JAVA语言的优势
免费,开源,跨平台,简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台,无线应用
2.列举出JAVA中10个面向对象编程的术语
包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java.lang;
java.util;
java.io;
java.sql;
java.awt;
;
java.applet;
javax.swing
4.JAVA中的标识符有什么作用和特点
作用:
标识符用作给变量、类和方法命名
特点:
可以以字母、下划线“_”和”$”符开头
首字符外,可以跟上字母、下划线“_”和”$”符或数字
Java是大小写敏感的,标识符也不例外
5.JAVA中的关键字有什么特点,列举出至少20个关键字
Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword),所有关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字;
goto和const虽然从未被使用,但也作为Java关键字保留;
中一共有51个关键字:
abstractassertbooleanbreakbytecontinuecasecatchcharclassconstdoubledefaultdoextendselsefinalfloatforgotolongifimplementsimportnativenewnullinstanceofintinterfacepackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthiswhilevoidthrowthrowstransienttryvolatile
可分为简单数据类型和引用数据类型:
简单数据类型:
数值型(byte,short,int,long,floatdouble),字符型(char),布尔型(boolean);
引用数据类型:
类,接口,数组.
7.Error与Exception的区别
error表示恢复不是不可能但很困难的情况下的一种严重问题,比如说内存溢出,不可能指望程序能处理这样的情况;
exception表示一种设计或实现问题。
也就是说,它表示如果程序运行正常,从不会发生的情况。
error和exception的异同点:
相同点:
Error和Exception都继承自Throwable:
不同点:
Exceptions:
1.可以是可被控制(checked)或不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Errors
:
1.总是不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉
当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。
违反语义规则包括2种情况。
一种是Java类库内置的语义检查。
例如数组下标越界,会引发IndexOutOfBoundsException;
访问null的对象时会引发NullPointerException。
另一种情况就是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。
所有的异常都是java.lang.Thowable的子类。
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFORMatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。
java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
11.final,finally,finalize的区别
final成员:
说明该变量一旦初始化就不可改变,对基本类型来说是不能改变值,对对象来说是不能改变引用(但内容是可以变的,因为内容改变是对象变量的引用没变)。
其初始化可以在定义处或在构造函数中,两者只能选其一。
final方法:
1、说明这个方法不允许任何从此类继承的类来覆写这个方法,但仍然可以继承。
2、允许编译器将所有对此方法的调用转化为inline调用,它会在调用final方法时直接将方法主体插入到调用处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 笔试面试 复习笔记 rnxefe版本 笔试 面试 复习 笔记 rnxefe 版本