重要面试题
1.ajax原理与执行步骤:
异步刷新技术
①、获取ajax异步对象(XmlHttpRequest)
②、选择请求方式get、post
③、使用send函数来发送请求
④、判断向服务器发送请求状态(0~4)
⑤、服务器请求状态完成readState==4
⑥、判断客户端响应状态status==200
⑦、接收服务端的返回数据并执行回调函数
2.springMvc执行原理:
①、客户端向核心处理器发出请求
②、核心处理器调用处理器映射(HandlerMapping),解析对应的Handler
③、将解析后的Handler返回给核心处理器
④、核心处理器请求处理器适配器(HandlerAdatper)执行Handler
⑤、处理器适配器(HandlerAdapter)根据Hnadler规则执行Handler
⑥、Handler执行完毕后将返回一个modelAndview给处理器适配器
⑦、处理器适配器将modelAndview返回给核心处理器
⑧、核心处理起调用视图解析器进行解析
⑨、将解析完的视图返回给核心处理器
⑩、核心处理器将试图讲给视图渲染器进行渲染
⑪、渲染完成后返回给核心处理器
⑫、核心处理器将视图返回给客户端
3.jsp与servlet原理与区别
jsp(java Server pages)java服务器页面:
java代码与html页面共存
servlet:
服务器端运行的程序
区别:
jsp编译后就是servlet
jsp是页面的表示servlet是逻辑的表示
jsp侧重于视图、 servlet类似一个controller主要做控制
4.jsp九大隐式对象:(jsp提供可直接使用)
request
response
cookie
session
application
out
page
config
pageContext
5.spring常用注解
@Component
@Service 逻辑业务层(表示是一个service)
@Repository 数据访问层(表示一个jpa的dao层)
@Controller 控制层(表示一个controller层)
@Autowried (bean的注入)
@Bean
aop相关:
@Before
@After
@Around
6.SpringMvc相关注解:
@RequestMapping
@RequestBody
@ResponseBody
@PathVariable
@RequestController
7.重写与重载
重写:基于父子类中 子类重写父类的方法
方法名相同、参数相同、返回类型相同、异常小于父类、修饰范围大于父类
重载:基于本类之间
方法名相同,参数个数、类型、顺序不同,返回类型无关
8.Xml和Html区别
Xml:可扩展标记语言
一般多用来多数据文件的配置
Xml中标签必须成对出现 可自定义标签
Xml可用来传输数据
Xml区分大小写
严禁标签交叉嵌套
Html:超文本标记语言
Html标签是固定的 不可自己定义
标签可以有单标签
Html是静态的用于显示数据
Html不区分大小写
9.get和post区别
get:
参数可在地址栏上显示
长度有限
不安全
post:
参数不可在地址栏上显示
长度理论无限
相对安全
10.maven:
项目管理工具
作用:
管理依赖
创建项目工程
编译代码
自动运行单元测试
部署项目、生产web站点
生成报表
命令:
clean 清除内容
compile 编译源代码
package 打包
test 测试
install 安装
11.mybatis的分页,分页插件的原理
PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句
oracle
select* from (select rownum r ,d.* from dept d) where r between a and b
以上逻辑仅限于底数据量的分页查询(mysql 30w以下,oracle 100w以下)
大数据量分页,oracle使用 row_number()做分页
12.二分法查找
先按一定顺序排序 然后折半查找
13.单例模式
只能获取一个对象
构造器私有化;通过公有的方法来获取对象
懒汉式:
使用时创建(线程不安全的)
饿汉式:
加载类时创建(线程安全的)
14.mybatis的mapper接口注意内容:
mapper中的方法不能重载、方法名唯一、参数与xml中类型一致
15.mybatis中配置mapper的方法:
namespace=mapper全类名
id=mapper中的方法名
16.tcp/ip网络模型(OSI七层)
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
17.BIO与NIO区别AIO
BIO:
同步阻塞流
数据读写必须一个接一个完成
NIO:
同步非阻塞
一个线程轮流询问
AIO:
异步非阻塞
18.springBoot和springmvc区别 boot自动装配原理:
springBoot项目中启动类中@SpringBootConfiguration中@EnableAutoConfiguration表示开启自动装配.
spring代理模式:
aop cglib代理
代理对象不是实现类
jdk代理:
针对目标对象实现了接口
springmvc是web框架
springboot是用来简化ssm框架简化开发的
19.重写与重载区别?
重写:
基于父子类之间
子类重写父类的方法 方法名相同、参数相同、返回值类型必须小于等于父类类型、异常小于等于父类异常、修饰范围大于等于父类
重载:
基于本类之间
方法名相同,参数顺序、类型、个数不同,与返回值类型无关
20.集合体系
单例集合:
Collection:
set(不可重复):
Hashset(无序、底层是哈希表)
TreeSet(有序、底层是红黑树)
LinkedHashSet(有序、底层是链表和哈希表)
list(有序、可重复):
ArrayList(底层数组查询快、增删慢)
Vector(底层数组查询快、增删慢、线程安全)
LinkedList(底层是链表、查询慢、增删快)
键值对集合:
Map:
Hashtable(无序的、线程安全的、不允许key为null)
TreeMap(有序的)
HashMap允许null值(key和value都允许)
21.接口与抽象类
接口:
接口可以多继承、多实现
接口中只能有抽象方法
无构造
抽象类:
被abstract修饰
只能单继承
可以有属性、其他方法、构造
22.创建线程的三种方式?
继承Thread
实现runnable
实现callable
23.@Resource与@Autowired的区别?
@Resource
默认按name自动注入
@Autowried
默认按类型装配
24.drop、delete、truncate的区别?
drop:
直接删除表(有日志可恢复)
delete:
删除表内容、不删除索引(有日志可恢复)
truncate:
删除内容、释放内存(不可恢复)
25.JVM内存模型
堆
本地方法栈
虚拟机栈
程序计数器
方法区
26.垃圾回收机制
新生代
Ende
内存满触发Young GC
老年代
Full GC
永久代空间不足,会触发Full GC
System.gc()也会触发Full GC
永久代
27.ql优化的方式?
减少or、not、!=、in、运算表达式等降低索引的查询
使用索引查询
28.简述sql语言?
DDL(数据定义语言)
create、drop等
DML(数据操作语言)
delete、insert、update
DCL(数据控制语言)
DQL(数据查询语言)
29.如何解决session共享?
使用redis缓存 将session放入redis缓存中实现共享
Tomcat实现session复制