算是面试题, 写的不算工整.....

来源:互联网 发布:windows激活工具有哪些 编辑:程序博客网 时间:2024/04/29 06:05

1) cookie和session有什么区别?
① session在服务器, cookie是在客户端
② session默认是存在服务器中的一个文件里(不是内存)
③ session的运行依赖session id , 但是session id 存在cookie中,也就是说 ,如果浏览器禁用了cookie, 那么session也会失效
④ session可以放在文件, 数据库 , 或内存中, 都可以
⑤ 用户验证一般使用session
因此, 维持一个会话的核心就是session id
2) 说几个运行时异常? (尽量挑自己熟悉的)
① classnotfoundexception
② nullpointexception
③ arrayoutofboundsexception
④ nosuchexception
⑤ nosession的懒加载异常
3) 谈一谈你了解几种java设计模式?(挑自己熟悉的)
① 单例模式
② 装饰者模式
③ 代理模式
④ 工厂模式

4) ajax 怎么样实现同步或者怎么样实现异步?
$.ajax({
async:false 时为同步 , true 就是异步, 默认是true
})
5) Struts2 和 Springmvc的区别?
大概有三方面的区别:
① Struts2的入口是一个filter, 而Springmvc是servlet
② Springmvc是以方法为单位, 绑定参数绑定在形式参数上 , 可以多例也可以是单例
Struts2是以类为单位 , 绑定参数是绑定在类里 , 例如成员变量 , 只能是多例
③ Struts2保存数据是保存在值栈中 , 而Springmvc是保存在request域中
6)Hibernate与 Mybatis的区别?
hibernate的优势:
○ hibernate的DAO开发要比Mybatis简单, Mybatis需要sql映射
○ hibernate的数据库移植性好, Mybatis不好, 不同的数据库需要些不同的SQL语句
Mybatis的优势:
○ Mybatis可以进行更为细致的SQL优化 , 可以进行查询优化
○ Mybatis容易掌握, hibernate门槛高
7)Springmvc的工作流程?
首先 , 浏览器发出请求, 由前端控制器拦截, 交由处理器映射器解析, 找到对应的方法,
返回给前端控制器, 在找到处理器适配器 ,执行此方法, 返回ModelAndView 给前端控制器,
再找到视图解析器, 将view加载到内存中, view 对象最终返回html给前端控制器, 响应浏览器html
8) 谈一谈对mvc的理解?
m: model 通常模型对象负责数据库的存取数据
v : view 是应用数据中处理显示的部分
c : controller 是应用程序中负责用户交互的部分
小结: mvc 就是主要采用分层的思想 , 降低程序的耦合度
9)HIbernate的一级缓存说一下?
一级缓存 , 就是session级别的缓存
首先 hibernate的三种状态:
瞬时态: 没有与session关联 , 一般就是直接new 创建的对象
持久态: 已经与session关联, 并且事务还未提交
托管态:存在OID标识 ,但没有与session关联 ,托管态改变,hibernate不能检测到

对象之间状态的改变:瞬态对象 -- 通过new关键字获取    瞬时 -- 持久 : save saveOrUpdate(都是通过session获取的方法)    瞬时 -- 托管 : 对象.setId(1) , 给瞬时对象设置新的OID持久化对象 --  通过get/load 或Query查询获取    持久 -- 瞬时 : delete    持久 -- 托管 : close(关闭session , 清除一级缓存)          clear(清除一级缓存所有对象)托管对象: 无法直接获取    托管 -- 瞬时 对象.setId(null) : 删除对象OID    托管 -- 持久 : update . saveOrUpdate . lock

session中的一级缓存
hibernate向一级缓存放入数据时 , 同时保存快照数据, 当修改一级缓存的时候, 在flush操作时 , 对比缓存和快照, 如果不一致 , 自动更新

10) Spring的事务管理说一下?
Spring的事务 , 可以说是SpringAOP的一种实现
AOP面向切面编程 , 即是在不改变源码的情况下 , 对原有的功能进行增强, 通过代理类来对具体类进行操作
Spring是一个容器, 通过Spring这个容器来对对象进行管理, 根据配置文件来实现Spring对对象的管理
Spring的事务有两种 , 编程式和声明式 , Spring主要是通过声明式的方式对事务进行管理, 就是在配置文件中进行声明 , 通过AOP将事务切面切入程序 ,最大的好处就是大大减少了代码量