这次去阿里面试的是我老东家的好朋友,我们之前都是一个项目组的,一起吃饭,一起洗脚,一起。。。
他们公司最近也裁员了,不过他是裁员前去的阿里,不知道谁捞到他简历了,莫名就走了流程,他莫名的就面了7轮过了。
他想着行情这么不好,要不就去了,去了之后,他们公司就裁员了。。。
总之今年大环境真的很差,大家都时刻做好准备,我朋友简历上是写了精通dubbo的源码,所以你们会发现,面试中dubbo的问题很多,他面经写得算是比较简单,但是真实问的过程肯定会扣肯定细节。
他分享的面经我写在下文,另外还向他请教了准备阶段的资料,是阿里一个师兄分享的阿里巴巴内部2022年Java架构师岗面试题(正式版),大家如果要面试得好好准备一番,需要这份资料的小伙伴也可以私star我【111】即可分享获取~
面试总共花费20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试
电话面试(基础知识为主,约2小时):
1,先自我介绍,包含日常工作
2,基础知识
1)多线程(ThreadLocal(问了父子线程怎么共享数据 interitableThreadLocals)、lock和sync区别(问HashMap1.7、1.8区别时带出)、AQS原理(执行过程源码,入队出队的细节,源码细节)、CountDownLatch和CyclicBarrier的区别是什么源码级别、volatile从指令重排序,内存屏障,聊到总线风暴)所占比重较大
2)数据库(mysql索引(聚集索引、非聚集索引、索引结构(顺带会问各种树的特性)、执行计划、count1*区别、举例优化sql、MVCC和事务隔离级别的关系、间隙锁、行锁(和多线程混合问的,乐观锁悲观锁等)、唯一索引和普通索引的区别聊到了changeBuffer,聊了页分裂合页合并)比重较大
3)jvm调优(可达性分析算法中根节点有哪些、cms和G1区别、怎样GC调优、怎样排查CPU彪高、内存彪高、逃逸分析)
4)redis数据结构、跳跃表、redis qps能上多少,怎么知道的、sentinel和cluster区别和各自适用场景、redis cluster集群同步过程、redis单线程为什么快、多大叫大key、热key产生原因和后果以及怎么解决、本地缓存需要高时效性怎么办.....
5)spring的作用、spring循环依赖怎么解决(说出三级缓存源码细节)、spring aop原理(动态代理)、spring bean生命周期(源码细节,以及各个位置的设计思路,有什么可扩展的)
6)dubbo服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码
7)项目中碰到的问题。
8)为什么换工作,如果通过会直接说有笔试题,和你确认笔试时间。
笔试两道题,第一题写代码,第二题写技术方案,以查询为主,考察锁粒度、时间粒度上的细节点。
电话面试(解决方案为主,约1.5个小时) 1,自我介绍、项目介绍
2,说到缓存穿透,让我设计一个防止缓存穿透的解决方案,简单的就是存null值,但肯定会深究,可以结合布隆过滤器,设计分布式系统,里面又会问到流量分发到具体过滤器服务的方式,比如一致性hash算法,怎么调用?比如dubbo直连、等等细节会边说边问。
3,有没有做限流,设计一个侵入性最小的限流服务。
4,项目中碰到的问题,最好说框架本身问题,能提现个人能力,也避免问题太低级被面试官看low,刚好之前有发现一个dubbo的bug,所以这问题应该回答的还可以。
5,为什么换工作,每轮都会问,这个得想好。
电话面试(项目为主,40分钟,应该是交叉面,问的不算多)
1,介绍最熟悉的项目,业务上有没有什么优化点;和同行业其他公司的差距和优势(估计是P7的标准问题吧。。。我是没咋说好)
2,dubbo服务调用过程(说着说着说到服务暴露和引用上面,他直接说这个之前问过了。。不用重复说,所以面试应该有记录面试问题)
3,NIO、BIO区别,NIO解决了什么问题,Netty线程模型(源码拷问)。
4,MQ相关(RocketMQ、kafaka奇怪的是你写啥面试官问啥,面试官啥都会,技术广度深度令人发指)
电话面试(这位面试官比较较真,什么问题都会问具体数值,但和他挺聊得来的,向他请教阿里那边方案也会耐心指导,1.5小时)
1,项目介绍
2,听到说做了限流,限流标准(并发数? qps?并发数和qps关系?说出了5种限流方案和对应算法原理)
3,dubbo调用端怎么在jvm中生成对应服务?dubbo服务端和调用端超时时间设置和区别、dubbo长连接。
3,mysql行锁最大并发数?(秒杀项目指出)
4,设计秒杀系统,我说的异步的方式,会问怎么优化?改为了同步的方式,异步和同步区别? 然后我也问了阿里那边
5,碰到哪些技术难点?怎么解决?有没有参考其他大厂?其他大厂方案什么样的?有没有关注阿里这边最新的技术?
6,刚刚的秒杀系统,会涉及到多个库表的更新,分布式事务怎么解决,我说的消息最终一致性,异步?有没有更好的方案?同步TCC方式,TCC方式原理?(三个阶段的具体实现)
以上是技术面。
主管视频面试:个人介绍、项目介绍为主,十五分钟结束。
HR面试,项目介绍、职位介绍、离职原因、当前薪资,如果没什么问题,一天后会电话反馈待遇并确认是否接受。
不会问期望薪资是多少,后面会打电话告诉你评级是否接受,然后就开始安排体检了。
面试整体难度中上,因为朋友对dubbo源码的研读比较深,所以基本上每一面都很加分,多线程环境都是常规问题,能回答道计算机底层就很加分了。
这次面试比较突然,他也是熬了两天通宵,靠着阿里师兄分享的面试题狠狠地准备了一番,希望我的面经分享能够帮到大家,下面是他这次面试用到的资料展示。
由于文章的篇幅有限,所以这里只为大家展示部分题目目录的截图以及太过基础的问题这里就不给大家截图浪费大家时间了
JVM在执行Java程序时,会把它管理的内存划分为若干个的区域,每个区域都有自己的用途和创建销毁时间。如下图所示,可以分为两大部分,线程私有区和共享区。
「什么是元空间?什么是永久代?为什么用元空间代替永久代?」 我们先回顾一下「方法区」吧,看看虚拟机运行时数据内存图,如下:
注意:回答面试题,切忌只是简单一句话回答,可以将你对概念的理解,特点等多个方面描述一下,哪怕你自己认为不完全切中题意的也可以说说,面试官不喜欢会打断你的,你的目的是让面试官认为你是好沟通的。当然了,如果不会可别装作会,说太多不专业的想法。
大家如果要面试得好好准备一番,
需要这份资料的小伙伴也可以私star我【111】即可分享获取~