java面试2020及答案(第二弹)

最新java面试基础总结。如果有用欢迎点赞加评论。

  1. 重写和重载的区别
    方法的重载和重写都是实现多态的方式。重载实现的是编译时的多态性,重写实现的是运行时的多态性。
    重载发生在一个类中,同名的方法如果有不同的参数列表则视为重载;
    重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常。
  2. gc机制
    gc:即垃圾收集, 是指 JVM 用于释放那些不再使用的对象所占用的内存。在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用对象的内存,可能会导致内存的耗尽,所以垃圾回收机制回收的是内存。同时gc回收的是堆区和方法区的内存。当要进行垃圾回收时候,不管何种GC算法,除了垃圾回收的线程之外其他任何线程都将停止运行。垃圾回收机制有很多种,包括:分代复制垃圾回收、标记垃圾回收、增量垃圾回收等方式。
  3. SpringMVC如何实现后台校验(校验前台传过来的值是否合法)
    引入hibernate 校验框架的jar包。
    在实体类中增加要校验属性的注解。
    在控制层的处理器方法中增加模型参数的注解和BindingResult参数。
  4. @RequestBody注解的作用是什么
    一般情况下常用其处理application/json类型。通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,也可以将其分别绑定到对应的字符串上。
  5. Spring中如何全局捕获异常
    ①: @ControllerAdvice,@ExceptionHander()
    创建一个全局异常类,类上添加@ControllerAdvice和@ResponseBody返回json参数。也可以单独使用@RestControllerAdvice。且spring会扫描到此注解,所以无需配置注入bean。在方法上添加@ExceptionHander(value = “需拦截异常的class”),可以单独拦截某一个异常,也可以全拦截Excepiton。
    ②:在父类的baseController方法上加上@ExceptionHander()此方法与方法①类似,区别在于@ExcptionHander所在的类不一样。这个是在一个基类controller方法添加。缺点在于每个controller必需继承基类baseController。
  6. Spring mvc中如何注入properties文件的参数
    通过context:property-placeholde实现配置文件加载。
    通过util:properties实现配置文件加载。
    直接在Java类中通过注解实现配置文件加载。
  7. mybatis中 # { }和 $ { } 的区别是什么?
    ①#{ }是预编译处理, $ { }是字符串替换。
    ②mybatis在处理#{ }时,会将sql中的#{ }替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理$ { }时,就是把$ { }替换成变量的值。
    ③使用#{ }可以有效的防止SQL注入,提高系统安全性。
  8. Mybatis动态sql有什么用?有哪些动态sql?
    Mybatis 动态 sql 可以在 Xml 映射文件内,以标签的形式编写动态 sql,执行原理是根据表达式的值 完成逻辑判断并动态拼接 sql 的功能。
    Mybatis 提供了 9 种动态 sql 标签:trim 、 where 、set 、 foreach 、 if |、choose、 when 、 otherwise 、 bind。
  9. 什么是跨域问题?SpringBoot中如何解决跨域问题?
    跨域是指 不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
    通过实现WebMvcConfigurer接口,然后重写addCorsMappings方法解决跨域问题。一个http请求,先走filter,到达servlet后才进行拦截器的处理,如果我们把cors放在filter里,就可以优先于权限拦截器执行。
  10. 构造器(constructor)是否可被重写(override)?
    构造器不能被继承,因此不能被重写,但可以被重载。
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值