写点什么

蚂蚁中间件面试指南

  • 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:414698

评论

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

合阔智云核心生产系统切换到服务网格 ASM 的落地实践

阿里巴巴中间件

阿里云 Kubernetes 云原生 服务网格 合作

华为云WeLink直播助力高校毕业典礼:这届毕业生,我们云上嗨

科技怪咖

数据库系统助力企业降本增效的技术要点|Meetup 回顾与预告

OceanBase 数据库

XDR的技术栈参考

极盾科技

网络安全 数据安全 xdr

ShareSDK Android端微信回调冲突解决方案

MobTech袤博科技

android sdk

jdbcs之连接池和框架

楠羽

JDBC 笔记 9月月更

上海华为云SaaS应用创新创业大赛暨828 B2B企业节发布仪式

科技怪咖

C++ STL【常用算法】详解

Fire_Shield

算法 stl 9月月更

开发者必读:2022年移动应用技术趋势白皮书

HarmonyOS SDK

2个原则,8个小撇步,带你探究 Dockerfile 在工程实践中的实战技巧!

Jina AI

Dockfile

对话杨传辉:国产数据库新战绩背后,OceanBase坚持自研的初心与决心

OceanBase 数据库

Sovit3D数字孪生智慧港口三维可视化解决方案

数据可视化平台

物联网 智慧港口 5G智慧港口 港口三维可视化 智慧港口解决方案

CLIP-as-service 升级啦!

Jina AI

开源 算法 神经搜索

得物云原生全链路追踪Trace2.0架构实践

得物技术

云原生 监控 链路追踪 OpenTelemetry 企业号九月金秋榜

如何理解「数字化转型的本质是人的转型」?

BizFree

数字化转型 工业4.0 智能制造 机器换人 数字化工具

云对象 - 重新定义前后端交互

崔红保

uni-app Serverless unicloud

OpenSSF发布npm 最佳实践指南,应对开源依赖风险

SEAL安全

npm DevSecOps 开源安全 软件供应链安全 开源安全与治理

如何理解「数字化是 IT 公司在给传统企业贩卖焦虑」?

BizFree

数字化转型 企业 焦虑 智能制造

数字人技术在直播场景下的应用

百度Geek说

人工智能 直播 企业号九月金秋榜

5年专业研究,这份云原生安全指南请查收!

博文视点Broadview

高端扫地机销量占比全球第一 石头科技创新驱动增长

科技热闻

我们的月饼不一样!来线上 DIY 微软限定款

Azure云科技

技术 活动报名

库调多了,都忘了最基础的概念-《线程池篇》

知识浅谈

线程池 9月月更

力扣20 - 有效的括号【暴力、分支判断、哈希表】

Fire_Shield

算法 哈希表 9月月更

FlyFish开发者说|开源低代码平台的体验与思考

云智慧AIOps社区

前端 低代码 开源项目 数据可视化 可视化大屏

从采集到存储:时序数据库到底怎么处理时间?

Apache IoTDB

IoTDB Apache IoTDB

LeetCode-13. 罗马数字转整数(java)

bug菌

9月日更 Leet Code 9月月更

LeetCode-9. 回文数(java)

bug菌

9月日更 9月月更

MySQL 数据库 - 通用语法 DDL DML DQL DCL

喜羊羊

MySQL 9月月更

MySQL 数据库 - 函数 约束 多表查询 事务

喜羊羊

MySQL 9月月更

吃透JAVA的Stream流操作,多年实践总结

Java快了!

stream java;

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