说明
独阅乐,与众阅乐,孰乐?
这是我一年前的一次蚂蚁金服的面试经历,之前一直保存在本地笔记里,本着 “ 独阅乐不若众阅乐” 的想法,在此与志同道合的小伙伴们一起分享,一起共勉。
正文
邀约
下午两点左右,一个杭州的座机电话打来,当时我便有预感:很有可能是蚂蚁的面试邀约。果不其然,本来要约在晚上19:30分左右,结果他下午就给我打过来了。一番商讨后,决定如下:
面试邀约:支付宝蚂蚁金服
面试时间:本周四上午九点🕘
第一轮:是电话面试
面试时长:大约一小时左右
- 请做好相关准备 + 闹钟
- 周三晚上零点后回
- 携带好笔记本 + 有线耳机
这一次面试,战略意义重大。面成了,我就可以提辞呈了,然后开启疯狂的面试之旅。计划把上海的一线互联网都“搜刮”一遍!该是【不破不立】的时刻了!
TIME TO FLY AGAIN, OLD BIRD!
结果,就在周三上午九时许,蚂蚁那边电话又打过来了。说是准备电话面试了。“搞错时间了吧?不是约的周四上午吗?” “哦,抱歉,那我这边能先简单的问你几个问题吗?”
好吧,这就算是预面试了。随即,对方便简单的问了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 是如何配置的? -
react中fiber解决什么问题的? -
hooks为什么不能在条件判断里? -
自己有封装过
hooks吗?我说了针对iOS12上input的封装。 -
跨域的解决方案?
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 个编程题
二面视频面试,上来就是四道编程题。坦白讲,我第一次接触这类型面试,还不适应。题目如下:
-
手写
parseQuery实现对URL的解析- 可以利用a标签的href特性
- 可以用浏览器端的URL对象来处理
-
手写
retryAjax方法来实现最多次数的ajax请求重试 -
类似
LazyMan类的异步操作事件编程- 网上能百得到,就不细讲了
-
手写通过
URL注入xss攻击实现
客观而言,题目难度系数都并不大,但是呢,我写得也都并不好。——这便是问题的症结所在!
总体编程下来,实操较差。思路都是有的,但是如何在短时间内把思路转化为代码,还需要磨练。
号外
比较悲催的是,我周六研习了一天的各种算法编程,一个没出现。方向出错了,还是要以项目与JS基础技能为基准。切记!
2、再就是问答环节
两个面试官在场,包括之前一面的那位。
又是针对 ssr 问了一通。
Q:node 端在做 ssr 渲染时,都有哪些优化措施?
流式渲染与 ssr 相比,提升了多少?需要额外的投入又是怎样的?
针对SSR本身的性能优化,只能从以下两点说了:
- 尽量只出首屏,约束API,与后端协作
- node服务本身优化
又是性能优化。
流式渲染提升明显,首屏无图时间提高了近20%。当然了,细节是魔鬼,踩的坑点也不少。
Q:如何把你们现在正在用的 ssr 运用到一个新项目?要考虑哪些因素?有什么注意点?
-
首先,要有一套基于ssr的全链路流程。
-
- 包括node服务的搭建
- 网关层路由配合
- 与后端API对接适配
- 日志上报、异常检测服务
- node服务扩容缩容
-
技术选型。express & react & mobx。项目中搭建
iso框架,并选择一小众页面进行迁移试点。 -
观察期结束后,再拓宽业务面,直至ssr运用于整个项目。
-
做好降级预案。
ssr出错则自动降级为csr,并且支持ssr/csr的自动切换。
Q:讲一讲项目中遇到的挑战与困难?
我说了三点,这不算什么。厉害的是,在我回答完后,对面面试官却依据我的回答总结出了三点,这就牛逼了。
我答了三条:
- 项目由最开始的一个大项目,后拆分成多个子项目。现在战略调整了,现在又要进行融合,往一个大项目中合并。很麻烦,各项目细节规范都不一样,路由匹配、代码风格、组建库的封装等,都有差异。现在要一个个的填坑,是真的坑啊。
iOS下的input软键盘输入,以及Android下的UI适配,垂直居中的实现等,都比较费事。- 标准不统一,一个商品列表UI,看着相似,但是UI设计师之间也会各有差异,导致项目组建库里经常出现
GoodItemV1,GoodItemV2,乃至V5版本。很不利于维护。
我大致说完后,面试官则为我总结出了三条:
- 第一个是战略层面的问题。领导层
- 第二个是具体开发层面的问题。UI input等
- 第三个是项目管理层面的问题。与不同团队的协作上
艾玛!太牛逼了,就是这个意思!说实在话,我当时在回答时都没有意识到:我竟然还是围绕着这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薪资并不如我想象的那般理想。在得知我目前的薪资时,对方表示无法达到,并可能会有好几千的降幅。问我是否能够接受?
“我基本不考虑了。”随后,便没有下文了。
最终也没有选择蚂蚁,也没觉得遗憾,通过这场面试,收获也不少。阿里文化,在一场面试里,似乎都显现的酣畅淋漓。