一、面试--郑州研实
1、“==”和 equals的区别和联系?
“==”比较基本数据类型时比较的是表面值内容,而比较两个的是两个对象的内存地址值;
equals方法,不能作用于基本数据类型的变量,如果对于没重写equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;例如string、date等对equals方法进行重写的话,比较的是所指向的对象的内容。
2、Mybatis中$和#的区别?
#是预编译,可防止sql注入;$是直接拼接在sql语句中
3、Springboot的核心注解是什么,又哪几个注解组成的
核心注解:@SpringBootApplicaiton
包含:
@SpringBootConfiguration实现配置文件功能
@EnableAutoConfiguration打开自动配置功能
@CompoentScan组件扫描功能
4、springboot的自动装配原理
在springboot应用里面,只需要在启动类上加@springbootApplication注解就可以实现自动装配了;@SpringBootApplication注解是一个符合注解,真正实现自动装配的注解是@EnableAutoConfigation注解;自动装配的三个核心关键技术:
- 引入starter启动 依赖组件的时候,这个组件必须要包含@Configuration配置类,在配置类中用@bean注解声明需要装配到ioc容器中的bean对象。
- 这个配置类是放在第三方jar包里面的,然后通过springboot约定优于配置的思想,要把这个配置类的全路径放在classpath:/META-INF/Spring.factories文件中。这样springboot就知道了第三方jar包中配置类的位置,这个步骤主要用到了spring里面的SpringFactoriesLoader来完成的。
3、springboot拿到第三方jar包中声明的配置类后,再通过spring提供的importSelector接口,实现对这些配置类的动态加载。
5、rabbitMQ削峰
在访问量剧增的情况下,但是应用仍需要发挥作用,但是这样的突发流量并不常见。而使用消息中间件采用队列的形式可以减少突发访问的压力,不会因为突发的超负荷而崩溃。
6、Mysql优化
- 使用更小的整数类型、尽可能的定义字段为not null
- 只创建需要的索引、分库分表
- 使用explain检查复杂的sql语句
- LIMIT语句尽可能要跟order by或者distinct
- 插入多条数据时使用单条insert语句
7、垃圾回收机制
在java中,程序员是不需要刻意的去释放一个对象的内存,而是由虚拟机自动执行。在jvm中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者堆内存不足时,才会触发执行,扫描那些没有被任何引用的对象,并将他们添加到要回收的集合中,进行回收