logo资料库

java ssm面试题.docx

第1页 / 共72页
第2页 / 共72页
第3页 / 共72页
第4页 / 共72页
第5页 / 共72页
第6页 / 共72页
第7页 / 共72页
第8页 / 共72页
资料共72页,剩余部分请下载后查看
String能被继承吗?为什么?
String, Stringbuffer, StringBuilder 的区别。
抽象类和接口的区别
 nio和 bio 、aio的区别
reactor 模型
反射的概述
反射就java中class.forName()和classLoader都可用来对类进行加载。cla
反射创建类实例的三种方式是什么
反射中,Class.forName 和 ClassLoader 区别
Java动态代理的两种实现方法
a.hashcode() 有什么用,与 a.equals(b)有什么关系
jvm 什么情况下会发生栈内存溢出
垃圾回收算法概述
优化GC步骤
你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,包括原理,流程,优缺点
类加载机制
你们线上应用的 JVM 参数有哪些。
g1 和 cms 区别,吞吐量优先和响应优先的垃圾收集器选择。
讲讲 Spring 加载流程。
spring事务定义
1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么
事务的类型
Spring事务隔离级别:
spring有五大隔离级别,其在TransactionDefinition接口中定义。看源码可知,其
说说 aop 中的几个术语
Springmvc 中 DispatcherServlet 初始化过程。
Linux 下 IO 模型有几种,各自的含义是什么。
平时用到哪些 Linux 命令。
用一行命令查看文件的最后五行。
用一行命令输出正在运行的 java 进程。
进程和线程的区别。
多线程的几种实现方式,
什么是线程安全。
TIME_WAIT 和 CLOSE_WAIT 的区别。
说说你知道的几种 HTTP 响应码,比如 200, 302, 404。
HTTPS 的加密方式是什么,讲讲整个加密解密流程。
当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤。
HTTP 请求的报文格式
如何使用 redis 和 zookeeper 实现分布式锁?有什么区别优缺点,分别适用什么场景。
1、什么是分布式事务
分布式事务解决方案
什么是一致性 hash。
什么是 restful,讲讲你理解的 restful。
索引分类
2.2 原理
3 实现方法
1、#{}和${}的区别是什么?
2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪
3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理
4、Mybatis是如何进行分页的?分页插件的原理是什么?
5、简述Mybatis的插件运行原理,以及如何编写一个插件。
6、Mybatis执行批量插入,能返回数据库主键列表吗?
7、Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
8、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
9、Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别。
10、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
11、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
12、Mybatis中如何执行批处理?
13、Mybatis都有哪些Executor执行器?它们之间的区别是什么?
14、Mybatis中如何指定使用哪一种Executor执行器?
15、Mybatis是否可以映射Enum枚举类?
16、Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义
17、简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
18、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
1.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
2.MyBatis编程步骤是什么样的?
3.MyBatis与Hibernate有哪些不同?
4.使用MyBatis的mapper接口调用时有哪些要求?
5.SqlMapConfig.xml中配置有哪些内容?
6.简单的说一下MyBatis的一级缓存和二级缓存?
2.1.什么是MyBatis?
参考答案:
1、讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么
2、SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
3、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代
4、@RequestMapping注解用在类上面有什么作用
5、怎么样把某个请求映射到特定的方法上面
6、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置
7、如果在拦截请求中,我想拦截提交参数中包含”type=test”字符串,怎么配置
8、我想在拦截的方法里面得到从前台传入的参数,怎么得到
9、如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象
10、怎么样在方法里面得到Request,或者Session
11、SpringMvc中函数的返回值是什么.
12、SpringMvc怎么处理返回值的
13、SpringMVC怎么样设定重定向和转发的
14、 SpringMvc用什么对象从后台向前台传递数据的
15、SpringMvc中有个类把视图和数据都合并的一起的,叫什么
16、怎么样把ModelMap里面的数据放入Session里面
17、SpringMvc怎么和AJAX相互调用的
18、当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理
19、SpringMvc里面拦截器是怎么写的
1、servlet 执行流程 客户端发出 http 请求,web 服务器将请求转发到 servlet 容器,servlet 容器解析 url 并根据 web.xml 找到相对应的 servlet,并将 request、response 对象传递给找 到的 servlet,servlet 根据 request 就可以知道是谁发出的请求,请求信息及其他 信息,当 servlet 处理完业务逻辑后会将信息放入到 response 并响应到客户端。 2、springMVC 的执行流程 springMVC 是由 dispatchservlet 为核心的分层控制框架。首先客户端发出一个 请求 web 服务器解析请求 url 并去匹配 dispatchservlet 的映射 url,如果匹配上就 将这个请求放入到 dispatchservlet,dispatchservlet 根据 mapping 映射配置去寻找 相对应的 handle,然后把处理权交给找到的 handel,handel 封装了处理业务逻辑 的代码,当 handel 处理完后会返回一个逻辑视图 modelandview 给 dispatchservl et,此时的 modelandview 是一个逻辑视图不是一个正式视图,所以 dispatchserv let 会通过 viewresource 视图资源去解析 modelandview,然后将解析后的参数放 到 view 中返回到客户端并展现。 3、给定一个 txt 文件,如何得到某字符串出现的次数 [html] view plain copy 1. [java] view plain copy 1. File file = new File("E://test.txt"); 2. 3. InputStream is = new FileInputStream(file); 4. 5. byte b[] = new byte[1024]; 6. 7. int a = is.read(b); 8. 9. String str[] = new String(b,0,a).split(""); 10. 11. int count = 0; 12.
13. for(int i = 0;i
b) 策略模式: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到 具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法 可以在不影响到客户端的情况下发生变化。 这个模式涉及到三个角色: 环境(Context)角色:持有一个 Strategy 的引用。 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。 此角色给出所有的具体策略类所需的接口。 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。 就是将几个类中公共的方法提取到一个新的类中,从而使扩展更容易,保证代码 的可移植性,可维护性强。比如有个需求是写鸭子对象,鸭子有叫,飞,外形这 三种方法,如果每个鸭子类都写这三个方法会出现代码的冗余,这时候我们可以 把鸭子中的叫,飞,外形这三个方法提取出来,放到鸭父类中,让每个鸭子都继 承这个鸭父类,重写这三个方法,这样封装的代码可移植性强,当用户提出新的 需求比如鸭子会游泳,那么对于我们 oo 程序员来讲就非常简单了我们只需要在 鸭父类中加一个游泳的方法,让会游泳的鸭子重写游泳方法就可以了。 c) 工厂模式: 简单的工厂模式主要是统一提供实例对象的引用,通过工厂模式接口获取实例对 象的引用。比如一个登陆功能,后端有三个类,controller 类,interface 类,实 现接口的实现类。当客户端发出一个请求,当请求传到 controller 类中时,contr oller 获取接口的引用对象,而实现接口的实现类中封装好了登陆的业务逻辑代码。 当你需要加一个注册需求的时候只需要在接口类中加一个注册方法,实现类中实
现方法,controller 获取接口的引用对象即可,不需要改动原来的代码,这种做 法是的可拓展性强。 d)观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如 A rrayList 对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增 加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。 具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体主题的内部状 态改变时,给所有登记过的观察者发出通知。具体主题角色又叫做具体被观察者(Concrete Observable)角色。 抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在得到主题的通知时更新 自己,这个接口叫做更新接口。 具体观察者(ConcreteObserver)角色:存储与主题的状态自恰的状态。具体观察者角色实现 抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态 像协调。如果需要, 具体观察者角色可以保持一个指向具体主题对象的引用 e)代理模式 所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间 接的调用实际的对象。 一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个 代理对象来完成间接的访问。 代理模式可以有两种实现的方式,一种是静态代理类,另一种是各大框架都喜欢的动态代理。 下面我们主要讲解一下这两种代理模式 5、冒泡排序 原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第 1 个和第 2 个数,将小数放前,大数放后。然后比较第 2 个数和第 3 个数,将小数放前, 大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直 至全部排序完成。 [java] view plain copy for(int j=0;jarr[j+1]) { int temp = arr[j]; 1. public static void bubbleSort(int []arr) { 2. for(int i =0;i
} public void sort(int[] a,int low,int high){ int start = low; int end = high; int key = a[low]; while(end>start){ //从后往前比较 while(end>start&&a[end]>=key) //如果没有比关键值小的,比较 下一个,直到有比关键值小的交换位置,然后又从前往后比较 end--; if(a[end]<=key){ int temp = a[end]; a[end] = a[start]; a[start] = temp; } //从前往后比较 while(end>start&&a[start]<=key)//如果没有比关键值大的,比较 下一个,直到有比关键值大的交换位置 start++; if(a[start]>=key){ int temp = a[start]; a[start] = a[end]; a[end] = temp; } //此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小, 右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用 } //递归 if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关 if(end
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查 找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 [java] view plain copy return middle; int first = 0; int end = a.length; for (int i = 0; i < a.length; i++) { int middle = (first + end) / 2; if (tag == a[middle]) { 1. public static int ef(int a[], int tag) { 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. } } if (tag > a[middle]) { first = middle + 1; } if (tag < a[middle]) { end = middle - 1; } } return 0;
6、对 ajax 的理解 Ajax 为异步请求,即局部刷新技术,在传统的页面中,用户需要点击按钮或者 事件触发请求,到刷新页面,而异步技术为不需要点击即可触发事件,这样使得 用户体验感增强,比如商城购物车的异步加载,当你点击商品时无需请求后台而 直接动态修改参数。 9、父类与子类之间的调用顺序(打印结果) a) 父类静态代码块 b) 子类静态代码块 c) 父类构造方法 d) 子类构造方法 e) 子类普通方法 f) 重写父类的方法,则打印重写后的方法 10、内部类与外部类的调用 a) 内部类可以直接调用外部类包括 private 的成员变量,使用外部类引用的 thi s.关键字调用即可 b) 而外部类调用内部类需要建立内部类对象 11、多线程 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基 本单位
分享到:
收藏