跟谁学Java面经,一面、二面
牛客还愿,跟谁学春招面经
一面:
- 自我介绍
- 项目介绍(项目的贡献,负责的模块,自己说了下自己负责模块部分重构的地方)
- mysql 索引
- mysql 最左前缀原则
- 事务隔离级别
- 事务引发的问题
- mysql 的 RR 级别实现(一致性视图)
- SQL 的部分调优
- TCP 3次握手
- Redis 的基本数据结构与RedisObject
- ArrayList 与 LinkedList 的区别
- 单例模式的实现的几种方式
- 会 ES 不(不会)
- 会 RocketMQ 不(不会,自己只会 rabbitMq)
- 算法:leetcode 721 账户合并
- 反问环节
二面
- 简单自我介绍
- 大学里学了些什么,并且获得了哪些知识,在什么地方用到了,有什么成绩能体现出你学到了什么水平
- 实习经历
- 项目介绍
- Java 里面的锁
- Java 多态
- 说下 HashMap
- HashMap 中链表与红黑数的互相转换,三个参数,三种情况(扩容与remove都会导致退化)
- 创建对象的几种方式
- 创建对象的过程(类加载等)
- jdk 动态代理与 cglib 动态代理的区别
- 两种代理模式哪种更有优势,在哪里体现的
- synchronized 是怎么实现的(这里自己根据锁升级、markword、monitorObject进行了对应的回答)
- AQS 系列,CLH锁,加锁的流程
- CAS 怎么实现的(底层实现,这里只是回答到了原语的那部分,自己还得再挖一层)
- CAS 的不足
- 内存置换算法
- 说下熟悉的垃圾回收器(CMS、G1)
- GCRoot 都有哪些
- MQ 解决什么问题,并举一个例子(本来要问rocketmq的,但是自己只玩过rabbit,所以转到了mq这个问题上)
- MQ 会产生什么问题,怎么解决的
- 功能设计:设计一个安全的用户手机验证码登录
- 算法:因为时间的原因,简单问了下快排的实现,最好、最坏、平均时间复杂度以及对应的情况
- 平时在哪刷算法的,刷了多少之类的
- 印象最深的算法是什么
- 反问:面试中有什么不足,需要怎么提升