阿里、拼多多面试经历分享,面试岗位:java技术专家

本文是 quiet 同窗投稿的面试经历php

恭喜 quiet 同窗,拿下技术专家的职位java

自我介绍

先作个自我介绍,本人坐标魔都,13年毕业,工做6年,以前一直在互联网公司工做,曾经在阿里系公司下担任资深工程师的职位。mysql

今年大环境很差,但仍是毅然决然的出去试了试,而我此次面试的目标期待,是但愿想找一个知名互联网公司的技术专家的职位。面试

面试经历

拼多多redis

首先说说我面试上海拼多多的经历,我是朋友内推过去的,面试的是拼多多的商品中心部门,内推人说是拼多多技术要求最高的几个部门之一。本身以前作过商品相关业务,业务上有些对口。sql

一面面试官首先让我写一下观察者模式代码(设计模式有专门准备),而后跟技术官聊技术业务,聊分布式锁的实现,redis用的什么命令,问 redis 集群缓存数据不均衡怎么作。数据库

我就说计算机领域有一句名言:计算机科学领域的任何问题均可以经过增长一个间接的中间层来解决,我感受在客户端和redis服务之间加一层就能解决了,问我具体怎么作,我说了个人思路。设计模式

接着面试官问咱们公司的一些缓存架构,咱们公司通常都是使用的堆内缓存 + redis 缓存(二层缓存架构方案)。缓存

而后围绕着这个,问了数据一致性怎么作的?有没有作过相关压测?指标是多少?熔断降级有没有作过?性能优化

而后说说sentinel和hystrix的区别?我知道拼多多这二个框架都有使用,限流的一些参数怎么设置,依据是什么?这个是真的考验有没有在生产上玩过了。而后让我设计一个高并发系统,从哪些方面考虑。

最后面试官问我有什么问题想问他,这一块我是精心准备过的,我就问他以前我在设计商品域的时候走的弯路。

好比商品快照问题怎么解决的,由于当时咱们作这一块的时候,全部涉及到商品域属性变动都会生成快照,形成数据量暴增。

而后面试官说他们也是这么作的,因此他说他们的一些操做日志表有的表已经有分库分表上万张了

我问面试官的第二个问题是详情页的设计,怎么作的缓存设计?(好比从不一样的业务纬度拆分key,更新频率拆分key)

由于我一直想了解一下大公司在库存和价格这块有没有应用缓存这种形式,由于咱们以前由于QPS都不算高,价格,库存都是直接实时查询数据的,结合兜底方案来解决。

因此这二个问题一提,一面面试官以为我以前有过思考,就让我进入了二面。

二面是hr,聊了薪水,加班,补助等。问我有没有买房,有没有在上海买房的打算?若是有的话,二年拼多多就能够凑足首付了。(拼多多二面都是hr,这个是槽点)。

三面商品部的老大来面试,也是聊设计技术方案为主,由于以前我作过订单,而后他问我下单要建几张表?我说订单主表,订单条目表(有的场景下,订单条目会建立不少条)。

面试官问我怎么优化?(针对建立的订单条目太多的问题)

首先我说订单表能够分库分表来解决单DB的写入瓶颈;面试官不满意,我说能够先建立订单主表,若是订单条目表是瓶颈那么梳理一下业务,看看订单条目是否能够异步建立,走MQ,而后面试官仍是不满意,我说我只能这么优化了,暂时没想到更多的方案

而后又聊了下分布式事务,可靠消息最终一致性的方案讲了一下,讲解了咱们目前怎样使用这套架构来采集上游数据,清洗数据,而后消费落到业务数据库的。

又聊了一些其余的方案设计,细节的技术点聊的少,大多数都是系统设计方面

我其实care到他的核心思路,由于拼多多商品应用的流量特别大,不少时候更多的时候在设计能够避免一些性能问题,而不是简单的堆机器。

总体下来,我感受有些高并发的优化经验欠缺,总体技术二面还能够(自我感受)。

面完,hr让我回去等消息,说明天下午4点给回复,我很开心,以为应该差很少了,怀着加班都是浮云,买房才是主要道理的心理,开开心心的回家了,次日hr告诉我说,我挂了,挂在最终面的技术面上,我泪崩,很无奈。

阿里

再说说面试阿里,先是面的蚂蚁金服。

一面是电话面试,一面聊了40分钟的业务,当时我正在坐地铁,而后在一站下车就直接在地铁站聊了40min。

面试官问了我在上家公司作的订单模块,正向下单流程业务是怎样的,系统流转怎样的,涉及到哪些域。

个人回答是下单流程根据不一样的业务涉及到的流转都不同,通常涉及到库存,订单,营销。订单完成以后涉及到调度域,积分域,用户等等。

而后又问我具体的订单模型是怎样设计的,拆单的依据是什么?我把订单的模型说了一下,通常都是订单主表和订单条目表,根据供应商的维度进行拆分订单。

接着问了正向下单流程中,优惠劵,库存,订单三者的事务如何保证的?

咱们作的很low,没有用分布式事务,直接在订单这边catch,catch里面作一些异常反向流程,好比说释放存储,更改优惠券状态等。

面试官紧接着问这样作的问题在哪里?

问题确定很是明显了,就是catch中失败如何去作。当时咱们只是记录了相关接口调用日志,会有1min的job会去轮询这些状态记录,并告警通知的。咱们也考虑过调研过一些分布式事务框架,目前也在调研中。

而后就一直聊的是业务和方案设计,聊完我本身以为一面应该是过了。过几天接到电话约二面。

二面是现场面试,2个面试官,问我为何从阿里出来,为何想回阿里。这个问题我以前没有准备过,就临场发挥了一下。

接着就是一连串连环炮:

  • 如今公司用户中心怎么设计的?为何这么设计?

  • 为何用redis?更新策略是什么?

  • 下单的链路怎么样的?

  • 怎么解决正向下单流程中库存,订单,积分的分布式事务问题?履约的过程?履约的后续流程?画出系统架构图(感受每一个面试官都会问)

  • 平时架构设计中要画哪些图?

我说通常会画一些数据库ER模型,重要的流程时序图,逻辑架构图,物理架构图等等

问我哪些中间件了解的特别深刻,我说es,redis,聊了聊使用场景,怎样同步mysql数据到es的,这样的架构有没有遇到问题,redis的一些性能优化等等。

二面结束了,下楼的时候我问二个技术官何时有结果,他们说一周吧,而后等了三周才有结果,整个到接到三面通知大概接近了二个月,在这期间我已经选了另外一家在线教育公司。

当时新公司已经入职二周了,周五接到蚂蚁金服hr的电话约三面,当时刚入职新公司一段时间,由于太忙了,因而就没去,放弃了三面。

又过了一段时间,阿里的一个面试官又打我电话,当时我在下班的路上,大概晚上9点40左右,说他是阿里的另一个部门,在系统上看到个人面试结果超时了,问我要不要面试这个杭州的职位

我就试试跟面试官聊了聊,聊到了最近作的一个作的一个面向B端的招聘项目使用的技术栈,数据的采集来源,怎么清洗数据,怎么维护数据池,面试官说很符合他们如今作的业务,一面过了

我说平时太忙了,没啥时间去杭州二面,面试官讲周六在盒马生鲜他们部门会来上海有个面试专场,此次周末时间,再去学习学习

二面的面试官应该是个p7,技术大牛,聊了一个多小时,java技术栈最考验候选人功底的就是java并发和jvm,面试官问我怎样写一个程序,快速打满方法区;让你设计一下可达性分析,思路大概是什么;可重复读有用到锁等等

三面的面试官是部门主管(大概p8,p9职位),聊聊DDD的理解;3点15时针分针的角度是多少😂;最了解的中间件是什么,说说你的理解;了解hive吗,等等;

第四面,hr面,为何以前离开阿里;工做中学到哪些,怎样以为跳出到另一个环境成长会更多;到新公司以后发现成长环境并非本身指望,怎么办?

而后问了我以前面试蚂蚁金服什么状况,由于HR只能在系统看到我今年面试超时,问缘由,我说面试周期太长了,三面没时间;

这边我也犯傻了,问了一个问题,说我面试若是过了能在阿里评级是什么,她反问我,你以为呢。。。面试结束的时候,我问hr大概多久面试结果出来,hr说月底以前通知

而后在月底接到了阿里hr的电话,通知我面试过了,薪水大概和我如今这家在线教育差很少,问职级,给了p6+

最终作了一些对比,仍是以为去阿里作 p6 或者 p6+ 并非我现阶段的意愿,在中等公司作技术专家或许能够能作更多的事情,所以拒绝了阿里的offer。

某在线教育公司

第一家公司是一家在线教育公司,boss上投的,总体面试的还不错。

一面的问题都是一些基础知识点的考察,面试官主要问了Java内存模型,ReentractLock与synchronized之间的区别,HashMap 1.7和1.8之间的区别,分库分表怎么作的,MQ怎样作到消息的可靠性,顺利经过。

二面的时候,和面试官聊了一些业务知识,交易相关的一些设计思路看法,因为我对本身作过的项目的业务很熟悉,聊的也比较顺利,面试也顺利经过。

三面面试官就是我入职的直接领导,问了对共享业务(大中台)的理解,服务边界怎么划分的,微服务的治理通常包括哪些,监控通常监控哪些等等,面试的都还不错。

而后hr来了谈了薪水,聊了换工做的缘由,下一份工做的指望等等,加了微信,路上说让我发给他以前公司流水,而后hr又具体聊了一下薪资指望,当天晚上23点发了offer(汗,当时就以为这公司加班挺狠的,hr都如此)

最终我选择了这家offer,给的职级是技术专家的岗位,平台和发展我的都比较看好,也有很多技术挑战。

喜马拉雅

喜马拉雅是朋友内推的,技术经理职位,在浦东。以前这一家的公司面试成功,让我喜马拉雅的面试颇有自信。

一面面了一个多小时,总体面试的还不错,大概2,3个回答的很差,好比说双亲委任机制和SPI,线程池执行的时候怎样在服务中止的时候优雅关闭线程池。不过我也在面试过程当中给了对方不少思路。

最后结束的时候面试官让我手写一个队列,我以为是一个比较简单的面试题,就口述了下思路,而后面试官坚持问了我第二遍,要不要手写出来,我说仍是不要了。

而后面试官走了,我觉得进入二面了,由于我本身也一直作面试官,也有一些面试经验,觉得这个一面差很少过了

可是过了5min,一面面试官说今天就到这边,让我回去了,非常惊讶。灰溜溜的走了,由于是内推,本身坚持要了没过的答案,是否是一面最后不手写代码的缘由,打听了一些,大意如此,汗。。。

其余公司

上面就是一些面试的主要公司,除此以外,还面了好比上海本土的一家生鲜平台公司,面试经过了,hr问我有没有offer,我认可有,最后也谈了offer

不事后来我拒绝了一是由于首先这家公司不是java技术栈(php,面试的时候说要重构平台,java在分布式架构中的生态优点),二是hr给我考虑的时间过短了。

还面试了上海的一家出行公司,这家公司须要我降薪,给期权,最后拒绝了,由于职位没给到指望,薪水方面感受也没收到尊重

我有以前的很多同事在这家公司,以前印象还不错,可是hr真的给我太差的印象了,面试次日说打电话跟我聊薪水,拖到下周二的晚上给我打电话。

而后我拒绝大幅度降薪(4k),说帮我谈降薪2k,次日给回复,而后次日又没给回复,也推到周五,反正后来hr加我微信,跟hr吵了一架。

另一个关于这家公司的槽点是,我面的是技术专家岗,最终技术面第四面,不知道什么职位的大佬过来问我 synchronize 和 lock 的区别,volatile 关键字的做用,问完了2个问题就走了,先后不到5min,感受面试太不专业了,这个也是我拒毫不去这家公司的缘由。

END


我的公众号:石杉的架构笔记(ID:shishan100)

欢迎长按下图关注公众号:石杉的架构笔记!

公众号后台回复资料,获取做者独家秘制学习资料

石杉的架构笔记,BAT架构经验倾囊相授