快手Java一面
- Java数据类型
- ArrayLIst和LinkedList,底层原理
- HashMap底层原理,是线程安全的吗
- 有线程安全的HashMap吗,有了解过吗
- JUC了解哪些(线程池)
- 讲讲线程池的参数,有什么拒绝策略
- 常用的垃圾回收算法,有什么垃圾回收器(G1,CMS)
- 问了一下G1和CMS(没回答上来)
- Spring两个特性(IOC,AOP)
- AOP的实现(答出了两种大致的思路,名字忘了)
- SpringBoot相对于Spring有什么改进(自动配置,tomcat)
- 你能给我讲讲tomcat容器在SpringBoot是怎么使用的吗?(不会,问了面试官)
- MyBatis解决了什么问题(答了连接复用,面试官说是ORM)
- MyBatis底层是怎么实现的?(不会,面试官说是动态代理)
- 说出两个MyBatis注解
- MySQL索引讲一讲
- Redis讲一讲常见的数据类型
- 它们的底层实现呢(之前感觉不重要就没看。。)
- 项目经历
- 使用RabbitMQ的经历
- 为什么要用MQ(线程池不安全,放在MQ里持久化)
- 消息队列是幂等的吗(消费成功就不是幂等的,消费失败就是,面试官笑了)
- 一个消息在消息队列里产生了两份,怎么样保证不重复消费(MySQL里弄个字段标记一下状态)
- 队列里消息比较多,查询会比较慢,那该怎么解决呢?(线程池线程数多弄一点,避免堆积,我自己都想笑)
- 给我讲讲MySQL分库分表(垂直,水平,以及具体的经验)
- (根据ID进行水平分表)你这个是根据ID进行查询的,那要是查询条件不是ID的话,多表查询你怎么解决(用中间件ElasticSearch)
- 做题,最长回文子串
- 反问
总结:面试体验很好,很愉快