搜档网
当前位置:搜档网 › java笔试题(应届生)

java笔试题(应届生)

1、多态,就是重载和重写.重载发生在一个类中.重写发生在子类,意思就是子类重写父类相同名称的方法.
重载的特性:方法名相同.返回类型,传入方法的参数不同(包括个数和类型).
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现,
补充:方法重载
重载是指在同一个类中允许有重名的方法存在,但方法的参数必须不同。
参数不同是指参数的个数不同或参数的类型不同或参数的顺序不同。
不能用方法的返回类型来决定方法的重载.
重载经常用于构造方法。
重写的特性:方法名相同,返回类型,参数均相同,必须发生在子类.
?成员变量、静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。

2、泛型
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型的规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如。习惯上称为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class classType = Class.forName("https://www.sodocs.net/doc/252196815.html,ng.String");
3、Collection 和 Collections的区别
答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
4、描述一下JVM加载class文件的原理机制?
答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是
一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

5、J2EE是技术还是平台还是框架?
答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。

6、构造器Constructor是否可以被override?
答:构造器(override)不能被继承,因此不能重写overriding,但是可以被重载overloading。
7、当一个对象作为参数传递给一个方法后,此方法可以改变这个对象的属性,并可以返回变化后的结果,
那么这里到底是值的传递还是引用传递?
答:是值得传递。
java语言中只有值传递参数,对一个对象实例作为一个参数被传递到方法中时,
参数的值就是对该对象的引用,对象的内容可以在被调用的方法中改变,但对象的

引用是永远改变不了的。
8、char型变量中能不能存贮一个中文汉字?为什么:
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占2个字节,所以放一个中文是没问题的。
9、谈谈final, finally, finalize的区别:
答:final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,
可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,
而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重写(override)
finally:在异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,
那么相匹配的 catch 子句就会执行,然后控制就会进入 finally块(如果有的话)。
finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,
因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作,如文件关闭。
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
10、GC是什么?为什么要有GC?
答:GC是垃圾回收的意思(gabage collection),内存处理器是编程人员容易出现问题的地方,
忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的GC功能可以自动监测
对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的显示操作方法。
11、assert什么时候使用?
答:assertion(断 言)在软件开发中使用中常见的调试方式,很多编程语言中都支持这种机制,
在实现中,assertion就是在程序中的一条语句,他对一个 boolean表达式进行检查,一个正确的程序
必须保证这个boolean表达式的值是true。如果该值为false,说明该程序已经处于不正确的状态了,
系统将给出警 告或者退出。一般来说assertion用来保证程序最基本、关键的正确性,assertion检查通常在开发和测试时启动,
为了提高效率,在软件发布 后,assertion检查通常是关闭的。
12、基本的数据类型
答:8种基本数据类型 byte,int,long,double,char,boolean,float,short
String不是基本数据类型,https://www.sodocs.net/doc/252196815.html,ng.String是final类,因此不能修改这个类,不能继承这个类。
为了节省空间,提高效率我们应该用StringBuffer。
13、面向对象的特点
答:抽象、继承、封装和多态
a、抽

象是或略一个主题中与当前目标的无关的因素,一边充分考虑有关的内容。抽象并不能解决目标中所有的问题,
只能选择其中的一部分,忽略其他的部分。抽象包含两个方面:一是过程抽象;一是数据抽象。
b、继 承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法。
对象的一个新类可以从现有的类中派生,这叫做类的继承。新类继承了原始类的 特性,新类称为原始类的派生类或者是子类,
原始类称为新类的基类或者父类。子类可以从父类那里继承父类的方法和实现变量,并却允许新类增加和修改新的方法 使之满足需求。
c、封装就是把过程和数据包围起来。对数据的访问只是允许通过已经定义好的界面。面向对象就是基于这个概念,
即现实世界可以描述为一系列完全自治,封装的对象,这些对象通过固定受保护的接口访问其他对象。
d、多态性是指不同类的对象对同一个请求作出相应。多态性包括参数多态和包含多态。多态性语言具有灵活、抽象、
行为共享、代码共享的优势。很好的解决了应用程序中同名的问题。

14、Static Nested Class和Inner Class的不同,说的越多越好 ***一个外部类的final属性,一定要赋初值**
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。
而通常的内部类需要在外部类实例化后才能实例化. ***内部类中final变量一定要赋初值***
静态内部类(Static Nested Class)实例化Inner inner = new Outter.Inner();
Inner Class实例化 Outter outter = new Outter();Inner inner = outter.new Inner();

15、抽象类和接口有什么区别,它们中的属性和方法 的特点是什么?
答: 1、声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,
并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,
其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
2、接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,
除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程

序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
16、xml有哪些解析技术?区别是什么?
答:有DOM,SAX,STAX等
DOM: 处理大型文件是其性能下降的非常厉害,这个问题是由DOM的树结构造成的,这种结构占用的内存较多,
而且DOM必须在解析文件之前把整个文档装入内存,适合对xml的随机访问,sax:不同于DOM,SAX是事件驱动型的
xml解析方式,他顺序的读取xml文件,不需要自已全部装载正文件,当遇到文档开头,文档结束,
或者标签开始与标签结束时,他会触发一个事件,用于通过在其回调事件中写入处理代码来处理xml文件,适合对xml的顺序访问。
Stax:Streaming API for xml(Stax)。

17、Class.forName的作用是什么?为什么要用?
答:Class.forName(xxx.xx.xx) 返回的是一个类
Class.forName(xxx.xx.xx)的作用是要求JVM 查找并加载指定的类,也就是说JVM会执行该类的静态代码段动态加载和创建Class对象
newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
这样分步的好处是显而易见的。我们可以在调用Class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造
18、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别:
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
19、servlet的生命周期
答:web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。
通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
数字servlet配置了这个参数时,web应用服务启动时调用该servlet的init方法
否则,当第一次被访问时才调用.正常关闭web应用时才调用destroy()
20、forward 和redirect的区别
答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来


然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才
请求的所有参数重新请求,所以session,request参数都可以获取。
forward发送,request中的参数能得到。
21、JSP中动态INCLUDE与静态INCLUDE的区别?
答:动态INCLUDE用jsp:include动作实现 它总是会检查所含
文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
22、java native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言
直接操纵计算机硬件时要声明为native方法。
java中,通过JNI(Java Native Interface,java本地接口)来实现本地化。
native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。
因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于接口方法。
Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
java的不足除了体现在速度上要比传统的C++慢许多之外,java无法直接访问到操作系统底层(如系统硬件),为此java
使用native方法来扩展java程序的功能
23、jsp和servlet有哪些相同点和不同点?他们之间的联系是什么?
答:jsp 是servlet技术的扩展,本质上是servlet的简易方式,强调应用的表现和表达,
jsp编译后是“类servlet”,servlet和jsp最主要的不同点在于,servlet的应用逻辑
是在java文件中,并且完全从表示层中的html里分离出来,而jsp的情况是java和html可以
组合成一个扩展名为.jsp的文件,jsp侧重于视图,servlet主要用于控制逻辑。
24、存储过程和函数的区别:
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,
用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回
某种类型的值并且不涉及特定用户表。
25、java私有方法的访问(不同类中)
1)一般的私有方法 如:类 A中有 private void say(int a){} private int age = 2;
A a = new A();Class aa = Class.forName("包名.A");
Method method = aa.getDeclaredMethod("said",int.class); //没参数时,aa.getDeclaredMethod("said");
method.setAccessible(true);
method.invoke(a, 3); //没参数时,method.invoke(a);a是一个对象
2)私有类方法 如:类 A中有 private static void say(int a){}
前面同上
区别:method.invoke

(aa, 3); //没参数时,method.invoke(aa);(aa是一个类)这里a和aa都行.
3)私有属性访问一样
Field age = aa.getDeclaredField("age");
System.out.println(age.isAccessible()); //false
age.setAccessible(true);
age.setInt(a, 5);
System.out.println(age.getInt(a)); //5
4)getMethods()得到所有的public方法包括继承的和自身声明的
getDeclaredMethods()得到所有的方法 只包括自身声明的所有方法

26、XML解析
DOM解析:
String a = "abc";String b = "a"+"bc"; a==b true
String c = "a" + new String("bc"); a==b false
int y =1;
y=y+++y+++y+++y; y=10 <=>y=(y++)+(y++)+y+++y;
y+=y+++y+++y+++y; y=11
System.out.println(2+3); //5 System.out.println("1" +2+3); //123 System.out.println(2+3+"1"); //51
InputStream 从文件中读入内容到程序中。
OutputStream 把内容写入到文件中
Session 通常存放客户端的状态信息,存放的内容放在web服务器的硬盘上,生存期只是本次会话,会话结束后,该内容也消失
Cookie 把客户信息存放在客户端硬盘上,根据设置的生命周期而定。若没有设置,关闭浏览器后Cookie中存放的信息就丢失
<%! %>JSP声明中不能使用jsp内置对象
研究一下:游标,触发器,存储过程
Java 关键字:
abstract assert boolean break byte case catch char class const continue default do, double else enum extends
false final finally float for goto if implements import instanceof int interface long native new null package
private protected public return short static strictfp super switch
synchronized this throw throws transient true try void volatile while
Java 的8种基本数据类型
byte 一个字节 -128~127
short 2 -32768~32767
int 4 -2147483648~2147483647
long 8
float 4
double 8
char 2
boolean 1 1字节( byte )=8位(bit) ; 1KB = 1024 byte
Java 注释
单行注释 //
多行注释 /* */
文档注释 /** */
Java 命名标识符的规则
1、区分大小写、标识符长度不限。
2、英文、中文、韩文、数字、下划线、美元符号($)均可用,但不能以数字开头。
3、不能使用Java关键字,例如:class void System等
4、标识符不能包含空格
Java 语言的8种基本数据类型中7种都可以看作是数值类型,我们知道对于数值类型的转换有一个规律:
从窄范围转化成宽范围能够自动类型转换,反之则必须强制转换。
例如: int b = 1000; long a = b;
long a =1000L;int b = (int)a;
补充:
原码:将最高位做为符号位,0表示正,1表示负,其余各位为数据位
反码:一个数为正数,则反码和原码相同。为负则符号位为1其余各位对原码取反
补码:一个数为正数,则原码、反码、补码相同,为负则符号位为1,其余各位对原码取反后加

1.
int a=222 ;在内存中占32位
00000000000000000000000011011110
转为byte后,只保右八位,结果为:
11011110
高位为1说明为负数,(负数在系统中以补码形式存在)
11011110 (为补码)补码转为原码(符号位不变,各位取反加1)结果如下:
10100010(为原码)十进制-34
Java 面向对象
1、在静态方法里, 类的成员变量不能直接使用,一定要实例化类的对象,通过对象才可以使用成员变量。
类的成员变量,可以不赋初值,系统会根据成员变量的类型自动为成员变量赋初值,引用类型的成员变量初值为null。
2、局部变量一定要赋初值,才可使用。局部变量前没有权限修饰符。
3、类变量(静态变量)
用static关键字修饰的变量变为类变量。static修饰的方法和属性,可以用类名直接去调用。
方法重载
重载是指在同一个类中允许有重名的方法存在,但方法的参数必须不同。
参数不同是指参数的个数不同或参数的类型不同或参数的顺序不同。
不能用方法的返回类型来决定方法的重载.
重载经常用于构造方法。
继承
JAVA中子类会继承父类所有的非私有的属性和方法.
(1)静态实例块(加载类时执行) (2)实例块(创建对象前执行,为为创建对象不执行) (3)main(){第一句;} (4)创建对象(执行构造器)
执行顺序:(1)(3)(2)(4)
Cloneable 接口的应用
它实际上是一个空接口,即: public interface Cloneable{}
一个类支持clone,需要实现Cloneable接口
在API中推荐,完善这个接口的类需要覆盖Object.clone()方法,才可以对对象进行复制。
覆盖代码如下:
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
SomeClass sc = new SomeClass();
SomeClass sc2 = sc; //sc2引用sc 引用相同的地址 对其中一个改变,会影响另外一个改变
浅复制 深复制
浅复制 protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
深复制
SomeClass 类中的属性为:OtherClass oc;
protected Object clone() throws CloneNotSupportedException {
OtherClass oc1 = oc.clone();
SomeClass sc = new SomeClass(oc1);
return sc;
}
两个数组合并:
int[] l = new int[a.length+b.length];
System.arraycopy(b, 0, l, 0, b.length);
System.arraycopy(a, 0, l, b.length, a.length);
一, 判空(null), 只要有一个是空的, 则返回另外一个
二, 新建数组, 长度等于两个数组长度之和
三, 复制数组, 可用System.arrayCopy()进行
实现接口中的抽象方法时,方法名必须相同,还必须要public修饰符
一个接口可以继承多个接口。
Struts 是基于MVC模式的表示层框架。
strut

s2 dojo 是ajax的框架
System.out.println("a.c".replaceAll(".", "e")); 输出 eee
网络:
A类ip地址:0~126 B类ip地址:128~191 C类ip地址:192~223 D类ip地址:224~239 第一个字节以“1110”开始
OpenSSL为网络通信提供安全及数据完整性的一种安全协议
URI 统一资源标识符
长连接,指在一个连接上可以连续发送多个数据包,然后断开连接,在连接保持期间,如果没有数据包发送,
需要双方发链路检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开
此连接,即每次连接只完成一项业务的发送。
计算机网络的拓扑结构取决于什么?B
A资源子网B通信子网C路由器
主关键字(primary key)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。
作用:1)保证实体的完整性;2)加快数据库的操作速度3) 在表中添加新记录时,ACCESS会自动检查
新记录的主键值,不允许该值与其他记录的主键值重复。
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
外键:关系模式R中的某属性集不是R的主键,而是另一个关系R1的主键则该属性集是关系模式R的外键
外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
数据库分区是一种物理数据库设计技术。分区主要有两种形式:水平分区 是对表的行进行分区 垂直分区

相关主题