Java面试题

-1. JAVA抽象类和接口的区别?

抽象类:包含抽象方法和被abstract修饰的类是抽象类;抽象方法只有方法声明没有具体实现;类型必须是public或protected的;抽象类不能被实例化;抽象类的子类要实现父类的抽象方法否则就要用abstract修饰类。
接口:接口的变量必须是public static final类型的;接口里面只能有抽象方法不能有具体实现;抽象方法类型必须是 public abstract的。
抽象类和接口的区别:抽象类的变量可以是任何类型的而接口的变量必须是public static final的;抽象里面可以有静态代码块和静态方法,而接口里面不能有静态代码块和静态方法,抽象类里面可以有方法实现,而接口里面的方法必须都是抽象方法。
- 2.String、StringBuffer、StringBuilder的区别?

可变与不可变的区别: String是被final修饰的,所以是不可变的,StringBuffer、StringBuilder是可变的。
线程安全与非安全的区别:
String是线程安全的,StringBuffer是线程安全的,StringBuilder是非线程安全的。
不考虑线程安全问题StringBuilder效率高。
- 3.String可以被继承吗?

String是被fianl修饰过的,所以不能被继承。被final修饰过的类都不可以被继承。
- 4.JAVA中有几种内部类?

成员内部类;属于外部类的成员;成员内部类中不能有static类型的变量和方法,因为他会先加载外部类再加载内部类,局部内部类;是定义在代码块内或方法内,匿名内部类;也就是没有名字的类,匿名内部类是需要先被定义的;静态内部类。(不太确定是有 继承内部类)
-5. final、finally、finalize的区别?

final修饰符:三种用法 修饰类被fianl修饰过的类不能被继承;修饰变量被fianl修饰过的变量在使用中是不能改变的,修饰变量时就需要给定初值;修饰方法同样不能被子类重写。
fianlly: 通常放在 try…catch…的后面总是执行代码块,这意味着无论正常执行还是出现异常 只要jvm不关闭fianlly这里的代码都会被执行。
finalize: object类中定义的方法,可以使用fianlize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写fianlize()方法可以整理系统资源或者执行其他清理工作。
- 6.JDK有那些源生注解?

@Override:限定重写父类方法,只能用在方法上
@Deprecated :用于表示某个程序元素(类,方法等)已过时,但是仍可执行,只是针对在新编译环境下的旧代码,来提醒程序员代码过时
@SuppressWarnings :抑制编译器警告
- 7. mybatis的#{}和${}符号区别?

#{}解析的是占位符,可以防止SQL注入,
${}传入的值将直接显示在SQL中,不能防止SQL注入。
要尽量使用#{},排序的时候要使用${}

-8.什么是Spring?

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
-9.Spring的核心模块有哪些?

Spring至今集成了20多个模块,有Spring Core /AOP /ORM/DAO/WEB/Context/MVC
-10.使用Spring框架带来了哪些好处?

可以有效的组织中间层对象
DI有效的降低耦合
AOP提供通用的任务的集中管理
ORM/DAO简化了对数据库的访问
高度开放,不强制(贯穿 表现层、业务层、持久层)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值