写点什么

蚂蚁中间件面试指南

  • 2019-08-27
  • 本文字数:3450 字

    阅读完需:约 11 分钟

蚂蚁中间件面试指南

写过代码的技术同学都知道,中间件在整个技术体系里的重要性。在过去的十多年里,蚂蚁金服自主研发出了金融级的分布式中间件 —— SOFAStack,并多次在极为复杂的场景下得到验证,比如每年的双 11。在蚂蚁金服,中间件团队是一个带着“光环”的队伍,CTO 程立、副 CTO 胡喜都出自这个组织……


配置千万条,集群第一条,环境不匹配,战友两行泪。——《流浪程序猿》

为什么选择蚂蚁中间件

2 年前的这个时候,作为南哪大学(南京大学)实习求职大潮的一名小白,一开学各种互联网大小厂学长学姐的内推邮件就塞满了邮箱,特别是阿里系的内推邮件各种部门玲琅满目。要说为什么在众多内推中对蚂蚁中间件情有独钟,说起来有表里两个原因:先说里原因,一直觉得程序员的核心是用抽象和自动化来低成本和快速地实现更多的价值,而中间件则可以抽象出通用的能力为业务同学赋能,让业务同学专心于业务,实现更大的业务价值;诶嘿,表原因是中间件部门的内推 JD 看起来要求还挺高的,笃定身边好多的小伙伴都不敢投,自己投的话录用概率比较大,对就是这么肤浅!(希望老大看到不要给我 3.25)

面试的“心机“往事

本科实习的时候也投过阿里,但当时本想着自己学校还可以,学习成绩也不错,找实习那不是嗖嗖的。以为面试只是聊聊人生、聊聊课程项目走个过场,满脑子想着找工作是不是也像考大学一样,只要学校好、成绩好,就可以去个好公司。年轻人,Naive!接到的阿里的电话面试,一连串的并发编程、虚拟机等教材上没怎么接触到的词汇面到快要“自闭”。幸好保研让我有了“翻身农奴把歌唱”的机会。从研究生生涯的第一天起,就开始为一年后的阿里实习生面试做准备。


对我来说准备面试是一个复习、应试和成长的过程。


复习 复习大学课程里面学到的计算机基础知识,包括数据结构、算法、操作系统和网络相关知识。复习不仅仅是为了面试,也是能让自己能够整理归纳以前学过的知识,达到连点成线、织线成网的效果。很喜欢左耳朵耗子的一句话"基础技术总是枯燥和有价值的。数学、算法、网络、存储等基础技术吃得越透,越容易服务上层的各种衍生技术或产品"。等实践多了,就会发现很多项目中用到的技术和基础技术里面的思路很相似。学好基础技术走遍天下都不怕。


应试 准备面试就是一个应试的过程,面试很艰苦,需要经历九九八十一难才能取得 offer,那就不得不说明年下半年中美合拍的西…面试考点。对于应届生来说,其实考点还挺清晰的,网上已经有很多总结,也有很多面经:


  • 数据结构:常见数据结构 List、Map 和 Set 的实现原理和应用场景,稍微上升一点,java.util.*里面数据结构的源码分析;

  • 算法:几种排序算法的实现、复杂度和应用场景,稍微上升一点,当处理内存放不下的海量数据的 TOP K 问题、排序问题等等;

  • 操作系统:内存分配寻址、线程调度和磁盘访问;

  • 网络:七层四层协议、TCP/IP 握手挥手和拥塞控制;

  • 数据库:基本的 SQL、数据库引擎的区别和索引的类型和原理。


"掌握"了上述的这些,个人觉得作为一个应届毕业生来说就已经合格了。前提是真正的掌握,要“由表及里,知其所以然”。最好是自己模拟问自己,能经受得住 3 轮以上的提问。


成长 成长主要来自于书籍的阅读和探索。研一时间里,陆陆续续把《Thinking In Java》、《Effective Java》、《Java Concurrency in Practice》、《深入理解 Java 虚拟机》和《Netty In Action》啃完,说实话能这么闲,也要感谢我们南哪放养学院。回想起来,《Thinking In Java》和《Java Concurrency InPractice》这两本书不愧为经典,内容由浅入深,很多知识点不仅仅告诉你怎么样,还讲解原理是什么、为什么这样。也是从读这两本书起,开始养成习惯采取三步法去了解一项技术:外在行为/表现是怎么样的;怎么实现/原理是什么;为什么要选择这样做,目的是什么,优劣是什么。看书不仅仅能让自己系统的掌握一项技术,技术书籍中往往还会留下一些进阶知识的引子,我也是因为这些引子开始去探索 AQS、读写锁、线程池和 ForkJoinPool 之类的源码,也是这些探索给我今后的开发和设计带来了很大的帮助。



应届生面试考察的是基础、思维和潜力。基础和思维是在平时的学习和面试的准备中培养的,没人有能一眼看出你是个"武学奇才",潜力是让面试官看到你相比其他人的优势和亮点。对于面试,谈谈自己的理解。面试的目的是向面试官“展现自己的优势”最终拿到 offer,而优势是在和面试官的对话中体现。如何最大程度的体现出自己的优势,充足的准备是一方面,另一方面引导面试官去问自己擅长的技能是很重要的一点。首先简历上要下功夫,简历上写出来的东西应该都是自己希望面试官去问的、有亮点的东西,而不是只是陈列自己做了什么项目,并且简历上的每个点最好经得住三、四问,最好能回答到面试官也不熟悉的领域。其次在自我介绍的时候,要引导话题,将焦点聚集在擅长的部分,这样才不会出现面试节奏被带跑的情况(恨不得就直接说快问我这些,我都准备好了)。

见闻及感受

想要变强,首先要站在强者中间。在蚂蚁实习和工作的一年半时间里,我对这句话有很深的体会。我参加过大大小小、各种技术主题的分享讲座,收获技术知识的同时,可以见识到他人的思维方式,拓宽自己的眼界,从各种角度获得对自己的提升。除此之外,在讲座中扮演分享者的角色,更是一个学习的机会。我曾经在实习期间做了一次 AQS 的分享,做分享对自己的提高是巨大的,想要把事情来龙去脉说的明白,既需要透彻的理解、广泛的涉猎、又要有触类旁通的总结和深入浅出的表述。蚂蚁为技术分享提供了自由的平台,“在这样的环境下,从不会缺少进步的机会”。


在巨人的肩膀上,站得更高,看得更远。除了平日众多的分享以外,蚂蚁还专门有一个技术大学为应届萌新特别准备了青年近卫军新人培养计划。在入职后的两个月内,从线上线下,从理论到实践,各个业务线和技术线的老司机将向新人同学全方位地介绍业务背景,讲解基础技术,帮助同学们快速落地。老师们知识渊博、风趣幽默,从便民服务到普惠金融,从分布式事务到单元化架构,他们独到的见解和讲授,都使我受益良多。另外在实战环节中专门配备了技术指导员和项目指导员辅导新同学从 0 到 1 完成一款“minialipay”的开发,在短短的 2 周内,收获颇丰。



欢乐的中间件团队在去 Outing 的路上


“小螺丝也能发挥大能量。”每个人都是公司的螺丝钉,双十一、新春红包千万 TPS 的考验,每一次突破的背后都是链路上所有部门的集体突破。蚂蚁天生的金融属性不仅对中间件的正确性和稳定性提出了极高的要求,加速发展的业务也要求中间件随时接受新的挑战,像火箭一般迅速迭代和拓展,这火箭的巨大能量来自于每一颗螺丝钉自我挑战和突破带来的推动力。从入职起一坐上通信中间件这艘火箭,我就开始感受到这比脱发还要快的功能开发速度。


刚入职不到一周,就被师兄丢过来一个多 Session 幂等的需求,上游数据同步催得很急要求 2 周内完成。才入职不能虚,接下需求,两周内设计方案、啃代码、一把梭,最终按时完成,还是挺有成就感的。"不丢、不错、不乱"数据同步的三不要求对消息队列的代码质量和功能的完备性提出了极高的要求。都知道并发编程容易出错,而蚂蚁消息队列是基于分布式存储盘古的,将并发编程从单进程扩展到多进程,在分布式存储的环境下没有锁的情况下,如何保证正确性就成了功能开发的首要障碍。凭借着这次研发经验,接着又在半年多里,陆续开发完成了 Topic 无损扩缩容、Topic 无损集群迁移和 Chaos 正确性验证等等功能。


继去 IOE 之后,技术上对去中心化,轻量虚拟化,无服务器等技术需求愈发强烈,而 Serverless 必将借势迅速发展,未来 Serverless 将在云计算的舞台上大放异彩。蚂蚁正处于 Serverless 转型的技术红利时代,“既有挑战,又充满机遇”。期待着学弟学妹加入蚂蚁中间件大家庭,一起共建蚂蚁 Serverless 未来。

关于蚂蚁“青年近卫军”

“青年近卫军”是蚂蚁技术校招新人金牌培养项目,由蚂蚁技术大学创建,该品牌诞生于 2008 年,总计精英化培养 1500+ 同学。


为了帮助新员工快速融入和掌握基础的专业技术技能,蚂蚁技术团队为应届毕业生制定了青年近卫军入职培训,包括通用内容和岗位内容,并匹配实战项目。1 年全链路培养,融合了业务知识、上手技能、职业素养,并利用网络精品课题、线下体验式学习、活动场、战略级项目养兵等多种方式让技术新人更自主融入学习,融入蚂蚁。


如今,“青年近卫军”已不仅是新人培养项目的名称,更成为了蚂蚁校招技术新人的代名词。


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/wY8w6iRp4HDO4RlPS3eklw


2019-08-27 09:414711

评论

发布
暂无评论
发现更多内容

使用数据库乐观锁的方式解决数值累加的问题

陈靓-哲露

C# 三个Timer

喵叔

7月日更

58字节常量池面试题,你如何应对?

卢卡多多

intern 字符串 7月日更

【Kafka技术专题】「实践操作篇」单机部署实践手册(2.8.0)

洛神灬殇

kafka MQ kafka配置 消息队列 kafka架构

加速基因测序进程,北鲲云高性能计算平台再发力

北鲲云

怎么才能写出100个用户体验的关键时刻?

石云升

读书笔记 用户体验 关键时刻 7月日更

实践解析丨如何通过 WebAssembly 在 Web 进行实时视频人像分割

声网

大前端 WebRTC webassembly

线上教育培训机构如何推广自己

石头IT视角

Go语言:运行时反射,深度解析!

微客鸟窝

Go 语言

不要让这2个坏习惯限制了你的成长

俞凡

认知

大三就拿到字节提前批,你不想成长,生活总会逼着你成长

Java架构师迁哥

网络攻防学习笔记 Day83

穿过生命散发芬芳

网络攻防 7月日更

我应该在什么时候使用 Apache Druid

HoneyMoose

Linux之cal命令

入门小站

Linux

什么是 Druid

HoneyMoose

大厂的产品研发流程,你知道么?

Simon郎

产品 研发体系 大厂 互联网公司

去阿里应聘P7Java岗,都会被问到哪些问题?

Java架构师迁哥

结构化流-Structured Streaming(八-下)

Databri_AI

spark 流式计算框架 structuredStreaming

Apache Druid 简介

HoneyMoose

微观管理?

escray

学习 极客时间 朱赟的技术管理课 7月日更

完整视频+源码!十六天带你精通基于Spring Cloud微服务电商项目

Java架构追梦

Java 架构 面试 微服务 SpringCloud

我学编程时最后悔的事!

程序员鱼皮

Java c++ Python 大前端 后端

极光开发者周刊【No.0723】

极光JIGUANG

学习下服务器端漏洞,受益匪浅!

网络安全学海

运维 网络安全 信息安全 漏洞扫描 渗透测试·

在线条码生成器

入门小站

工具

根据四个商业指标找到MOT

石云升

读书笔记 用户体验 商业洞察 关键时刻 7月日更

从鉴黄师到阿里程序员,我成功逆袭上岸

Java 编程 程序员 计算机

Docker的学习体验

吴脑的键客

,docker

从鉴黄师到阿里程序员,我成功拿下阿里offer

白亦杨

Java 编程 程序员 计算机

如何在Go 服务中做链路追踪

Rayjun

微服务 Go 语言

上线仅7天,GitHub已标星48.4k!原来是阿里巴巴内部《高并发系统设计》

Java redis 编程 架构 面试

蚂蚁中间件面试指南_文化 & 方法_无暮_InfoQ精选文章