个人遇到的java面试题总结

(注:这里本人只写自己个人被问到的问题,至于答案,个人觉得不错的文章的答案链接附带下去,方便复习,请勿介意)

1.springmvc和struts2有什么区别
a.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文。
b.SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的。
c.由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
d. 拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。
e.SpringMVC的入口是servlet,而Struts2是filter,这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
(参考资料)
https://www.cnblogs.com/huajiezh/p/6415444.html

2Hibernate和Mybatis有什么区别
a.Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象
时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或
关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。
b.hibernate数据库移植性远大于mybatis(hibernate通过hql语言降低了程序与数据库的耦合性)
c.sql直接优化上,mybatis要比hibernate方便很多。虽然hibernate的hql很方便,但是始终不如sql语句。
在这里插入图片描述

3.Hibernate什么时候进行刷出操作
flush方法的主要作用就是清理缓存,强制数据库与Hibernate缓存同步,以保证数据的一致性。它的主要动作就是向数据库发送一系列的sql语句,并执行这些sql语句,但是不会向数据库提交。而commit方法则会首先调用flush方法,然后提交事务。这就是为什么我们仅仅调用flush的时候记录并未插入到数据库中的原因,因为只有提交了事务,对数据库所做的更新才会被保存下来。因为commit方法隐式的调用了flush,所以一般我们都不会显示的调用flush方法。
这是hibernate的flush机制。在一些复杂的对象更新和保存的过程中就要考虑数据库操作顺序的改变以及延时flush是否对程序的结果有影响。如果确实存在着影响,那就可以在需要保持这种操作顺序的位置加入flush强制Hibernate将缓存中记录的操作flush入数据库,这样看起来也许不太美观,但很有效。
(参考资料)
https://www.cnblogs.com/yanbincn/archive/2012/05/31/2529293.html

4.springboot较spring有什么特点
Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。
######以下是Spring Boot中的一些特点:
1:创建独立的spring应用。
2:嵌入Tomcat, Jetty Undertow 而且不需要部署他们。
3:提供的“starters” poms来简化Maven配置
4:尽可能自动配置spring应用。
5:提供生产指标,健壮检查和外部化配置
6:绝对没有代码生成和XML配置要求
(参考资料)
https://www.leshalv.net/posts/1090913254/

5.concurrentmap,hashmap和hashtable区别(最好集合这一块都看看)
(参考资料)
https://www.cnblogs.com/heyonggang/p/9112731.html
6.说说三大简单排序,归并排序和快速排序
(参考资料)
https://blog.csdn.net/xiazdong/article/details/8462393
7.说说对栈,链表,队列的了解
(参考资料)
https://blog.csdn.net/m0_37622530/article/details/81429837
8.说说对动态代理和静态代理的区别
(参考资料)
https://www.cnblogs.com/baizhanshi/p/6611164.html
9.如何优化数据库
(参考资料)
https://blog.csdn.net/zhangbijun1230/article/details/81608252
10.面向对象的三大特征
https://www.cnblogs.com/fzz9/p/8973315.html
11.tomcat的默认用户访问是多少
https://blog.csdn.net/ibcve/article/details/79172713
12.ajax的步骤
https://www.cnblogs.com/0x29a/p/11231950.html
13.进程和线程的区别
https://blog.csdn.net/zhou753099943/article/details/51771220
14.linux的常见指令
https://www.cnblogs.com/caozy/p/9261224.html
15.内部类了解多少
https://www.runoob.com/w3cnote/java-inner-class-intro.html
16.抽象类和接口的区别
a.抽象类要被子类继承,接口要被类实现。
b.接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
c.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
d.接口是设计的结果,抽象类是重构的结果。
e.抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
17.你对索引了解多少
https://blog.csdn.net/kennyrose/article/details/7532032
18.谈谈对三大范式的了解
https://blog.csdn.net/zymx14/article/details/69789326
19.你对redis了解多少
https://www.cnblogs.com/jasontec/p/9699242.html
20.get和post有什么区别
在这里插入图片描述https://baijiahao.baidu.com/s?id=1626599028653203490&wfr=spider&for=pc
21.既然get没post安全,为什么还要使用
22.servlet是单例还是多例
23.包装类和基本类型的区别
https://www.jianshu.com/p/c2260088e2b8
24.对jvm的栈,方法区,堆的了解
https://blog.csdn.net/BIackMamba/article/details/91348644
25.异常存在return时的情况
https://www.cnblogs.com/zhangzongle/p/5426061.html
26.序列化和反序列化的作用
https://blog.csdn.net/u013870094/article/details/82765907
27.vector,linklist,arraylist的区别
https://www.cnblogs.com/wutongshu-master/p/10904297.html
28equals和==的区别
https://www.cnblogs.com/limeiky/p/4831992.html
29.exists和in的区别
https://www.cnblogs.com/Ladylittleleaf/p/10118830.html
30.jsp的内置对象
https://blog.csdn.net/Jack__Frost/article/details/65449643
31.使用正则表达式检查邮件
https://blog.csdn.net/u013033112/article/details/80278602
32.spring的事务
https://blog.csdn.net/qq_42914528/article/details/83743726
33.springmvc流程
https://www.cnblogs.com/jiyukai/p/7629498.html

猜你喜欢

转载自blog.csdn.net/weixin_42063820/article/details/103060832