蚂蚁金服的Web端面试全流程总结

2,045 阅读13分钟

说明

独阅乐,与众阅乐,孰乐?

这是我一年前的一次蚂蚁金服的面试经历,之前一直保存在本地笔记里,本着 “ 独阅乐不若众阅乐” 的想法,在此与志同道合的小伙伴们一起分享,一起共勉。

正文

邀约

下午两点左右,一个杭州的座机电话打来,当时我便有预感:很有可能是蚂蚁的面试邀约。果不其然,本来要约在晚上19:30分左右,结果他下午就给我打过来了。一番商讨后,决定如下:

面试邀约:支付宝蚂蚁金服

面试时间:本周四上午九点🕘

第一轮:是电话面试

面试时长:大约一小时左右

  • 请做好相关准备 + 闹钟
  • 周三晚上零点后回
  • 携带好笔记本 + 有线耳机

这一次面试,战略意义重大。面成了,我就可以提辞呈了,然后开启疯狂的面试之旅。计划把上海的一线互联网都“搜刮”一遍!该是【不破不立】的时刻了!

TIME TO FLY AGAIN, OLD BIRD!

结果,就在周三上午九时许,蚂蚁那边电话又打过来了。说是准备电话面试了。“搞错时间了吧?不是约的周四上午吗?” “哦,抱歉,那我这边能先简单的问你几个问题吗?”

好吧,这就算是预面试了。随即,对方便简单的问了2个问题,算是开场白:

  1. 为什么要从当前的公司离职?
  2. 你们APP里如何区分是H5还是原生页面的?
  • 开发版APP支持查看当前页面详细信息
  • 内部染色用户可看的eruda入口

明天九点,泰然处之。毕竟,蚂蚁里面卷的厉害,说实在的也不太是我的第一选择梯队。所以,得失也就无所谓了。纯粹当练兵了。

一面:电话面试

周四上午九点,电话打过来了,还挺准时。前后一共聊了90分钟。

1、基于百亿和买菜项目问了很多和 node 端 SSR 相关的东西。

看得出来,蚂蚁面试官对 SSR 很感兴趣,后来才得知:他说他们那边还没有搞这个。不会是来套方法的吧,哈哈~

关于 组件包 vs. 资源包。支付宝那边现在主要用的都是【组件包】形式,走的 CSR,静态 HTML 文件走 CDN,来扛高并发的用户量。

Q:运营在首屏强加需求时,要怎么做才能维持住当前的性能指标?

感觉这位老兄在这一环节,有套技术方案之嫌,问了很多技术框架原理与实现的东西。与我预想的,一上来问 JS 基础,完全不同。有点把我打蒙了。

Q:有关分享的,为什么百亿里有好几个分享入口,而买菜里只有一个微信分享入口?基于什么考虑的?

坦白说,这个考到我了,分享不是我做的。

  • 买菜主战场在微信小程序,所以引流微信分享是必需的

  • 百亿里的QQ分享、空间分享等都已经过时了

  • 不同的项目部门在搞,彼此没有关联

2、JS 语言技能方面。

  • 罗列 ES6 新语法

  • bind/apply/call 的区别以及实现

  • 箭头函数与function函数的区别,我没答到 “体现出函数式编程思想” 的这个点上。

  • babel编译,babel-runtime是如何配置的?常用那些额外的Babel插件?项目中 babel 是如何配置的?

  • reactfiber 解决什么问题的?

  • hooks为什么不能在条件判断里?

  • 自己有封装过 hooks 吗?我说了针对 iOS12input 的封装。

  • 跨域的解决方案?

3、性能优化的措施。

具体就不在这里罗列了,属于 baidu or Google 都一大堆的问题。

当我答完后,面试官说:我说的基本上都是基于 SSR 来考量的,有没有跳出这一层面的其他优化方案?比如node端服务、nginx服务、cdn等等。

我说得不够完整完备,有点零散。针对这个问题,我还要好好梳理一下,应该是每次面试必问题。

4、CSS方面。

  • 讲讲盒子模型,由外到内?margin/border/padding/content
  • box-sizing 与 content-sizing 的区别
  • 一个空 div,padding-top: 100%; background: red; 会显示什么?

艾玛,几个css相关的问题答得都比较菜。准备不充分。

5、微前端是否有了解?

微前端可能更偏向于中后台的场景使用,而我当前主要是负责C端项目的,所以接触不多。想具体了解的,可移步 qiankun 这个微前端框架学习了解。

不是一个个的子项目,我不了解。

6、我问了他一些问题

  • 支付宝目前技术框架:react为主,小程序较多。
  • 蚂蚁的前端开发人员较少,比较在意因SSR架构导致的投入比。
  • 业务:以支付宝APP为依托,来开展项目,主要负责:城市生活、健康码、便民服务等。

7、后续面试流程

通过的话,要去现场面试 + 笔试。

混合面试 ,交叉面试,HRBP 面试。

估计现场面试就要考察编码技能了。

“等候通知吧,应该会很快的。”——这是我们电话沟通中最后的话。

总体自我感觉尚可,大概率会进入到下一环节罢。

二面:视频面试

玛雅,从上午九点开始,近乎11点才结束,两小时的视频面试终于结束了。说好的一小时呢?长抒一口气!貌似只有我这边是开视频的,对方我只能听到声音,而不见容貌,是为不对等的面试啊。是为序。

1、先是 4 个编程题

二面视频面试,上来就是四道编程题。坦白讲,我第一次接触这类型面试,还不适应。题目如下:

  1. 手写parseQuery实现对URL的解析

    • 可以利用a标签的href特性
    • 可以用浏览器端的URL对象来处理
  2. 手写retryAjax方法来实现最多次数的ajax请求重试

  3. 类似LazyMan类的异步操作事件编程

    • 网上能百得到,就不细讲了
  4. 手写通过URL注入xss攻击实现

客观而言,题目难度系数都并不大,但是呢,我写得也都并不好。——这便是问题的症结所在!

总体编程下来,实操较差。思路都是有的,但是如何在短时间内把思路转化为代码,还需要磨练

号外

比较悲催的是,我周六研习了一天的各种算法编程,一个没出现。方向出错了,还是要以项目与JS基础技能为基准。切记!

2、再就是问答环节

两个面试官在场,包括之前一面的那位。

又是针对 ssr 问了一通。

Q:node 端在做 ssr 渲染时,都有哪些优化措施?

流式渲染与 ssr 相比,提升了多少?需要额外的投入又是怎样的?

针对SSR本身的性能优化,只能从以下两点说了:

  1. 尽量只出首屏,约束API,与后端协作
  2. node服务本身优化

又是性能优化

流式渲染提升明显,首屏无图时间提高了近20%。当然了,细节是魔鬼,踩的坑点也不少。

Q:如何把你们现在正在用的 ssr 运用到一个新项目?要考虑哪些因素?有什么注意点?

  1. 首先,要有一套基于ssr的全链路流程。

    • 包括node服务的搭建
    • 网关层路由配合
    • 与后端API对接适配
    • 日志上报、异常检测服务
    • node服务扩容缩容
  2. 技术选型。express & react & mobx。项目中搭建iso框架,并选择一小众页面进行迁移试点。

  3. 观察期结束后,再拓宽业务面,直至ssr运用于整个项目。

  4. 做好降级预案。ssr出错则自动降级为csr,并且支持ssr/csr的自动切换。

Q:讲一讲项目中遇到的挑战与困难?

我说了三点,这不算什么。厉害的是,在我回答完后,对面面试官却依据我的回答总结出了三点,这就牛逼了。

我答了三条:

  1. 项目由最开始的一个大项目,后拆分成多个子项目。现在战略调整了,现在又要进行融合,往一个大项目中合并。很麻烦,各项目细节规范都不一样,路由匹配、代码风格、组建库的封装等,都有差异。现在要一个个的填坑,是真的坑啊。
  2. iOS下的input软键盘输入,以及Android下的UI适配,垂直居中的实现等,都比较费事。
  3. 标准不统一,一个商品列表UI,看着相似,但是UI设计师之间也会各有差异,导致项目组建库里经常出现GoodItemV1GoodItemV2,乃至V5版本。很不利于维护。

我大致说完后,面试官则为我总结出了三条

  1. 第一个是战略层面的问题。领导层
  2. 第二个是具体开发层面的问题。UI input等
  3. 第三个是项目管理层面的问题。与不同团队的协作上

艾玛!太牛逼了,就是这个意思!说实在话,我当时在回答时都没有意识到:我竟然还是围绕着这3个不同的层面去分别展开回答的!要不怎么说人家是面试官呢,这总结概括的能力,不愧是阿里/蚂蚁的大佬,想必是妥妥的P7+以上。

3、后续面试

如果还有的话,就还有主管面试、HR面试、和交叉面试。

交叉面试:就是另外一部门的人来面试你,考察范围和之前一样,都还是前端领域相关的。

4、问我有什么要问的?

我先是问了后续的面试流程与周期等。第一次面试考官来了句:“上次不是问过这个了吗?”然后又回答了一遍。嘎!

再问了一个有关支付宝的,是和技术相关的:

“支付宝里的二级页大都是基于小程序的吗?但是我体验下来,发现似乎还不如原有的H5页面访问流畅,所以这是基于什么考量的?”

大致就问了这两个问题。不多,也不够!

要准备一套面试反问说辞,能适配不同梯队的面试官!

  • 蚂蚁的职级,是和阿里同步的吗?

  • 我现在是按照什么 Level 标准去考核的?假如不满足这一档的话,是自动降低一档,还是说就pass掉?

自我预测,80%的概率能进入下一轮面试罢。拭目以待~~

终极面试邀约

OK,就在刚才,之前引荐的猎头打电话来,说是蚂蚁那边通过了前两面,准备约我周四进行第三轮,也是最后一轮的终极 技术 & BOSS & HR面。面试完通过考核后,就进入谈薪资拉流水发offer环节了。欧耶!

第三轮视频面试

晚上7点开始,8:30点结束,持续了一个半小时。

总体面试感觉,一言蔽之,即一言难尽啊!

总共两位面试官,一位男性技术官兼Boss,一位女性HR。技术官先开聊:

  • 自我介绍,以及项目介绍,详细点好。由此,开场五分钟内基本上都是我在讲,他在听的状态。该阶段里,没有什么章法,想到哪里就讲到那里。——这不是我所擅长的,我其实更愿意指哪打哪。
  • 说了一下 SSR 整个阶段流程 & 大概原理。
  • 简历中提及的“代码追求【信达雅】& 负责review”,说说你如何理解“信达雅”?以及review的具体细则?

号外:

应该额外准备一项技能,那便是:有的技术官不大喜欢问,而是喜欢听你讲,然后呢,在你讲的过程中,他再穿插着提问。这时候,就考验你滔滔不绝的言辞功力了~😂~

HR面

大约一个小时左右以后,随后HR开聊:

  • 为什么要从现在的公司离职?我说了工作时间问题,她表示蚂蚁那边也不轻松,想 WLB 估计也不成。

  • 作为一个项目负责人,说说你的优点 or 优势都有哪些?

  • 目前薪资情况?

  • 自认为自己是 P几?

  • 为什么选择阿里?目前有在面试哪些公司?还会考虑哪些其他的公司?

  • 来我司后,有什么规划?要如何开展工作?

薪水问题

在谈及薪水时,问:“目前多少?”我说xxK。“期望呢?”我表示阿里自有一套薪酬体系。“你这薪水很高了,来这边说不定要降薪的,有这个心理准备吗?”坦白说,有点把我问懵了,问慌了。也不知是真是假,还是这就是所谓的“压力面”(我事后反应过来的),总之,当时确实表示没有这个心理预期。“如果去二线互联网公司或者小企业,我是有这个心理准备的(降薪),但是面对阿里这种一线龙头,确实没这个预期。”我不知是哭还是笑道。

如是看来,可能并没有我想象的那么高。说不定最后即便给了offer了,真的还降薪了,该如何是好?

(追加:玛雅,不幸被预言了。降薪活还不少,我图啥?遂拒直。)

蚂蚁的加班

最后提问环节,我问了蚂蚁目前的加班状况如何?那位技术官很是委婉的对我说:“我们肯定没有PDD那么猛的,早上一般9点多10点前到,晚上的话看项目情况,不忙的话8、9点也就可以走了。”

只见这位老兄话还没说完,旁边的HR 便笑呵呵的插了句:“你能对你说的话负责吗?你什么时候八九点走过?”随即来了句:“这个问题我来回答你吧,现在公司业务也挺多,蚂蚁加班也蛮多的,可能也不比PDD好到哪里去,你要有这个思想准备。”

嗯,其实从他们的言谈举止中,我已经摸索出了个大概。——加班肯定不会少的,单轮工作时间的话,还真不一定比PDD少,唯一就是双休了吧。

最后,一周内等答复。

一点感悟

正所谓期望越大则失望越大。真真理哉!

面试前,我是相当重视这次终极之面的。为此,昨晚突击到了2点,第二天7点不到,便继续淦起来。不为别的,只为则理想中的临门一脚。哪曾想,现实终究是骨感的啊。

一个半小时左右后,感觉面试就有点草草收场的意思。一点都没有最后终极之面的那种预期,嗯,那种我要的感觉。

往之不可谏,来者犹可追。如此看来,对待后续的面试,我大可不必这般劳心劳力,乃至苦心勠力了。尽力即可,心态放平,得失无所谓。

终结篇

周五晚上,HR那边电话过来,告知我面试通过,但是offer薪资并不如我想象的那般理想。在得知我目前的薪资时,对方表示无法达到,并可能会有好几千的降幅。问我是否能够接受?

“我基本不考虑了。”随后,便没有下文了。

最终也没有选择蚂蚁,也没觉得遗憾,通过这场面试,收获也不少。阿里文化,在一场面试里,似乎都显现的酣畅淋漓。