- 1 Spring Bean是什么?
在spring中由Spring创立和治理的对象称为bean,
bean有相干的个性,例如懒加载,作用域,生命周期这些。
懒加载就是提早加载,启动的时候,会创立所有对象,有些不用浪费资源,因而应用懒加载的形式。
作用域:罕用的单例和多例,默认单例,多例去配置文件scope设置
单:名字和类型雷同的bean对象的实例在spring容器中只能有一个
多:每次spring从容器中获取对象都会创立新的对象,不须要懒加载2Spring框架中的bean对象的生命周期?
3AOP的初始化?
首先读取配置文件,生成Advisor,PointCat等文件信息。在容器创立bean的过程中,能够对bean进行拦挡替换,实现咱们想要进行增益的操作。最初,生成代理,返回给容器。4IOC的初始化?
1 resource定位:指对BeanDefinition的资源定位过程。找到定义Javabean信息的xml文件。并将其封装成Rescource对象。
2 BeanDefinition的载入:把用户定义好的Javabean示意为Ioc容器外部的数据结构,这个容器外部的数据结构就是BeanDefinition。
3 接着向Ioc容器去注册这些BeanDefinition。
5 SpringBoot我的项目的启动流程?
springBoot启动的时候,基于启动类上注解形容,进行主动配置并扫描指定包和加载包以及包中的类进行加载,而后检测类上是否有指定的注解形容,如@service,@Controller,如果有,将类交给spring框架中的Bean工厂接口的实现类的对象,该对象会基于对象反射创立bean的实例,如果设定的生命周期办法,就调用该办法。一样的,有作用域形容,将实例贮存到不同的作用域中。
6 springMVC拦截器的运行原理?
948 接口里原本就有个办法,只须要重写指定的办法
次要的拦挡次要是url的申请地址
业务层的拦挡用AOP来做
7AOP的次要性能?
日志记录,性能统计,安全控制,事务管制,异样解决
8形容一下最近做的我的项目和你负责的模块,只须要形容?
9cookie和session的区别?
1cookie是将会话中的数据保留在客户端,属于客户端技术。
2因为cookie将数据保留在客户端,对服务器没有影响,用户的操作就会导致数据的失落,不稳固,也不平安。
3cookie保留在客户端,能够保留很久。
所以,对安全性不高,数据又要保留久用cookie
4cookie的大小和个数都有限度。大小不超过1kb,站点给浏览器发送的个数了不超过20个。
5cookie利用:实现购物车,记住用户名,30天内主动登入。
session是服务端技术,数据在服务端。绝对平安
session是服务端的对象,在并发性高的时,每一个浏览器客户端在服务端都要对应一个session对象,占用内存,影响效率。
所有session适宜不必保留很久,安全性要求高的数据。比方保留登入状态,保留验证码。
10什么是SQL注入攻打?如何避免
不必输出明码只输出用户名也能够登入就是SQL注入攻打,因为后盾的SQL语句是拼接而来的。用户提交参数中夹杂了#,--等,导致SQL语句的变动。
办法:1通过正则表达式对用户提交的数据进行校验,如果参数中有符号就完结程序,告诉用户输出参数不非法,
2应用PreparedStatement对象避免SQL注入攻打。应用preparedStatement对象先将SQL语句发送给服务器编译,确定下来,编译之后,SQL语句的骨架和寓意就不会变了,再讲SQL语句发送给服务器,这时候即便有SQL关键字或者是特殊符号,也只是被当做一般文原本解决。
11 JVM如何进行内存调优?
个别企业用三方工具检索程序中,某个办法,某个城西,以及某个接口或者线程占用资源过多,进行调优。
硬件调优:更改JVM的参数设置
软件调优:
12 数据库的优化?
sql语句的优化:尽量不应用全表扫描,不应用where子查问,不要应用含糊查问
13Spring框架中的IOC实现原理?
通过把创立和查找依赖的权力交给容器治理,升高耦合,跟以前被动创立依赖不一样。
14AOP的实现原理?
AOP针对的是非核心业务,基于开闭准则。目标是:不该变原有零碎的外围业务代码的根底上增加一些扩大性能,如日志解决,事务管制,权限解决等。
分为两大类:一类是动静代理技术,利用截取消息面的形式,对音讯进行装璜,取代原有对象的执行。
AOP基于代理机制实现性能扩大
JDK动静代理:其代理对象必须是某个接口的实现,它是通过在运行期间创立一个接口的实现类来实现对指标对象的代理
CGLib采纳了十分底层的字节码技术,其原理是通过字节码技术为一个类创立子类,并在子类中采纳办法拦挡的技术拦挡所有父类办法的调用,趁势织入横切逻辑。
15 Spring实现AOP的形式?
1 基于xml配置 在xml中先改成cglibi代理,定义切面,切入点controller下所有类被调用前都会被拦挡。
2基于注解的实现 @Aspect @Before
3基于自定义的注解实现
16streambuffer和streambuilder的区别是什么?
17类办法和实例办法有什么区别?
类办法属于类,不属于某个对象。
类办法只能拜访成员变量,不能拜访实例变量,实例办法两个都能够
实例办法只能通过对象拜访,类办法能够通过类名,类办法,对象类办法调用。
类办法只能拜访类办法,实例办法能够拜访类办法和实例办法。
类办法不能被笼罩,实例办法能够被笼罩。
18 hashmap和hashtable的区别
HashMap是线程不平安的.,Hashtable是线程平安的。
hashMap是对Map接口的实现,hashtable实现Map接口与dictionary抽象类。
hashMap初始容量为16,hashtable是11.
HashMap能够存储null键和null值
Hashtable不能够存储null键和null值.
两者的默认填充因子都是0.75,hashmap扩容时会翻倍。
19 线程和过程的区别
过程是资源分配的最小单位,线程是时程序运行的最小单位。
产生一个线程的时候,零碎会为线程调配独立的内存地址空间,而线程之间是共享地址空间。因而,一个线程消耗的资源比拟多,线程共享空间,所以线程的效率高,一个过程的破坏,不会影响其余过程,一个线程的破坏,会导致整个过程破坏了
20.介绍一下枚举类型
21jdk1.8新个性
22二叉树遍历形式
办法一:先序遍历:
遍历程序:根节点–>左孩子–>右孩子
中序遍历:
后序遍历:
档次遍历:依照所在档次,从下往上遍历
23Tcp和Uip区别
24三次握手和四次挥手
三次握手:A对B,发动申请连贯;(第一次握手,发送SYN,而后进入SYN-SEND状态)
第二次握手:B收到了A的信息,对立建设连贯,发送ACK-SYN包
第三次握手:A收到B信息,确认与B建设连贯。单方进入连贯状态。
四次挥手:
A与B交换后,对B发送我要敞开连贯了。
B收到A信息,确定A要敞开连贯
A收到了B的确认信息后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)
4.B说完了他要说的话(只是可能还有话说)之后,对A说,我要敞开连贯了。(seq=w, ack=u+1,FIN=1,ACK=1)(第三次挥手)
5.A收到B要完结连贯的音讯后说:已收到你要敞开连贯的音讯。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,而后A进入CLOSED)
6.B收到A的确认后,也进入CLOSED。
25 spring中的两大重点是什么
26什么是IOC?
管制反转也叫依赖注入。利用了工厂模式 将对象交给容器治理,你只须要在spring配置文件总配置相应的bean,以及设置相干的属性,让 spring容器来生成类的实例对象以及治理对象。在spring容器启动的时候,spring会把你在配置文件 中配置的bean都初始化好,而后在你须要调用的时候,就把它曾经初始化好的那些bean调配给你须要 调用这些bean的类(假如这个类名是A),调配的办法就是调用A的setter办法来注入,而不须要你在 A外面new这些bean了。
27 Spring基于xml注入bean的集中形式?
Set办法注入
结构器注入:通过index设置参数的地位,通过type设置参数类型
动态过程的注入4实例工厂的注入
28 Spring反对集中bean的作用域?
单例:每个容器中只有一个bean的实例
多例:为每一个bean提供一个实例
request:为每一个网络申请创立一个实例,在申请实现当前, bean会生效并被垃圾回收器回 收。
session:与request范畴相似,确保每个session中有一个bean 的实例,在session过期后,bean 会随之生效。
global-session:全局作用域
29SpringMVC怎么样设定重定向?
转发:加forward
重定向:在返回值加redirct
30SpringMVC运行流程?
用户发动申请带前端控制器
前端控制器依据xml注解进行主动配置,注解查找Handler。
处理器向前端控制器返回handler
前端控制器调用处理器执行Handler
处理器执行Handler,执行完结,给适配器一个返回
适配器向前端控制器返回一个modelandView
前端控制器申请视图解析器进行视图解析
视图解析器进行视图解析,实现后,给前端管制返回一个view对象
前端控制器进行视图渲染,填充到request域中,完结后向用户响应后果。
31 mybatis如何进行批量插入
1 mybatis foreach标签:
<insert id="insertBatch" parameterType="List">
INSERT INTO TStudent(name,age) list是参数类型
<foreach collection="list" item="元素迭代的名字" index="index" open="("从什么时候开始")"separator="union all">
SELECT #{item.name} as a, #{item.age} as b FROM DUAL
</foreach>
32mybatis中返回主键吗?
- 写SQL,但不要本人插入主键值
- 配置
@Options(useGeneratedKeys=true, keyProperty="对象.属性")
这个的作用是设置是否应用JDBC的getGenereatedKeys()
办法获取主键并赋值到keyProperty设置的对象的属性中,说白了就是把自增长的主键值赋值给对象相应的属性 - 在插入后,应用
对象.主键属性的getXXId()
办法 获取主键值
33什么起因导致内存溢出,有没有好的解决措施
1 内存中加载的数据量过于宏大,如一次从数据库中取出太多数据。
尽量采纳分页形式查问
2 汇合类中有对对象的援用,应用后没有清空,是JVM不能回收
34String和StringBuffer的区别
从运行速度方面来说 StringBuffer>String。String为字符串常量,不可变。当你给String字符串从新赋值时看上去是扭转了这个字符串,但实际上在jvm中是从新创立了一个对象,而之前的被垃圾回收了。如果一个StringBuffer对象在字符串缓冲区被多个线程应用时,StringBuffer中很多办法能够带有synchronized关键字,所以能够保障线程是平安的
String实用与大量字符串操作,StringBuffer实用于多线程下在字符串缓冲区进行大量操作
35StringBuffer和StringBuild区别?
36Error、Exception和RuntimeException的区别,作用又是什么?
Exception 是程序员导致的谬误,应该在应用程序级被解决
运行异样,空指针异样,数字格局异样,下标越界异样,类强转异样
Error 是不可被管制,常常用来示意零碎谬误,或者低层次资源谬误
37 事务的四大个性:
1 原子性:操作是不可拆散的,要么胜利,要么失败
2 一致性:数据库状态保留统一。比方转账,转账前后,相加的合放弃不变。
3 隔离性:不同事务之间应该隔开。比方B在批改事务,那么A应该看到批改事务之前,或者之后,而不是中间状态。
4 持久性:事务提交胜利,所有数据都被长久化保留在数据库中。
38 事务并发读问题?
能够通过设置事务的隔离级别。
脏读:一个事务读取到另一个事务没有提交更新的数据
不可反复读:对同一记录的两次读取后果不一样,在这期间对事务进行了批改
幻读:对同一张表的两次查问后果不统一,因为在两次查问期间,有事务进行了插入或者删除操作。
事务的隔离级别:4个。
1read uncommitted 读未提交的数据 安全性最差,以上都会产生
2read commit oracle默认
读曾经提交数据 只能够避免脏读,性能较好
3repeatable read mysql默认 可反复读
防脏读和不可反复读,不能避免幻读
4串行化 最高,数据拜访串行,不会有并发问题
- 数据库中如何将反复的数据去重(具体的sql语句)
- 数据库中存储的数据类型有哪些
- 整数 int bigint 实数类型 float,double
字符串类型,varchar,char,text等
42 varchar和char区别
1)Char固定长度 ; 2)Varchar可变长度 ; Char如果存入数据的理论长度比指定长度要小 会补空格至指定长度 如果存入的数据的理论长度大于指定长度 低版本会被截取 高版本会报错; 4)Varchar类型如果存入的数据的理论长度比指定的长度小 会缩短到理论长度 如果存入 数据的理论长度大于指定长度 低版本会被截取 高版本会报错; 5)Char 会节约更多的存储空间 而Varchar不会 ; 6)Char效率会更高 Varchar 效率偏低 ; 7)Char和Varchar在指定时必须要制订前面的数字
43 1. 如果数据库中有N张表,怎么统计表格的数量(具体的sql语句)
44 1. Linux中如何将服务器A近程连贯到服务器B(具体命令语句)
45 1. 说一说spring中bean对象的了解
46 我的项目公布到服务器的流程.
47 说一说依赖注入
用于解耦 三种形式实现
构造函数注入 set注入 接口注入
48 请介绍你最近做过的我的项目,我的项目中遇到过什么样的问题,你是怎么解决的?
49 Redis的运行原理是怎么样的,简略形容一下
50 你的我的项目外面哪里用了多线程?
在日志记录模块应用了多线程,因为多条记录仪器涌向数据库
51 GC回收具体讲一下?
52redis缓存讲一下
53String操作类有哪些?有什么区别?
String 和 StringBuffer、StringBuilder 的区别在于 String 申明的是不可变的对象,每次操作都会生成新的 String 对象,而后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 能够在原有对象的根底上进行操作,所以在常常扭转字符串内容的状况下最好不要应用 String。
StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程平安的,而 StringBuilder 是非线程平安的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下举荐应用 StringBuilder,多线程环境下举荐应用 StringBuffer。
54 Linux如何批改文件权限?
55具体说说你我的项目次要有哪些性能?
56你在我的项目中遇到的印象粗浅的问题?
57你理解几种IO?
58Hashmap和HashTable的区别?
Hashmap是线程平安的,table是不平安
hashmap初始值是16,table是11.HashMap是能够贮存null值和null键的,hashtable不能够。两者默认填充因子是0.75,hashMap扩容会翻倍。
59Redis的根本数据类型
list set zset String
60 如何在命令窗口打包
61 Linux一些根本命令
62 表格是怎么设计?