不知道多少人为了去阿里技术部看看,经历过什么,本人的为了面阿里,前后准备时间和面试一共花费了6个月的时间。
在面试前三面真的有点急促,一周内就面完了三次面试,接着就开始无尽的等待,整整等了三周左右,终于完成了四面和HR面。整个过程还是比较曲折的,技术面试还是挺考察技术深度的。现在已拿到offer。
面试问题如下:一面(主要看基础):
先自我介绍,讲讲自己基础掌握情况,以及项目经历
平时会用到哪些数据结构?
链表和数组的优缺点?
解决hash冲突的方法有哪些?
讲讲自己对HashMap的理解,以及和Weakhashmap的区别?
你刚才讲的是JDK1.7版本的实现,知道JDK1.8做了哪些改动么?
你们在微服务中用RPC通信还是REST?
RPC和HTTP的关系是什么?
谈谈什么是HTTP的长连接和短连接?
TCP的三次握手和四次挥手,以及为什么要三次握手,而不是二次?
TCP 有哪些状态,相应状态的含义?
并发包中锁的实现底层(对AQS的理解)?
乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
SynchronizedMap和ConcurrentHashMap有什么区别?
如何使用阻塞队列实现一个生产者和消费者模型?
简述一下Java 垃圾回收机制?
如何判断一个对象是否存活?
什么是tomcat类加载机制?
类加载器双亲委派模型机制?
让你评价一下你自己?
二面(主要问了底层和算法):
扯了下项目、讲一下项目经历
redis的底层数据结构了解多少?
知道动态字符串sds的优缺点么(redis底层数据结构之一)?
redis的单线程特性有什么优缺点?
用过 Redis 的哪些数据结构, 分别用在什么场景?
怎么解决缓存击穿问题的?
Hytrix的隔离机制有哪些?Hytrix常见配置是哪些?
做过哪些调优?JVM调优、数据库调优都行!
给了个场景,问你怎么调?
三面(数据库):
依然是介绍自己
数据库的高可用架构是怎么样的?
如何保证数据