1. SSM框架整合过程的步骤?
答: 1. Dao层: Mybatios整合Spring,通过Spring创建数据库连接池,Spring管理SqlSessionFactory mapper代理对象
这里需要mybatis和spring的整合包。
2.Service层: 所有的service实现类都放到spring容器种管理,并由spring管理事务。
3. 表现层 : 由Springmvc管理controller. SpringMVC的前端控制器,映射器,适配器,试图解析器。
4. 额外的log日志和jdbc配置文件。
2.什么是Java的多态?
答: 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。
总结性答案: 同一个操作对于不同的子类会产生不同的解释,不同的执行结果,主要是对于方法区来说的,它允许子类类型的指针赋给父类类型的指针,使父类类型根据当前的赋值产生不同的处理结果。
3.Hibernate对象的3种状态?
答: 持久态 瞬时态 托管态
4.xml文件的解析包有哪些?
答:基础解析: DOM解析 SAX解析
扩展方法: JDOM解析------需要jdom.jar
DOM4J解析-----需要dom4j.jar
5. 设计一个数据库的步骤?
答: 建库-------建表--------设置表关联(这里应该是想问表设计范式吧,如1NF 2NF 3NF 4NF bcNF)
简单理解一下范式:
一范式:数据库表中的每一列都不可分割的,同一列不能有多个值或者有重复的属性,简单来说无重复的列,
比如一个表(员工号,员工姓名,员工联系方式)这就不行,因为联系方式可以再分割,如电话号码
邮箱,qq号等。
二范式: 二范式一定是在一范式的基础上的,要求每一行有唯一的标识,建一个新行,我理解为类似于id,
并且R中的每一个非主属性需要完全函数依赖与候某个选键键,
比如表(学号,课程号,成绩,学分)这样一个表,由于组合关键字为学号,课程号,而非主属性学分仅仅 部分依赖与课程号,而不依赖于学号,所以不是二范式,可以这样分解为两个表(学号,课程,成绩)和 (课程,学分)。
三范式: 我简单理解为二范式没有传递依赖就是三范式。
(学号,姓名,课程号,成绩)为例,这里姓名没有重名,有两个候选码(学号,课程号)(姓名和课程 号),存在函数依赖 姓名依赖学号,成绩依赖与(学号,课程号),成绩依赖与(姓名,课程号),非主 属性成绩,不存在部分依赖,所以是3NF.
BCNF : 构建再三范式之上,就是关系模式R为一范式,每个属性不传递依赖与R的候选键,那么R就为BCNF,
4NF
5.1.自我理解超键,候选键,主键,外键(自己理解)?
答: 超键:关系模式中,唯一标识,属性集,比如(学号,姓名)(学号,性别)(学号,课程)这些都能求出一个唯一集 合,所以都为超键
候选键:关系模式中,唯一标识,不含多余属性,就是能找到唯一答案的,比如学号可以唯一找到学生,姓名也可以 (假设无重名),所以学号,姓名就是候选键
主键: 主键就是候选键中的一个,主键一定是候选键。
外键: 再关系模式R1和R2中,R1中某一属性不是R1中的候选键,确是R2中的候选键,这个属性就是R1中的外键。
6.Linux基本命令?
答 : yum 安装
su sudo
rpm 卸载
Systemctl restart 启动
ps -e|grep 查找端口
7.什么是耦合?
答: 模块间的关联程度,模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。
8. Hibnater中的load()方法和get()方法?
答: 1. Session的get()与load()方法都可以根据给定的OID从数据库中加载一个持久化对象。load方法支持延迟加载策略,而 get不支持。如果数据不存在的话load()会抛出异常,而get会返回空
2.get()方法首先查询Session内存缓存,二级缓存,最后数据库,load()中在创建的时候会首先查缓存,不存在就创建代 理对象,实际使用数据时才查询二级缓存或数据库
3. get()永远只返回实体,load()可以返回代理或者实体
9.spring中aop和拦截器的不同?
10.https请求的解释
1. 客户端向服务器发起SSL通信,告诉服务器我支持的SSL版本,组件(加密算法和密钥长度)。
2. 服务器响应报文中,包含了SSL版本信息和加密组件,服务器还会给客户端一个公钥和公钥证书。
3. 客户端拿到服务器的公开密钥,并验证公钥证书。(浏览器已经植入CA的公开密钥)。
4 .验证成功的话,客户端生成一个随机的密码串,其实就对称密钥,并用服务器 的公开密钥对其加密,,客户端用约定好的 hash算法计算握手消息,然后用生成的密钥对消息进行加密,以及和消息原文一起发送给服务器。
5. 服务端收到密钥后,用私钥解密,拿到对称密钥,用对称密钥解析加密消息,在用hash对消息进行处理看两次的值是否一 样,一样就代表没有被篡改
6.接下来就是http通信了。
11. FactoryBean 和BeanFactory
答:BeanFactory是一个Factory , FactoryBean是一个bean; Spring通过反射机制利用<bean>的class属性指定实现实例化Bean,FactoryBean就隐藏了一些实例化一些复杂Bean的细节,用户可以通过实现该接口开实例化Bean的逻辑
12.sql中拼接${}和占位#{}
答 : 拼接有可能造成sql注入问题
#{}占位符解决不了的问题
1. 动态表名字不可以用#{}占位符` select * from #{table}
2. 动态列名不可以用#{} 占位符 select #{} from table
3. 动态排序不可以用#{} selec * from table order by #{id} DESC
13.statement和preparestatement
答: statement执行无参的简单sql语句,返回产生结果的对象
prepaerStetement 执行有参的预编译的sql语句
CallableStatement掉用数据存储过程的接口
14. SQL中的触发器
答:前置触发,后置触发,行触发
15. 项目中遇到的问题
答: 带结构备份, 与不带结构的备份,不带结构的数据的备份无法用。
16.Mysql中的MVCC版本控制。
答: MVCC主要使事务隔离级别做的,在隔离级别下,AB所示的数据相互隔离,互相更新不可见(写锁,读锁,表锁,行 锁)
用三个值来控制的,第一个控制最新值:事务执行就给该值加一,最大值最新
第二个控制版本指针: 指向当前的undo log记录,找 之前版本数据的指针
第三个标志位: 标志是隐藏id 参考《事务底层实现》
17.Struts中的forward和global-forward区别
答: forworad的主要作用的根据Action返回的值找到对应的jsp页面
global-forward是全局forword ,当多个action返回同一个值时候,例如在分页时或者得到数据列表时可将这个forward 元素写在global-forward中,就不用每次在action中配置了。
18. ==和equals区别?
答: ==是用来比较两个变量的引用是否相等
equals是用来比较值是否相等的