1.使用final 关键字修饰一个变量时,是引用不能变仍是引用对象不能变。前端
答:引用对象不能变,final Student stu = new Student();java
stu.setName("小明");sql
错:stu = new Student();数据库
2.abstract(抽象类)和interface(接口) 有何区别编程
回答这个问题,首先得一步一步的比较,在抽象类中成员属性能够只声明不赋值会有默认的初始值,接口中全部成员属性默认都是public static final 修饰的常量,不能没有初始值。抽象类中,方法能够是抽象方法,也能够是普通的方法,或者static修饰的方法。main方法也没有问题。能够有构造方法。接口中全部的方法都是抽象的。不能有static修饰的方法。抽象类的抽象方法只能继承他去实现。接口是经过实现。说完他们的不一样点,再说他们的相同点,他们都有抽象方法。而却他们都不能new。缓存
3.java八大数据类型安全
byte 、short 、int 、float 、lang 、double 、 boolean 、char服务器
他们都有相对应的包装类。他们之间能够隐式转换为相应的类型mybatis
4.instanceof 是什么app
instanceof 是比较运算符,比较两个类型是不是同一种类型
String a = new String("s"); if(a instanceof String){}
5. Integer 和 int 有什么区别。
Integer是int 的包装类。Integer初始值是null,int的初始值是0。使用Integer类型声明对象能够调用包装类里的方法。而int 不行。在jsp开发中el表达式Integer在页面显示的是空字符串。int在页面显示的是0
6.子类是否可以重写父类的static(静态)方法。
不能
7. String a = "a";建立了几个对象。String s = new String("s");建立了几个对象。String s = "a"+"s";又建立了几个对象。
String str = new ("a"+"s"); 又建立了几个?如下解释是针对String常量池中是什么都没有的。
1、建立一个"a"对象,放在常量池中。
2、建立了两个对象,new 是一个"s" 又是一个,new 的那个对象放在堆里,"s"放在常量池里。s变量指向堆里的对象,堆里的对象又引用常量池里的"s"。
3、建立了一个对象,放在常量池中。首先,在编译期间。"a"+"s" 会默认变成"as",而后运行时直接使用。
4、建立了两个,首先看完上面三个解释,第四个就无需解释了。
(注:这四个答案都是我本身所理解。若有错误但愿提点。谢谢!)
9.hashMap 和 hashTabel 有什么区别。
首先他们的实现不一样,hashMap是实现Map接口。hashTab
象。String s = "a"+"s";又建立了几个对象。
String str = new ("a"+"s"); 又建立了几个?如下解释是针对String常量池中是什么都没有的。
1、建立一个"a"对象,放在常量池中。
2、建立了两个对象,new 是一个"s" 又是一个,new 的那个对象放在堆里,"s"放在常量池里。s变量指向堆里的对象,堆里的对象又引用常量池里的"s"。
3、建立了一个对象,放在常量池中。首先,在编译期间。"a"+"s" 会默认变成"as",而后运行时直接使用。
4、建立了两个,首先看完上面三个解释,第四个就无需解释了。
(注:这四个答案都是我本身所理解。若有错误但愿提点。谢谢!)
9.hashMap 和 hashTabel 有什么区别。
首先他们的实现不一样,hashMap是实现Map接口。hashTable是继承Dictionary类。所编写的。
hashMap 容许一个null键,多个null值。hashTable不容许有null键或null值。线程安全问题:hashTable是线程安全的,由于线程安全,因此速度稍微的慢一点。hashMap是线程不安全的,速度快。
10.list和map有什么区别,
他们所继承的接口不一样。list是继承了colliction接口,map是map接口,底下有hashMap。
11.说出ArrayList和LinkedList的区别
ArrayList是先进先出,有下标,获取元素比较快,再者可以交换元素。
LikedList是双向链表结构。对插入元素和删除元素较快。可是获取元素就很难的。LinkedList提供了一些方法使得它能够看成堆栈和队列来使用。
12.Spring的IOC是什么?
IOC是Spring基于工厂模式所建造的一个容器。默认在容器的对象都是单例的。Spring帮咱们管理咱们各个组件的对象。也叫控制反转,熟悉java的人都知道,一个功能都大多都须要不少的类(对象)来完成,之前好比B类调用A类的方法时A类的生命周期是用B类来掌控的。如今Spirng帮咱们作着件事情。 把这个控制权交给Spring。可以依赖注入(在运行期间,由外部容器动态的将依赖对象注入到相应的组件中)。
13.说说Hibernate和MyBaties的区别。
首先,他们都是ORM(对象关系映射)框架。都对Java的jdbcAPI进行了封装屏蔽了底层访问细节,相对来讲Hibernate门槛稍微高一点,自动化建立sql。这是一个优势同时也是一个缺点,因为自动建立sql因此相对于一些复杂的sql语句很差写。虽然也可以本身的去编写sql语句而不是hql语句。但那样也就损失了Hibernate的可移植性。Hibernate可移植性强。Mybaties简单小巧,新手也能够迅速上路。须要本身的去编写sql语句。若是更换数据库那么须要从新编写对应的sql语句。Mybaties可移植性差。
这里可能说得太乱了,进行一些总结:
Hibernate 是一个全自动的 orm 映射工具,它能够自动生成 sql 语句,ibatis 须要咱们本身在 xml 配置文件中写 sql 语句,hibernate 要比 ibatis 功能负责和强大不少。由于 hibernate 自动生成 sql 语句,咱们没法控制该语句,咱们就没法去写特定的高效率的 sql。对于一些不太复杂的 sql 查询, hibernate 能够很好帮咱们完成,可是,对于特别复杂的查询,hibernate 就很难适应了,这时候用 ibatis 就是不错的选择,由于 ibatis 仍是由咱们本身写 sql 语句。 整体来讲: 1. hibernate 是当前最流行的对象关系 ORM 映射框架,彻底能够经过对象关系映射来实现对 数据库的操做,门槛高; mybatis 是半自动化的 ORM 映射框架,只作了字段映射,须要手动写 sql,但简单,小巧, 灵活,新手也能够很快上路。 2. hibernate 移植性好(dialect),mybatis 差,不一样的数据库须要写不一样 SQL。 3. hibernate 拥有完整的日志系统,而 mybatis 没有本身的日志统计,须要借助 log4j 4. hibernate 有更好的二级缓存机制,可使用第三方缓存。 MyBatis 自己提供的缓存机制不 佳。
14.MyBaties中编写sql语句时$和#有什么区别?
$ 号是不会防止sql注入的,会把实际值传入sql语句。例:order by ${user_id} 若是user_id的值是11, 传入sql的是order by user_id。若是传入的值是id则会解析为:order by id
# 号将传入的数据都视为字符串,自动的将值加上双引号。例:order by #{user_id} 若是user_id的值是11,那么解析成 order by "11"。若是传入的是id则解析为 :order by "id"
#号在很大的程度上防止了sql注入。而$号不行,通常能用#号,最好别用$号
15.Struts的优缺点
优势:
1.实现MVC模式(model,view,controller)。结构清晰使得开发者只关注业务逻辑的实现。
2.有丰富的tag 可使用,Strtus的标签库(taglib),如能灵活应用则能大大提高开发效率。
3.页面导航。使系统的脉络更加的清晰,经过一个配置文件,便可把握整个系统各个部分之间的联系。这对于后期开发有着很大的好处。尤为是另外一批开发者接手这个项目的时候。这种优点更加的明显。
4.提供了Exception处理机制
缺点:
1.须要配置forward,若是有十个展现层的jsp,须要配置十次struts,并且还不包括有时候文件目录的变动,文件的变动。须要从新修改forward。注意:每次修改配置的以后,要求从新部署整个项目。而Tomcat这样的服务器,还必须重启。
2.Struts的Action必须是thread - safe方式,它仅仅容许一个实例去处理全部请求。因此全部的Action都必须同步,这也就引发了线程安全问题。
3.前端表达式语言方面,Stuts继承了JSTL,因此他主要使用JSTL来获取数据,但是JSTL的表达式在Collection和索引属性方面处理得很弱。
4.Ajax请求比较复杂,没有很好的支持。
16.手写出SpringMVC的5个注解
@RequestMapping 、@Controller 、@RequestParm 、@PathVariable 、@ResponseBody 、
17.谈谈你对Spring的理解
Spring是一个开源的控制反转框架(Inversion of Conrol , IOC)和切面(AOP)的轻量级容器,是基于工厂模式实现的。
IOC:应用自己不负责依赖对象的建立及维护。依赖对象的建立及维护是由外部容器负责的。
ID:依赖注入是指程序运行期,由外部容器动态的将依赖对象注入到组件当中。
Spring提供了对AOP技术的良好封装。AOP称为切面编程。就是系统中有不少各不相干的类的方法。在这些众多方法中要加入某种系统功能代码,例如:日志,将入权限判断,加入异常处理。这种应用称为AOP。实现AOP功能采用的是代理技术,客户端程序再也不调用目标。而调用调用代理类。代理类和目标类对外具备相同的方法声明。
采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行加强处理,或增长新的功能。
AOP的做用是让咱们专心作事,将复杂的需求分解出不一样方面。将散布在系统中的公共功能集中解决。把必须作但又不是特别重要的任务集中解决。