java⾯试考试题
Java程序员⾯试考题
⼀.简述题
1.简述Overload和Override的区别
1>重载是指⼀个类中提供多个同名不同参数列表的⽅法
2>重写是指在继承关系中或接⼝与实现类的关系,⼦类中重新定义与⽗类
同名,同参数,同返回类型的⽅法
3>对于重载需注意的是:⽅法的返回类型不是区分重载的条件;
重写需注意的是:访问修饰符不能变⼩,不能抛出更多及更⼤范围的异常;
Final修饰的⽅法不能被重写
2.简述抽象类和接⼝的区别
1>抽象类中可以提供构造⽅法;接⼝中不存在构造⽅法
2>有抽象⽅法的类必定是抽象类,抽象类中可以没有抽象⽅法;
3>抽象类是单继承,接⼝可以多继承
4>接⼝与抽象类都不能创建对象
3.讲述Java的设计模式?编写singleton(单例)模式?
设计模式(Design pattern)是代码设计经验的总结;程序中采⽤设计模式, 代码能更容易被他⼈理解、保证代码可靠性,提⾼了代码的重⽤性
Java中提供了23种设计模式,⼯⼚模式,单例模式,代理模式这些都是常⽤的设计模式
public class Demo {
//饿汉式;懒汉式
private Demo(){ }
// static Demo instance = new Demo();
static Demo instance = null;
public static Demo getInstance(){
if(instance == null){
instance = new Demo();
}
return instance;
}
}
4.HashMap和Hashtable的区别;
1>HashMap允许空键和空值;Hashtable不允许存储空键和空值;
2>HashMap是线程⾮安全的;Hashtable是线程安全的;
3>HashMap的数据存取效率⾼于Hashtable
List与Set的区别;
List可以存储重复数据;是有序的
Set是⽆序的,不能存储重复数据
5.final, finally, finalize的区别
final: 可能修饰类,final类不能被继承(没有⼦类) ;final可以修饰⽅法,final ⽅法不能被重写 ;final可以修饰属性,fnal属性必须赋初值且不能更改,final 属性称为常量
finally: 修饰代码块,通常与try,catch块配合使⽤,finally代码块始终都被执⾏ ;所以finally块中经常编写⽤于释放资源的代码finalize :Object类中的⼀个⽅法 ;称之为 :构析⽅法 ;
垃圾收集器在回收资源前就⾃动调⽤构析⽅法 ;
所以说如果需要在垃圾收集器回收资源前执⾏相关的操作 ;
此时可以将这些操作放在构析⽅法中完成
java中常用的设计模式有哪些
补充 :Java垃圾回收的理解
当某个对象指向空引⽤或者该对象长期空闲,该对象就具备了
资源回收的条件;⾄于垃圾回收集是否释放该资源这个是由系统
确定的;
如果垃圾回收器回收mike对象,此时就会调⽤mike所对应的类
中的finalize()
程序员可以通过执⾏:()或()通知垃圾回收集去回
收资源,但是资源是否被回收,这点是由系统决定的
6.String与StringBuffer的区别?
String是final修饰的,其内容是不能改变的;StringBuffer其内容是可以改变的; StringBuffer内容是可以动态改变的;
⽐如 :String s = ‘abc’ ;s+’hello’ ; s== ??
S的值是’abchello’了,这样s的内容发⽣了改变,请解释原因
如果通过字符串拼接,此时改变是字符串的拷贝,字符串本⾝的内容并不会
改变;
StringBuffer⽤在什么地⽅?
⽐如开发项⽬可以⽤StringBuffer做sql语句的拼接
7.描述Oracle体系结构
Oralce服务器:
数据库:
物理结构: 1.数据⽂件 2.⽇志⽂件 3.控制⽂件
逻辑结构: 表空间→段→区间→块
数据库实例:
内存空间:
SGA(系统全局区)
共享池:进⾏sql的编译和通过编译sql语句的存储
⽇志缓冲区:
数据缓冲区:
PGA(程序全局区):⽤于存储客户端与服务器通信过程的数
据
进程:
服务器进程;后台进程;⽤户进程
8.编写Oracle数据分页语句
select * from (select rownum rn,stu.* from stu where rownum<=(当前页*每页的记录) e >(当前页-1)*每页的记录Union与Union all的区别?
Union与Union all⽤于合并多条查询语句的结果集;
UNION系统会⾃动将重复的记录去掉,如果要保留重
复记录则就⽤UNION ALL
9.JSP有哪些内置对象?其对应的类型分别是什么?
request→HttpServletRequest
response→HttpServletResponse
session--->HttpSession
application→ServletContext
config→ServletConfig
page-→Object
pageContext-→PageContext
exception-→Exception
out---→JspWriter
10.JSP有哪些动作?作⽤分别是什么?
:创建⼀个JavaBean对象
:⽤于设置JavaBean对象属性的值
:⽤于获取JavaBean对象指定的属性值
:⽤于包含指定的页⾯
:⽤于实现资源的转发
11.JSP中INCLUDE指令(静态包含)与INCLUDE动作(动态包含)的区别?
1>动作:页⾯及被包含页⾯都会转化成Java⽂件进⾏编译
指令: 只有当前页⾯转化成Java⽂件进⾏编译
2>指令是在编译阶段进⾏的内容合并;动作是在字节码执⾏后进⾏的结果
合并
12.重定向与转发的区别
1>转发地址栏不变,重定向地址栏变成⽬标资源的地址
2>转发只能在同⼀服务器内部跳转;重定向可以在服务器间进⾏跳转
3>转发不会产⽣新的请求,重定向产⽣新的请求
13.简述xml解析⽅式及区别?
xml解析的⽅式: DOM,SAX
DOM:解析时将整个xml⽂档载⼊内存中(dom树);这种⽅式是可读可写的;
由于是将整个⽂档载⼊内存中,所以对⼀些⼤型的xml⽂档,这
种⽅式是不可取的;
SAX:基于事件驱动的解析⽅式;也就是说解析器遇到⽂档的开始,结束;
元素的开始,结束以及元素内容时,都会产⽣相对应的事件;那么
就处理器根据事件调⽤相对应的函数,从⽽在对应的函数体中获取相
关的内容;SAX⽅式只能获取xml⽂档的内容,不能操作xml⽂件14.描述Spring的模块组成及每个模块的主要功能(简述Spring框架)?
Spring 是⼀个提供了IOC容器及AOP容器的框加;整个框架由七⼤模块组成;
Core:是核⼼模块,主要提供了控制反转,依赖注⼊从⽽降低耦合;
AOP:⾯向切⾯开发;在项⽬中使⽤AOP可以实现系统权限控制及事务管理
Web:内置像servlet,filte,listener这样的web组件;同时可以实现Spring与Struts等MVC组件的整合
DAO:主要实现了对JDBC及ORM框架相关操作的封装
MVC:Spring本⾝提供的⼀种MVC实现
Context:内置了⼀些企业级的组件;例如:上下⽂,国际化解决⽅案等
ORM: 内置了ORM的实现;允许Spring中插⼊ORM组件
15.描述Spring的⼯作原理?(描述Spring的运⾏机制?;描述IOC运⾏机制?)
IOC容器解析Spring的配置⽂件;将Spring的配置⽂件信息保存到Map 中(bean元素的id属性做为map的key,bean元素的class属性做为Map的value);然后遍历Map;通过反射机制从⽽创建相关的对象;然后通过注⼊通道,将创建的对象进⾏注⼊
( Spring的运⾏过程采⽤了⼯⼚模式,代理模式和反射机制)
16.你们公司⽤什么浏览器调试程序?
项⽬中我们都使⽤⽕狐浏览器来调试程序;因为该浏览器带调试功能,按”F12”就出现详细的清单;⽅便我们快速定位
17.讲述Hibernate的运⾏流程?(讲述Hibernate原理?)
1.创建Configuration对象; Configuration对象调⽤configurate()⽅法来
解析hibernate配置⽂件;
2.Configurate对象调⽤buildSessionFactory()⽅法,得到SessionFactory对
象
3.SessionFactory对象调⽤openSession()⽅法获取Session对象
4.通过Session对象调应对应的⽅法完成数据的操作
5.关闭Session
Hibernate对象的三种状态?
临时状态; 持久状态; 游离状态
18.讲述数据库中的连接查询?
连接查询分为:
内连接:查询符合连接条件的记录
外连接(左外连接;右外连接)
左外连接:
select * from dept left join emp on dept.id=emp.deptid;
左边的表是主表;执⾏查询时会显⽰符合连接条件的记录及主
表中的所有的记录
select * from emp right join dept on dept.id=emp.deptid;
右外连接:右边的表是主表;查询时会显⽰符合连接条件的记录及主
表中的所有的记录
19.你还了解其他数据库吗?讲述Oracle与MySQL的区别?
项⽬中我们通常使⽤的Oracle,有些⼩项⽬也使⽤了mysql数据库;
体系结构是不⼀样的;其实sql操作都差不多,当然也有⼀些细⼩的区别
⽐如:在主键⽣成⽅式中,Oracle使⽤的是序列,Mysql使⽤的是auto_incrment; 再⽐如说:分页oracle使⽤rownum,mysql使⽤limit;
20.讲述的Hibernate的缓存?
缓存其作⽤是减少程序与DB的通信,从⽽提⾼程序的执⾏效率;
Hibernate有两种级别的级存;
1>⼀级缓存(Session);
2>⼆级缓存(SessionFactory)
⼀级缓存是Hibernate⾃带并实现的,该缓存的⽣命周期相对较短;⼀旦session关闭了,就⽆法缓存数据
⼆级缓存⽣命周期相对较长;Hibernate的⼆级缓存采⽤了第三⽅的缓存组件;如:OSCache,EHCache;
在项⽬对于⼀些相对静态的数据也就是经常不变的数据,没必要每次都从数据库中加载,像这样的数据可以将其存放在缓存中,这样就可以提⾼程序的执⾏效率;
21.讲述数据连接池的⼯作机制?
连接池是服务器内部⽤于存储连接对象的容器,;在服务器启动时,我们可以通过服务器内部配置的数据源,让服务器在启动时建⽴若⼲个与数据库连接的对象;
程序在执⾏过程中,如需要操作数据库,就可以从连接池中获取连接使⽤, ⽤完了将其归还⾄连接池中,这样⽬的是为了提⾼效率;因为程序与数据库建⽴物理连接相对耗时;
22.如何提⾼海量查询的速度?
当⼀个表中的数据量⽐较⼤时,此时数据的查询速度就会⽐较慢;对于海量数据表我们可以采⽤以下⽅式来提⾼查询的效率:
1>表的设计要规范,要合理(三范式)
2>可以对表进⾏分割(分区)
范围分区
create table emp(
id number primary key,
name varchar2(30),
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论