面试问题如下:
一面(主要看基础):
先自我介绍,讲讲自己基础掌握情况,以及项目经历平时会用到哪些数据结构?链表和数组的优缺点?解决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调优、数据库调优都行!给了个场景,问你怎么调?
三面(数据库):
依然是介绍自己数据库的高可用架构是怎么样的?如何保证数据库主从一致性?知道mysql的索引算法吗?为什么mongodb的索引用了B树,而mysql用B+树?用mysql过程中,有遇到什么问题么?生产用的是哪种事务隔离级别,为什么?谈一谈你对微服务架构的理解?用过哪些RPC框架,讲讲他们优缺点?用过docker吗,对容器了解多少?
四面(偏架构方面):
介绍一下自己,讲讲项目经历项目中微服务是怎么划分的,划分粒度怎么确定?在实践微服务架构中,有遇到什么问题?在关于微服务间数据一致性问题,是如何解决的?为什么不用其他的MQ,最终选择了RokcetMQ?为什么RocketMQ没有选择ZooKeeper,而是自己实现了一个NameServer集群?Zookeeper在选举的过程中,还能对外提供服务么?对Paxos算法了解多少?如果让你来设计一个春晚抢红包架构,你会怎么设计?有什么想问我的?
五面(HR面):
聊人生谈理想,HR很ncie,主要交流为什么选择来阿里,未来的打算职业规划以及待遇等,交流挺愉快。
面试经验总结:
技术基础必须扎实:算法、数据结构、操作系统等,蚂蚁金服面试对技术的基础非常重视,基础扎实的同学有利于在前两轮突出重围。技术宽度:主要集中在高并发、多线程、分布式架构,大以及常用中间件(缓存等)的选型和比较。技术原理深入:重点还是提前准备好JVM、多线程高并发这块。参与的项目总结:你需要清楚你所做项目的关键细节、优化、特点、原理。很多所用第三方库&中间件等的原理,即使你不知道,也要有自己的想法能够说出如何代替实现,比如单点登录的替代方案。最后,千万不要倒在HR面试环节,避重就轻是重点,特别是优点和缺点,如果问到你的规划是什么,请记得一定告诉HR你想成为一名优秀的技术专家!
网友评论