# 企鹅杏仁
### 一面: 电话
* 介绍下HashMap、为什么要用红黑树而不是平衡二叉树 ?
* HTTP3有了解过么?
* TCP/IP 相关, 如果一个流没有关闭,会产生什么后果
* 为什么会有并发问题, 单核CPU会不会有并发问题,java 加锁关键字, synchronized 是什么锁
* 介绍下Spring中的设计模式、怎么实现声明式事务、什么情况下Spring的事务管理会失效?
* RabbitMQ架构、从消息发出到消费者ack
* 说下分布式锁, Redis 版实现
### 二面: 现场(笔试)
* 第一题: 简单的SQL题一道, 考察分组+时间函数+聚合统计函数
* 第二题: 给SQL加索引。
* 第三题: 基础算法, 有一个`List ` , 里面保存的是顺序打乱但是元素可能重复的字母 (如aaab,aabc,abcd,cbba), 如何根据元素来分组。
* 第四题: 给了一个方法, 里面几重if...else , 让你优化。 考察设计模式功底。
### 二面: 现场(面试)
面试官上来先让你选写的上家公司的使用到的技术栈, 让你点几个能问的深的, 只会调API的就不问了,然后他一个个问。
**大概问了这些:**
* 单例和多例, 分别有什么优点和缺点。 如果SpringMVC的Controller是多例的话会怎么样?
* MyBatis怎么解决SQL注入?
* Dubbo+ZK怎么保证服务调用重试时的幂等性?
* 分布式环境下 Dubbo+ZK 的架构。 如果有新的provider连上ZK, consumer在何时才能够使用他?
* Dubbo+ZK 如果provider挂了, 会影响到consumer么?
* RabbitMQ 消息消费怎么保证幂等性?
* RabbitMQ 要如何保证发送端的消息肯定能够发送到MQ Broker?
* Redis 的分布式锁怎么实现的? 哪些场景有用到?
* 线程池参数, 源码级别的核心线程初始方案
* MySQL 哈希索引和Btree的区别
* 说下 MySQL 间隙锁...查看更多