秋招面经-小米-软件开发工程师-java方向
1、自我介绍
2、项目 1 拷打
3、实习拷打
4、WebSocket 在 Spring 框架中涉及到的一些类或者注解有哪些?
5、你认为使用 WebSocket 进行客户端与服务端的通信时,需要在业务侧写代码来做消息的确认吗?
6、一个微服务系统会涉及到哪些组件?项目中用到了哪些?
7、项目中 ES 的叶子查询是如何实现的?
8、MySQL 中有哪些存储引擎?InnoDB 和 MyISAM 的区别?
9、为什么 InnoDB 选择 B+ 树作为索引?
10、数据库的第三范式?数据库的设计为什么要遵循三范式?
11、Spring 中处理一个请求,会经过 Spring 的哪些模块去处理?
12、Spring 中的类在它启动之后,会执行哪些方法或者用到哪些注解?
13、静态代码块和构造方法,哪个先执行?
14、构造方法和 Autowried 哪个先执行?
15、了解过 @PostContrust 注解吗?这个注解和实现 InitializingBean 接口重写它的 init 方法,哪个先执行?
16、Java 中 HashMap 和 ConcurrentHashMap 有什么区别?
17、什么是一致性哈希?和正常的哈希有什么区别?
18、用过哪些设计模式?
19、线程的创建方式有哪些?
20、实现 Runable 接口创建线程和实现 Callable 接口创建线程有什么区别?哪一种接口可以拿到执行的结果?
21、一般线程池通过什么方式来创建?线程池有哪些核心参数?
22、谈谈线程池工作的流程
23、核心线程是一开始就创建了还是任务来了才创建?
24、假设一个场景,分别部署了 A 和 B 两个服务,A 服务需要调用 B服务,B 服务的执行时间比较长。B 服务执行完毕后,需要把结果返回给 A 服务,请你设计解决方法,如何让 A 和 B进行一个交互?(三种方案)
25、假如你有两个很大的集合,每个集合本身的数据是不重复的,但是两个集合之间的数据是存在重复的。集合很大,加载到内存中会出现问题,请你从数据结构和算法的角度来考虑,怎么样去找到两个大集合的重复元素?
26、假如在实际生产中,有一个接口的请求响应时间比较慢,如何去排查?
27、手撕:力扣 20.有效的括号;(2)手写单例模式