面试题汇总1

注明:如有雷同,不胜荣幸!
1、乐观锁 悲观锁
2、hibernate中如何产生session
3、什么是servlet?action又是什么?
4、hibernate用一个大词来形容一下?
5、ORM是什么意思?全拼是什么?
6、java的特点用一个大词来形容?
7、XML你是怎么读取的?为什么这么用?
8、框架里有没有脱离struts来实现过?用的什么方法来实现?
9、你的兴趣有哪些?除了java外还有了解过什么语言没有?


tomcat中怎么对项目进行性能优化?
如果想要Tomcat达到最优的效果,首先要争取使得操作系统以及网络资源达到最优,并且最好使用高版本的JDK。对于有大量静态页面的系统,采用Apache集成Tomcat的方式,把静态页面交由Apache处理,动态部分交由Tomcat处理,能极大解放Tomcat的处理能力。使用ARP库也能极大的提高Tomcat对静态文件的处理能力。对于并发要求较高的系统,采用Apache加Tomcat集群的方式,将负载分别分担到多个Tomcat上,能很大的提高系统的性能,充分利用硬件资源。同时需要对Tomcat自身进行优化,包括增大内存、调节并发线程数等。

何时使用重写?何时使用重载
重写在于子类覆盖父类方法时体现,主要是为达到子类自身结果的不同
重载在于一个类中有多个相同方法,但是参数的个数、类型不同

重写equals方法时需要注意什么?
1、使用==操作符检查“实参是否为指向对象的一个引用”。
2. 使用instanceof操作符检查“实参是否为正确的类型”。
3. 把实参转换到正确的类型。
4. 对于该类中每一个“关键”域,检查实参中的域与当前对象中对应的域值是否匹配

equals和hashCode方法的关系?
只是为了维护 hashCode 方法的常规协定,才要求用equals比较的两个对象的hashCode相同.
hashCode()的值也是与内存地址相关的.所以仅当内存地址相等时,hashCode才相等
equals()和hashCode()都来自java.lang.Object

死锁如何产生的?
1、互斥条件:一个资源每次只能被一个进程使用。
2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3、不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。


异常分类,如何捕获?
Throwable所有错误的超类,他下面有两个子类:error和Exception。
error代表系统级的错误能捕获,但是不能处理。
Exception代表异常主要出自于程序,可以捕获也能处理。Exception有分为两类:编译期异常、运行期异常。


50、说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别
ArrayList Vector:以数组的方式存储,增、删慢,查、改快
ArrayList:线程不安全,速度快
Vector:线程安全,速度慢(synchoronized)
LikedList: 以单链表的方式存储,增、删快,查、改慢

HashMap与Hashtable都实现的Map接口,HashTable线程安全,HashMap线程不安全。
最大区别在于:HashTable不允许键值为空,HashMap允许键值为空


java中实现多态的机制是什么?
静态的多态:方法名相同,参数个数或类型不相同。(overloading)
动态的多态:
子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法
实现接口的实例传与接口的引用调用的实现类的方法。


数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length这个属性
String有length()这个方法.


编程题: 写一个Singleton出来


JDBC中的核心类及其作用是什么?
DriverManager
Class.forName();
DriverManager.openConnection(“”,”sa”,””)
Connection
PreparedStatement(Statement)
ResultSet rs=executeQuery() dql
While(rs.next())
{

}
executeUpdate()


Servlet的体系结构是什么?
Servlet
GenericServlet
HttpServlet
自定义

Servlet的生命周期是什么?
?init()方法: 实例化servlet调用;
?service()方法:客户请求和响应调用该方法;
?destroy()方法:关闭Web服务器调用。


描述JSP和Servlet的区别、共同点、各自应用的范围
Jsp主要在于页面的显示动态生成页面,可以与html标记一起使用,其还是要生成为一个servlet。
Servlet:主要是控制的处理,如调用业务层,跳转不同的jsp页面

描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。

Servlet中的核心类有那些,各有什么特点?
ServletContext:容器,放置全局变量
setAtribute()
getAttribute()
ServletConfig:一个servlet的配置
getInitParameter(”名称”)
HttpServletRequest:封装的所有的请求
getParameterValue(”名称”)
getParameterValues(”称”)
getSession();
getAttribute(” 名称”);
getRequestDispatch(”a.jsp”).forward(request,response)
HttpServletResponse:响应
getOut();
sendRedirect(””)
HttpSession:一个用户多个页面共享同一变量
setAttribute(””,””)

hibernate的核心配置文件是什么及其作用?
Hibernate.cfg.xml:数据库连接、指定相关的映射文件
*.hbm.xml:具体的o/r mapping说明

关联:
one-to-many
inverse:主控方,外键的关系有谁控制
inverse=false 是主控方,外键是由它控制的
inverse=true 是被控方,外键与它没关系
要想实现主控方的控制必须将被控方作为主控方的属性
cascade:级联
主表增从表增
主表修从表修
主表删从表删
lazy:延迟
lazy=false:一下将所有的内容取出,不延时(常用)
lazy=true:取出部分内容,其余内容动态去取
通过get可以取出对方的所有内容

请说出struts框架的几大组件?
1、MVC
2、标签库
3、校验框架
4、国际化
5、tiles

Struts的处理请求的全过程是什么?
url-> ActionServlet(process)-> RequestProcessor(process)->实例化form ->填充form值->进行校验->实例化action->调用execute

Spring和Struts的区别?
strusts:是一种基于MVC模式的一个web层的处理。
Spring:提供了通用的服务,ioc/di aop,关心的不仅仅web层,应当j2ee整体的一个服务,可以很容易融合不同的技术struts hibernate ibatis ejb remote springJDBC springMVC

spring中的核心类有那些,各有什么作用?
BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

ApplicationContext的作用
beanFactory
国际化(getMesage)
资源管理:可以直接读取一个文件的内容(getResource)
加入web框架中(加入一个servlet或监听器)
事件处理

spring的jdbc与传统的jdbc有什么区别,其核心类有那些?
Spring的jdbc:节省代码,不管连接(Connection),不管事务、不管异常、不管关闭(con.close() ps.close )

JdbcTemplate(dataSource):增、删、改、查
TransactionTemplate(transactionManager):进行事务处理

实现ejb几个接口,几个类?
两个接口一个类
extends EJBHome
通过jndi得到home接口
create方法调用服务端的ejbCreate方法,在服务端产生一个EntityBean或SessionBean实例,向客户端返回一个远程接口。
通过find方法在从服务端找到一个EntityBean实例,向客户端返回一个远程接口。
extends EJBObject
在客户端通过rmi调用远程服务端方法。
通过remove方法调用服务端的ejbRemove方法,将EnityBean删除
implements SessionBean
在服务端实现真正的处理,实现核心业务


什么是Web Service?
Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
使用的技术:
HTTP、XML、SOAP(简单对象访问协议)、WSDL
优点:
跨平台、跨语言、跨系统
SOAP协议:
SOAP协议(Simple Object Access Protocal,简单对象访问协议)
Tcp/ip?http->soap,soap 通过xml文件传送信息
缺点:
(1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
(2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。

什么是Web容器?
实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.
就是在tomcat、weblogic下运行jsp、servlet、struts

J2EE是什么?
J2EE 是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型 (enterpriese application model).

死锁
? 任何多线程应用程序都有死锁风险。死锁很少发生,但一旦发生就很难调试。
? 死锁的最简单情形是:线程 A 持有对象 X 的独占锁,并且在等待对象 Y 的锁,而线程 B 持有对象 Y 的独占锁,却在等待对象 X 的锁

线程的状态:
Java中的线程有四种状态分别是:运行、就绪、挂起、结束

线程总结:
?多线程允许程序员编写可最大程度利用CPU 的高效程序。
?Java 程序启动时,一个线程立刻运行,该线程称为主线程。
?可通过两种方式创建线程:继承Thread类、实现Runnable 接口。
?同步是用于确保资源一次只能被一个线程使用的过程。
?wait-notify机制用来处理线程间通信

java连接到不同数据库
Oracle
String url="jdbc:oracle:thin:@localhost:1521:orcl";
DB2
String url="jdbc:db2://localhost:5000/sample";
Sql Server
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
MySQL
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"


------------------Struts1的工作原理?------------------
在Struts中,用户的请求一般以*.do作为请求服务名,所有的请求均被指向ActionServlet,ActionServlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的ActionForm,并将此ActionForm传至指定的Action中,由Action完成相应的业务操作
struts-config.xml


------------------struts2的执行流程------------------
struts2的组成:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件
基本简要流程如下:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。


------------------hibernate工作原理------------------
xx.hbm.xml HibernateSessionFactory.java
hibernate.cfg.xml
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计

------------------spring工作原理------------------
applicationContext.xml BeanFactory
1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。

内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。
Spring工作原理还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。

------------------Struts1的优缺点?------------------
优点:开源;表现与逻辑分离;MVC框架,验证框架
缺点:大量的标签;ActionForms使用不便,无法进行单元测试

------------------hibernate事务处理------------------
1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。
2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。
3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。

------------------hibernate缓存机制------------------
一级缓存:
Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。
每个Session 都有自己独立的缓存,且只能被当前工作单元访问。
二级缓存:
SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。
SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。


------------------IOC控制反转------------------
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean


------------------AOP面向切面编程------------------
什么是AOP
面向切面编程。允许通过分离应用业务逻辑与系统服务进行内聚性的并发,应用对象只实现自己应完成的业务逻辑。
好处是可以简化目标指向语言系统开发的代码。
缺点是,如果管理不当,反而会让代码混乱,难于理解
代理的两种方式:
静态代理:
◆针对每个具体类分别编写代理类;
◆针对一个接口编写一个代理类;
动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
2.AOP的主要原理:动态代理


------------------依赖注入DI------------------
我的理解(设有A、B两个类)
依赖:一个类(A)对另一个类(B)的依赖,也就是一个类需要调用到另一个类
注入:把另一个类(B)注入到类(A)中,以供A使用,不再像以前那样在A类中
new出B类,解了耦合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值