岸柏科技(深圳)有限公司社招Java工程师(二面)
和上午同样的面试官,所以没有千篇一律的自我介绍了。。。。
直接开门见山聊项目……:
- 项目用的是SpringBoot ,你能说下 Spring Boot 与 Spring 的区别吗?
-
Spring Boot可以建立独立的Spring应用程序;
-
内嵌了如Tomcat,Jetty等web容器,用不着再做部署工作了。
-
无需再像Spring那样搞一堆繁琐的xml文件的配置;
-
可以自动配置Spring;
- 提供的POM可以简化Maven的配置
- ……
-
- SpringBoot 的自动配置是怎么做的?
-
自动配置取代了xml繁琐的模式,对比以前的配置组件扫描、调度、以及试图解析器等,使用springboot自动配置只需要添加mvc组件即可自动配置bean,所偶的实现都在spring-boot-autoconfigure依赖中
- 通过 @EnableAutoConfiguration 核心注解初始化,并扫描 ClassPath 目录中自动配置类对应依赖。比如工程中有木有添加 Thymeleaf 的 Starter 组件依赖。如果有,就按按一定规则获取默认配置并自动初始化所需要的 Bean。
……
-
- MyBatis定义的接口如何找到实现?
Mapper 接口在初始SqlSessionFactory 注册的,Mapper 接口注册在了名为 MapperRegistry 类的 HashMap中, key = Mapper class value = 创建当前Mapper的工厂,Mapper 注册之后,可以从SqlSession中get,SqlSession.getMapper用了JDK动态***,产生了目标Mapper接口的***对象,动态***的 ***类是 MapperProxy ,这里边最终完成了增删改查方法的调用。
4. 了解消息队列吗?
5. 你项目中为什么要用消息队列?
6. 如果系统中,每天会有上亿级数据量,请问你如何设计系统?
这个问题实际是上个问题的延续,加入分布式、集群等,nginx负载均衡,消息队列存储,对线程读取,数据库分库分表……
7. 分库分表怎么分?消息队列存储满了怎么办?数据迁移问题?
实际上还是上个问题的延续,结合自己的实际工作经验、项目经验。
8. 多线程应用程序中的线程池了解吗?
9. 你项目中线程池的应用,即线程池的应用场景,哪几种工作队列?
10. Java内存对象结构?
11. 如何判断某个对象是否可以被GC?
12 .垃圾回收算法、垃圾回收器的了解?
13. 讲讲springcloud个组件原理,zuul、Hystrix等
14. 设计一个秒杀项目,如何设计后台?
总结:大部分偏重项目经验,项目中应用的各种技术栈和理由,以及框架底层原理、Java虚拟机底层。