广东深圳中软资源技术服务有限公司 JAVA 笔试及面试真试题
笔试试题
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方
面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两
个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性, 新
类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那
里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个
基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护
的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问
题。
2、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率
节省空间,我们应该用StringBuffer类
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,
Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不
同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用
类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值
为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字
符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字
符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以
使用StringBuffers来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇
到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,
但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service
方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的
时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例
可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成
后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector,
LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和
插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,
所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上
较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍
历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和
StatelessBean的区别。
EJB包括Session Bean、Entity
Bean、Message
Driven
Bean,基于JNDI、RMI、JAT
等技术实现。
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其
他EJB组件。EntityBean被用来代表应用系统中用到的数据。
对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象
视图,或是一个由现有企业应用程序实现的实体。
Session
Bean
还
可
以
再
细
分
为 Stateful
Session
Bean 与 Stateless
Session
Bean ,这两种的 Session
Bean都
可以将系统逻辑放在 method之中执行,不同的是 Stateful
Session
Bean 可以记录呼叫者
的状态,因此通常来说,一个使用者会有一个相对应的 Stateful
Session
Bean 的实体。
Stateless
Session
Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说
当 使 用 者 呼 叫 Stateless
Session
Bean 的 时 候 , EJB
Container 并 不 会 找 寻 特 定
的 Stateless
Session
Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行
某个 Stateless
Session
Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。
从 内 存 方 面 来 看 , Stateful
Session
Bean 与 Stateless
Session
Bean 比
较 , Stateful
Session
Bean 会 消 耗 J2EE
Server 较 多 的 内 存 , 然
而 Stateful
Session Bean 的优势却在于他可以维持使用者的状态。
9、Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、
线程安全化等操作。
10、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
面试试题
1题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应
该输出为“我ABC”而不是“我ABC+汉的半个”。
2题:请使用任意一例排序算法,对Integer[] inteArr={5,9,1,4,1,2,6,3,8,0,7}进行排序;
3题:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1;
4题:以面向对象的思想写出一个javascript函数(比如:有学生对象,有姓名,年龄,学号等);
5:写出uinx和Linux的常用命令;
6:采用单例模式,把文件contxt.properties中的内容转化为键值对的java对象;
addr=192.168.1.11;
poprt=8080;
username=jason;
pwd=123456;
数据库题目:
有三张表,学生(学生编号,学生姓名,性别);课程表(课程编号,课程名称);成绩表(学
生编号,课程编号,成绩);
1:查询课程名称为数字的所有学生的姓名,成绩,并按降序排序;
2: 课程名称为英语,查询出该课程男生,女生的平均分和最高分;