1. 你认为项目中最重要的过程是那些?
分析设计阶段 尽量找出进度的优先级
2. 如果给你一个 4-6 人的 team, 怎么分配?
挑选一技术过硬的人作为我的替补其它人平均分配任务, 每周进行全面的任务分配, 每个人领取一周的工作量
, 每天汇报进度
3. 简述软件开发文档?
需求分析概要设计详细设计操作手册测试计划
4. 你认为一个项目如何才正确?
是企业利益最大化
5. 你经常读那些书?
Java 编程思想 Java 模式 人月神话
6.springmvc 的工作原理?
客户端请求提交到 DispacherServlet 由 DispacherServlet 控制器查询 HandlerMapping, 找到处理请求的 Controller
Controller 调用业务逻辑处理后, 返回 ModelAndView
DispacherServlet 查询视图解析, 找到 ModelAndView 指定的视图
视图负责将结果显示到客户端
7.springmvc 和 struts2 的区别?
机制 :springmvc 的入口是 servlet,struts2 的入口是 filter
性能 : springmvc 会比 struts2 快一点 springmvc 是基于方法设计, struts2 是基于类, 每次发一次请求都会实例一个 action, 每个 Action 都会被注入属性
参数传递: struts2 是在接受参数的时候, 可以采用属性来接收参数, 这家说明可以让多个方法共享
拦截器机制: struts2 有自己的 interceptor 机制, springmvc 用的是独立的 AOP 方式, strtus2 的配置文件还是比 springmvc 大, springmvc 使用简洁, springMVC 比 struts2 开发效率要高.
8.struts2 工作原理?
客户端初始化一个执行 servlet 的请求
这个请求经过一系列的过滤器, 被 FilterDispatcher 调用, 询问 ActionMapper 来决定是否调用 Action
FilterDispatcher 把请求的处理交给 ActionProxy
ActionProxy 通过 Configuraction Manager 询问相关的配置文件, 找到需要的 Action 类
ActionProxy 创建 ActionInvocation 的实例
ActionInvocation 调用 Action 前后的拦截器
Action 执行完毕后, 根据 struts.xml 配置文件找到对应的视图页面
9.Hibernate 工作原理?
读取并解析配置文件
创建 SessionFactory
打开 Session
创建事务: transaction
持久化操作
提交事务
关闭 Session
关闭 SessionFactory
10. 为什么要用 spring?
spring 能够很好的和各大框架整合
spring 通过 IOC 容器管理了对象的创建和销毁 工厂模式
在使用 hiberna,mybatis 的时候, 不用每次都编写提交的事务的代码, 可以使用 spring 的 AOP 来管理事务 AOP 其实就是一个动态代理的实现
声明式事务和编程式事务
11.mybatis 的优缺点?
优点: SQL 写在 XML 中, 便于统一管理和优化
提供映射标签, 支持对象和数据库的 orm 字段关系映射
可以对 SQL 进行优化
缺点: SQL 工作量大
mybagtis 移植姓不好
不支持级联
12. 谈谈 SSH 整合?
struts(表示层)+spring(业务层)+hibernate(持久层)
struts 是一个表示层的框架, 主要用于接收请求, 分发请求 struts 其实属于 MVC 中的 VC 层次的
hibernate 是一个持久层的框架, 主要负责与关系数据库的操作
spring 是一个业务层的框架, 是一个整合的框架, 能够很好的黏合表示层和持久层
13.maven 是什么? 有什么作用?
是一个项目管理构建工具
作用: 帮助下载 jar 寻找依赖, 帮助下载依赖 热部署热编译
14.web 前端优化?
减少 HTTP 请求的数量 (合并 CSSjs 图片)
利用浏览器的缓存机制
利用 GZIP 压缩机制: 只针对文本类资源有效
把 CSS 文件放在 html 开头
把 javascript 文件放在 HTML 结尾
避免 CSS 表达式 (判断浏览器)
使用 javascript 压缩
减少 DNS 查找
避免重定向
使用 ajax
15. 安全性测试
利用安全性测试技术, 找到潜在的漏洞
16. 事务隔离级别 (4 种)
Serializable(串行化): 一个事务在执行过程中完全看不到其他事物对数据库所做的更新 (事务执行的时候不允许别的事务并发执行, 事务只能一个接着一个地执行, 而不能并发执行)
Repeatable Read(可重复读): 一个事务在执行过程中可以看到其它事务已经提交的新插入的记录, 但是不能看到其它事务对已有记录的更新
Read Commited(读已提交数据): 一个事务在执行过程中可以看到其它事务已经提交的新插入的记录, 而且能看到其它事务已经提交的对已有记录的更新
Read Uncommitted(读未提交数据): 一个事务在执行过程中可以看到其它事务没有提交的新插入的记录的更新, 而且能看其它事务没有提交到对已有记录的更新
17.MYSQL 存储引擎 (4 种)
MyISAM 它不支持事务, 也不支持外键, 尤其是访问速度快, 对事务完整性没有要求或者以 SELECTINSERT 为主的应用基本都可以使用这个引擎来创建表
每个 MyISAM 在磁盘上存储成 3 个文件, 其中文件名和表名都相同, 但是扩展名分别为:.frm(存储表定义) ,YD(MYData, 存储数据) , MYI(MYIndex, 存储索引),InnoDB,InnoDB 存储引擎提供了具有提交回滚和崩溃恢复能力的事务安全但是对比 MyISAM 的存储引擎, InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引
1) 自动增长列 2) 外键约束
MEMORY
memory 使用存在内存中的内容来创建表每个 MEMORY 表实际对应一个磁盘文件, 格式是. frmMEMORY 类型的表访问非常快, 因为它到数据是放在内存中的, 并且默认使用 HASH 索引, 但是一旦服务器关闭, 表中的数据就会丢失, 但表还会继续存在
MERGE
merge 存储引擎是一组 MyISAM 表的组合, 这些 MyISAM 表结构必须完全相同, MERGE 表中并没有数据, 对 MERGE 类型的表可以进行查询更新删除的操作, 这些操作实际上是对内部的 MyISAM 表进行操作
18. 事务传播特性
1. PROPAGATION_REQUIRED: 如果存在一个事务, 则支持当前事务如果没有事务则开启
2. PROPAGATION_SUPPORTS: 如果存在一个事务, 支持当前事务如果没有事务, 则非事务的执行
3. PROPAGATION_MANDATORY: 如果已经存在一个事务, 支持当前事务如果没有一个活动的事务, 则抛出异常
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务如果一个事务已经存在, 则将这个存在的事务挂起
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行, 并挂起任何存在的事务
6. PROPAGATION_NEVER: 总是非事务地执行, 如果存在一个活动事务, 则抛出异常
7. PROPAGATION_NESTED: 如果一个活动的事务存在, 则运行在一个嵌套的事务中. 如果没有活动事务,
20.TCP 协议 (传输控制协议 Transmission Control Protocol )
建立链接: 三次握手 (1. 给对方拨号 2. 喂, 您好, 请问是哪位 3 我是小刘)
关闭链接: 四次挥手保证可靠
21.shiro 是什么
Apache Shiro 是一个强大易用的 java 安全框架, 提供了认证授权加密和会话管理等功能
认证 : 验证用户来核实他们的身份
授权: 会话管理
22. 项目技术
前台: 面向的客户
前端: css div js jquery
后端: springmvc spring mybatis
使用的优化技术:
1. 页面静态化 (Freemarker)
2. 缓存
2.1 页面缓存 (OSCache)
2.2 分布式缓存 (memcached)
3. 图片分离 (服务器)
4. 负载均衡 (解决高并发终极策略)
后台:(管理对象)
前端: css html js jquery
后端: springmvc spring mybatis
数据库: mysql
图片分离框架: jersey
23. 什么 RESTful(表现层状态转化) 架构?
(1) 每一个 URI 代表一种资源;
(2) 客户端和服务器之间, 传递这种资源的某种表现层;
(3) 客户端通过四个 HTTP 动词, 对服务器端资源进行操作, 实现 "表现层状态转化"(原文请点击阅读全文查看)
以上内容只做了简单总结以及引导, 具体内容大家可以根据自己的情况详细总结
来源: http://www.bubuko.com/infodetail-2530513.html