1,使用Spring框架的好处是什么?
答:1,一个轻量级的框架,大概只有2M
2,IOC 依赖注入,不需要创建对象,只需用的时候将对象注入
3,AOP切面编程,将业务逻辑和系统逻辑分开处理
4,springMVC,是一个经过精心编制的web框架,可以更加方便web开发
5,spring的容器可以对对象进行生命周期的管理和配置
2,ApplicationContext通常的实现是什么?
答:1>FileSystemXmlApplicationContext:此容器从一个XML文件中加载bean的定义,XML Bean配置文件的全路径名必须提供给它的构造函数
2>ClassPathXmlApplicationContext:此容器也从一个XML文件中加载bean的定义,这里需要正确设置classpath因为这个容器将在classpath里找bean配置
3>WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean
3,什么是Spring的依赖注入?有哪些方法进行依赖注入
答:依赖注入也叫控制翻转,就是对对象的创建不需要开发人员去创建,只需要注入被调用放,由spring的容器创建对象,注入的方式有set注入,构造器注入,还有就是接口注入。我们接下来会有一章专门讲spring的ioc以及ao'p。
4,什么是Spring beans?
答:表示被spring管理的对象,具体说来,它是被Spring框架容器初始化、配置和管理的对象。Spring bean是在Spring的配置文件中定义(现在也可以通过annotation注解来定义),在Spring容器中初始化,然后注入到应用程序中的。
5,解释Spring支持的几种bean的作用域
答:支持5中bean的作用域
1,single,单例是默认的模式非线性安全的但是不是每次请求都创建对象。
2,property,这个每次getBean的时候都会创建一个,但是创建后spring就不管了
3,request,web应用跟property一样,只是创建后spring实时监听
4,session,http的session请求每次请求都创建创建后spring实时监听
5,Globalsession每个全局的HTTP Session
6,解释Spring框架中bean的生命周期。
答:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁
7,在 Spring中如何注入一个java集合?
答: 看下这个配置就懂了
<!-- Bean Definition to handle references and values -->
<beanid="..."class="...">
<!-- Passing bean reference for java.util.List -->
<propertyname="addressList">
<list>
<refbean="address1"/>
<refbean="address2"/>
<value>Pakistan</value>
</list>
</property>
8,解释不同方式的自动装配 。
答:no:默认的方式是不进行自动装配,通过显式设置ref 属性来进行装配。
byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。
byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,之后容器试图匹配、装配和该bean的属性具有相同类型的bean。如果有多个bean符合条件,则抛出错误。
constructor:这个方式类似于byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。
autodetect:首先尝试使用constructor来自动装配,如果无法工作,则使用byType方式
9,Spring框架的事务管理有哪些优点?
答:Spring 框架的事务有声明式事务和编程式事务,拥有ACID4大特性,使用起来简单方便,只需在配置文件中添加事务类,使用的时候不需要手动的开启和提交,Spring将其封装好类已经甚至异常回滚就可以直接调用。
10,什么是基于Java的Spring注解配置? 给一些注解的例子?
答:基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分
Spring配置而非通过XML文件。以@Configuration 注解为例,它用来标记类可以当做一个
bean的定义,被Spring IOC容器使用。另一个例子是@Bean
注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文
11,什么是ORM?
答:对象关系映射,就是标准的mvc 中的model定制的,使代码层次结构清晰,通过对象去操作数据库,提高sql语句的复用。
12,Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?
答:参照
https://blog.csdn.net/chenggang_zh/article/details/79593538
SessionFactory对应Hibernate的一个数据存储的概念,它是线程安全的,可以被多个线程并发访问。SessionFactory一般只会在启动的时候构建。
Session是一个轻量级非线程安全的对象(线程间不能共享session),它表示与数据库进行交互的一个工作单元
13,MyBatis中使用#和$书写占位符有什么区别?
答:#传入的数据作为字符串,$传入的数据直接显示,ordeby 语句中用的是$
14,解释一下MyBatis中命名空间(namespace)的作用?
答:MyBatis中命名空间(namespace)对应的是dao层接口的包名+类名,mybatis 通过这个命名空间不用进行接受的实现,既可以找到对应的sql语句。
15,MyBatis中的动态SQL是什么意思?
答:根据需要动态的改变查询条件,动态标签有if,choose,where ,set 等
16,JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
答:1,JDBC不停的对数据库进行链接释放对系统性能造成压力,MyBatis运用链接池解决这个问题
2,JDBC直接操作数据库繁琐,MyBatis将对象和mapper.xml文件分开可重复复用,并动态执行语句,对返回结果也有比较好的维护。
17,简单的说一下MyBatis的一级缓存和二级缓存?
答 :sqlsession 为一级缓存,session为二级缓存,二次执行sql 的时候一般从session中获取DML(增删改)会将二级缓存清除,默认二级缓存是不开启的需要进行配置,而且二级缓存如果开启对象应该实现序列化。
参考
https://www.cnblogs.com/happyflyingpig/p/7739749.html
17,请简述在浏览器中输入一个 URL 至页面呈现,网络上都发生了什么事?
答:首先拿到这个地址的时候要进行本地host解析,如果本地hosts没有则用dns解析成ip,通过tcp 三次握手建立链接,发送到服务器上,服务器收到请求以后处理返回,页面收到返回请求进行浏览器解析分析数据请求需要的外部文件,jpg,css,js什么的,进行页面的渲染。
18,hashmap 为什么是线程不安全的?
答:hashmap 在进行多线程操作的时候,若简单的put 或者del 都会造成线程安全的问题,当进行put 的时候,若A和B两个线程同时对同一个数组位置下的链表进行put(都是先找到头部从头部插入),若A先找到头部的位置,时间片到了,这个时候B开始进行put也找到了图片的位置并进行put,此时时间片又到了A,A直接进行put,将原先Bput的东西给覆盖了,此时就造成了数据丢失。
还有就是在进行扩容的时候,数组会进行2倍长度的扩容,这个时候会重新进行hashcode,可能将链表中的位置指向改变,此时B记录的指向是相反的,就会形成指向循环,当进行get操作的时候,如果,发现key值对应不上,会继续找下一个指针,这样就一直在两个之间进行循环,造成死循环。