写在片头:声明,勿杠
首先简单说一下,这三次面试阿里并不是一次性去面的,实际上第一次面试时候还在大四,找的实习岗,不太清楚是什么部门,别问我为什么还记得面试题,有记录和复盘的习惯,再问就是杠。
个人背景不详细多说,学历双非本科,不是应届生,工作年限不长,技术不是大牛,但也非小白,面经分享是想给正面试的同行一些建议和鼓励,希望能够多多支持。
One:三顾茅庐,七面阿里,拿下25K*16offer
——一顾阿里一面被怼(未知部门)
阿里巴巴未知部门一面(问的问题让我感觉是偏金融的部门,面试官很严肃,现在想想都有些后怕)
-
自我介绍
-
开源项目贡献过代码么?(回答没有,很尴尬)
-
之前在部门做什么?简单介绍一下业务吧,内部有哪些系统,作何交互过程说一下
-
Dubbo踩过哪些坑?分别是怎么解决的?(我答了异常处理时业务异常捕获的问题,自定义了一个异常拦截器)
-
说下你对线程安全的理解
-
事务有哪些特性?
-
怎么理解原子性?
-
讲一下乐观锁和悲观锁的区别,这两种锁在Java和MySQL分别是怎么实现的?
-
HashMap为什么不是线程安全的?怎么让HashMap变得线程安全?两者的区别是什么?
-
jdk1.8对ConcurrentHashMap做了哪些优化?为什么这样优化?
-
redis主从机制了解么?怎么实现的?
-
有过GC调优的经历么?(有点虚,答得不是很好)
-
List,Map,Set三个接口存取元素时,各有什么特点?
-
TreeMap和TreeSet在排序时如何比较元素?Collection工具类中的sort()方法如何比较元素?
-
Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行 它们有什么区别?
-
线程的sleep()方法和yield()方法有什么区别?
-
当一个线程进入一个对象的synchronized方法A之后 其他线程是否可进入此对象的synchronized方法b?
-
请说出与线程同步以及线程调度相关的方法
-
synchroized关键字的用法?
-
启动一个线程是调用run()还是start()方法?
-
有什么想问的么?
——二顾阿里二面惨败(菜鸟网络)
阿里巴巴菜鸟网络一面:
-
先来了个自我介绍
-
然后介绍了自己简历里写到的一个比较熟悉的项目(询问了项目的细节及具体的实现)
-
接着面试官开始针对项目进行提问:(1)高并发的情况下,Kafka消费到第一条记录,在下沉服务处理好,但由于网络抖动没有正确返回给上层,上层服务再次调用服务,怎么样保证只处理一次请求?(我答了分布式锁,介绍实现)(2)有自己用Redis实现过吗?说说看
-
介绍一下Redis的zset实现(回答的根据skiplist+has