阿里巴巴 120w 年薪 P7 架构师的简历长什么样?

4年开发经验,精通数据结构和算法,精通web框架源码(spring、mybatis、webflux等),精通中间件的最佳实践和源码,精通分布式技术

文章正文

前言

互联网大厂比如阿里巴巴、腾讯、字节跳动、百度、美团等公司是 IT 工程师梦想中的公司,不仅福利待遇很好,而且还可以与行业顶尖的人才共事,但是由于行业竞争激烈,大厂对于技术人员的技能水平也是比较严苛的,尤其是对于技术底层的理解,本场 chat 会分享一份阿里 P7 架构师的面试简历,来分析下怎么写简历可以获得大厂面试官的青睐。

1. 简历怎么写才不会被互联网大厂筛选掉

这是一份普通架构师的简历,简历中个人优势的部分描述思路是这样子的:

首先一定要在简历中明确负责系统的并发指标,比如日活、注册人数、QPS、TPS 等,也就是俗称中的 “上天”;

然后一定要写明有高并发分布式系统的架构经验;

然后 JDK 并发编程的底层原理、集合的底层原理、NIO 编程的底层原理、数据结构和算法、设计模式等基本功一定要扎实,也就是俗称中的 “入地”;

最后有 JVM、Mysql、Tomcat 的调优经验一定会很加分。

在这里插入图片描述

这是一份经验更丰富的阿里 P7 架构师的个人优势描述,可以看到其简历编写技巧和上一份架构师的简历如出一辙,不过多了 3 年管理经验,现在的大厂对于技术功底深厚,而且有团队管理经验的候选人非常青睐。

在这里插入图片描述

从 P7 大佬的个人技能描述中可以看到今年最值钱的技术栈,你是否都掌握了呢?

Java 基础方面,数据结构、算法、设计模式、并发编程,这些基本功一定要扎实,要能从最基本的原理一直讲到机器码级别,其实基本的 Java 语法和并发编程才是最难的,了解了 Linux 内核的原理、编译原理、操作系统才会真正的理解并发编程;

框架方面,Spring、SpringMVC、Mybatis、Dubbo、SpringCloud 的源码是必然要精通的,而且要具备这些框架的二次开发能力,可以根据需要进行相应的扩展;

分布式事务插件方面,2PC、TCC、Saga、事务型消息、最大努力通知方案都需要有深入的了解,分布式事务问题解决起来还是很棘手,不然不会到目前为止还没有出现一个统一的框架去处理,而蚂蚁金服的分布式事务框架 Seata 最近还曝出了漏洞;

JVM 调优方面,最近几年关于 JVM 面试问的越来越深了,尤其是调优参数,不想记也得硬啃下来,也就是俗称中的 “八股文”,没办法, IT 行业的程序员越来越多,内卷现象以后也会越来越严重,比其他候选人技术深度更深或广度更广才不会被淘汰,由于 JVM 的学习成本非常高,一旦掌握可以跟其他的同行之间形成技术壁垒碾压对手;

Mysql 调优方面,大厂非常重视 Mysql 的原理和调优经验,如果你比 DBA 的同学还精通 Mysql 调优,那么一定会惊艳到面试官的;

中间件方面,需要掌握的技术栈其实挺多的,不单单需要了解原理,有实战经验才是最宝贵的;

在这里插入图片描述

2. 怎么结合自己的工作经历给简历润色

看完上面大佬的简历有没有吓到呢?其实很多同学所在的公司并不是互联网企业,并没有 “上天”,即千万甚至上亿的高并发架构经验,但是可以结合自己的工作经历,最近几年大部分中小型公司都开始进行压力测试,中型公司可能还有全链路压测,那么你就可以将其写到简历上,把全链路压测的整个系统有条不紊的描述清楚也是很加分的。

可能有的同学所在的公司只是一个传统型的公司,没有高并发甚至没有全链路压测,只有一个管理台系统,那么你可以往业务上靠,你们项目中肯定有很复杂的业务,然后你就可以写到简历上,比如因为你负责的某个订单管理系统给兄弟团队带来了很大的便利,给公司创造了很大的价值。

另外有很多的同学喜欢在简历上写很多业务,项目责任里写满了各种各样的业务,其实这样子的写法是很不讨面试官喜欢的,因为突不出技术难点,你都无法完整的总结出技术架构的细节,写满业务又有什么意义。

3. 阿里巴巴希望的架构师需要具备哪些技术能力

技能方面,上文已经描述过很多了,阿里巴巴对于技术的底层原理的理解要求很严格,另外技术的实战经验也是一定要具备的,不然遇到问题你又没有这方面的经验,需要你马上处理了你才开始学习了解,那真的是很难受的,现在的架构都追求接近百分之百不宕机,如果面对高并发大流量经常宕机会丢失很多的用户和流量,从而业务上败给竞争对手。

4. 你需要完整的通读并且掌握哪些框架的源码

JDK 源码比如集合源码、JUC 源码、NIO 源码一定要掌握,这些是其他所有框架的基础所以一定要打好基础;

Spring、SpringMVC、Mybatis、Dubbo、SpringCloud 框架的源码是一定要掌握的;

RocketMQ、Kafka 中间件的源码也是一定要掌握的,其他 MQ 中间件是用其他的语言写的,但是如果能学习下对应的语言,了解下源码也会对其原理理解更深刻;

Redis 中间件源码虽然是用 C 语言写的,同样也需要对源码有大致的了解,甚至可以自己用 GO 语言模仿 Redis 写一个自己的中间件,理解其源码蕴含的思维也是极好的;

Zookeeper 中间件作为 Dubbo 的服务注册中心最近几年热度不减,对于源码的考察也是一个重点;

Skywalking 中间件为分布式服务提供链路跟踪的功能,所以其源码的掌握也是必须的;

Sentinel 中间件为分布式服务提供了服务降级熔断的功能,对其源码的掌握是符合大厂分布式技术栈要求的;

Seata/XTS 中间件是蚂蚁金服的分布式事务中间件,或者是其他公司开发的分布式事务中间件,一定要掌握一款中间件的源码;

Mycat/Zdal 中间件是分布式数据库中间件,对其源码的大体了解也是必须的,大厂非常喜欢进行突击提问,让你针对某个技术场景对分布式数据库插件进行扩展,以满足某个需要让你谈谈自己的想法,通过这种方式考察你对其原理的理解程度;

Webflux 是基于 Netty 的一款响应式编程框架,常用来做网关,大厂最近非常青睐这款框架,如果你对其源码有基本掌握的话会很契合大厂的技术栈;

Netty 作为高并发网络通信框架应用非常的广泛,所以对于原理的掌握也是必须的,不会 Netty 连大厂的一面都很难过,可见大厂对其的重视程度;

5. 介绍自己做过的项目时怎么给面试官留下好印象

很多同学面试的时候总是等待面试官提问,面试官问一个问题回答一个,这样子面试官就很累了,而且浪费时间,如果面试官提问一个问题你能马上联想到相关的技术难点进行拓展,就可以更加完整的向面试官展现自己的技术水平。

比如面试官问你 ThreadLocal 的原理,如果你只回答基本的原理,那么面试官就会觉得你只了解这么点儿,自然不会给你高薪,但是如果你在回答完 ThreadLocal 后,还提出了 ThreadLocal 可能会造成内存泄漏,然后巴拉巴拉讲讲解决方案,然后再讲讲线程池复用线程的时候,父线程无法将更新后的数据通过 ThreadLocal 传递给子线程的问题,InheritableThreadLocal 是怎么解决的还有哪些遗留问题,阿里巴巴开源的 TransmittableThreadLocal 工具类是怎么解决 InheritableThreadLocal 的遗留问题的,最后再讲讲 Skywalking 是怎么跨线程将 TranceID 传递到下一个链路的,巴拉巴拉讲了一大堆。有的面试官这个时候可能已经不耐烦了,但是起码可以给面试官留下一个技术深度和广度都不错的好印象。

另外,有的同学在面试的时候态度不够端正,面试官问在项目里面负责的工作,就说一大堆业务方面的东西,而不提技术方面的细节,平时工作中或多或少会接触技术,总会有一些积累,如果只说业务体现不出你对复杂系统的设计经验。

比如有一个订单管理的系统,有的同学面试的时候只会讲一些基本的业务逻辑,数据库库表中数据的流转,这样子描述根本不合格,如果订单系统中用到了分布式事务,你应该说做订单管理系统的时候还学习了 2PC、TCC 等相关组件,设计了可靠消息最终一致性方案,最终使用了最大努力通知方案,一定要把技术细节讲出来,体现自己的复杂系统的设计能力。

总结

同学们写简历的时候一定要付出足够的重视,面试官从简历中就可以看出你的工作态度和技术水平。

作者正在撰写中...
内容互动
写评论
加载更多
评论文章
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容