JAVA常见面试题2

1,重载(Overload)和重载(Override)的区别,重载的方法能否根据返回类型区分

重载:是编译时多态,方法名相同,参数列表不同(参数类型不同,个数不同,顺序不同),与方法的返回修饰符无关

重写:是运行时多态,发生在父子类中,方法名,参数列表必须相同.返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类(里式代换原则);如果父类的方法访问修饰符是private则子类中就不是重写

2,Collection和Collections有什么区别

java.uitil.collection是一个集合接口,它提供了对集合对象的基本操作的通用接口方法,Collection在java库中有许多具体的实现,Collection的意义是为各种具体的集合实现了统一操作方式

List和Set是直接继承了Collection

Collections是集合类的一个工具类/帮助类,其中提供了一系列方法,用于对集合进行排序,,搜索,以及线程安全等操作

3,HashMap 是使用了哪些方法来有效解决哈希冲突的:

链地址法来连接拥有相同hash值的数据

使用两次hash函数来降低哈希冲突的概率,使得数据发布更平均,

引入红黑树进一步降低遍历时间复杂度,使得遍历更快

4,Spring Boot 自动配置原理是什么

注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核 心, @EnableAutoConfiguration 给容器导入 META-INF/spring.factories 里定义的自动配置类。

筛选有效的自动配置类。 每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能

快速创建独立运行的spring项目以及主流框架集成

使用嵌入式的Servlet容器,应用无需打成war包

starters自动依赖与版本控制

大量的自动配置,简化开发,也可修复默认值
无需配置XML,无代码生成,开发即用

准生产环境运行时的应用监控

与云计算的天然集成

5,spring boot 核 心 配 置 文 件 是 什 么 ? bootstrap.properties 和 application.properties 有何区 别

application和bootstrap是核心配置文件

一般来说bootstrap是由它的父类application优先加载,配置在应用程序上下文的引导阶段生效,一般来说我们在 Spring Cloud Config 或者 Nacos 中会用到它.booststrap里面的属性不会被覆盖

application由applicationContext加载,用于springboot项目的自动化配置

6,什么是CSRF攻击

CSRF代表跨站请求伪造,攻击者诱导受害者进入第三方网站,在第三方网站中向被攻击网站发送跨站请求

CSRF的攻击过程及原理

1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
CSRF攻击实例

7,如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot 项目如何热部署

可以使用DEV工具来实现,通过这种关系,你将可以节省任何更改,嵌入式tomcat将重新启动,

SpringBoot有个开发工具(DevTools),有助于提高开发人员的生产力

JAVA开发人员面临的主要问题是,文件自动部署到服务器并自动重启服务器

开发人员可以重新加载springboot上的更改,而不需要重新启动服务器

这将消除手动部署的需求,Springboot在第一版是没有这个功能的,这是开发人员最需要的功能,DevTools完全满足了开发人员的需求,该模块将在生产环境中被禁用,它还提供了H2数据库的控制台以更好的测试应用程序

8,Spring中的Starter

starter不是新技术点,还是基于Spring原有的功能实现的,

首先它提供了一个配置类,一般叫XXXAutoConfiguration,在这个配置中,通过条件注解来决定这配置是否生效

它还会提供一系列默认配置,也可以根据开发者实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进去,新的注入属性会替代掉默认属性

正因为如此,很多第三方框架我们只需要引入依赖就可以直接使用,

开发者也能自定义Starter

9,什么是字节码?采用字节码的最大好处是什么

java源码经过虚拟机编译后产生的文件,它不面向任何处理器,只面向虚拟机

一定程度上解决了传统解释型语言执行效率低的问题,又保留了解释型语言可移植的特性

10,Java 和 C++的区

都是面向对象语言,都支持继承,封装,多态

java不提供指针来直接访问内存,程序内存更加安全

java的类是单继承,C++支持多继承

虽然java的类不能多继承,但是接口可以多继承

java有自动内存管理机制,不需要程序员手动释放无用内存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值