面试前
面完蚂蚁后,早就听闻拼多多这个独角兽,决定也去面一把。首先我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多面试之旅。这里要非常感谢拼多多HR小姐姐,从面试内推到offer确认一直都在帮我,人真的很nice。
一、笔试
不用多说了,上来就是四道算法题
第一题
- 题目描述
自动售货机里有 N 瓶复制可乐。复制可乐非常神奇,喝了它的人会复制出一个自己来!现在有 Alice, Bob, Cathy, Dave 四个人在排队买复制可乐。买完的人会马上喝掉,然后他和他的副本会重新去队伍的最后面排队买可乐。问最后一个买到复制可乐的人叫什么名字?
- 输入描述:
输入仅有一行,包含一个正整数 N (1 <= N <= 1,000,000,000),表示可乐的数量。
- 输出描述:
输出喝到最后一罐复制可乐的人的名字。
示例1
说明:
前8个喝到可乐的人依次为:Alice, Bob, Cathy, Dave, Alice, Alice, Bob, Bob.
- 解题思路
- 代码
第二题
- 题目描述
四年一度的世界杯又来了!小多在公司内发起了一个票选最强球星的活动。共有 N 个候选球星,每位投票者需要在选票上为每位候选球星评定一个实例等级,等级由英文字母表示,'a' 级最高,'z' 级最低,共26级。
我们称候选球星 X 强于候选球星 Y,当「 X 的评级比 Y 高」的票数高于「 Y 的评级比 X 高」的票数。若一个候选球星强于任一其他候选球星时,则称该球星为“球王”。根据这个规则,至多只会有一个球王。需要注意的是也可能没有球王。现在给出所有 M 张选票,请你帮小多判断一下哪位候选球星是球王。
- 输入描述:
第一行包含2个整数 N、M,分别表示候选球星数量以及选票数量。接下来有 M 行,每行是一个长度为 N 个字符串,每个字符串表示一张选票上的信息。每个字符串的第 k (0 <= k < N) 个字符,表示这张选票对第 k 个候选球星的评级。
数据范围:
- 输出描述:
若有球王,则输出一行仅包含一个整数 X,表示编号为 X (0 <= X < N) 的候选球星是球王;若没有球王,则输出一行仅包含一个整数 -1 。
示例1
示例2
- 解题思路
- 代码
第三题
- 题目描述
有N个货物(0<=N<=1024),每个货物的重量是W(100<=W<=300)。如果每辆车最多的载重为300,请问最少需要多少辆车才能运输所有货物。
- 输入描述:
一行输入,包含N个正整数,表示每个货物的重量,空格分隔。
- 输出描述:
一行输出,包含一个整数,表示需要的车辆数。
- 解题思路
- 代码
第四题
- 题目描述
A 国的手机号码由且仅由 N 位十进制数字(0-9)组成。一个手机号码中有至少 K 位数字相同则被定义为靓号。A 国的手机号可以有前导零,比如 000123456 是一个合法的手机号。小多想花钱将自己的手机号码修改为一个靓号。修改号码中的一个数字需要花费的金额为新数字与旧数字之间的差值。
比如将 1 修改为 6 或 6 修改为 1 都需要花 5 块钱。给出小多现在的手机号码,问将其修改成一个靓号,最少需要多少钱?
- 输入描述:
第一行包含2个整数 N、K,分别表示手机号码数字个数以及靓号至少有 K 个数字相同。第二行包含 N 个字符,每个字符都是一个数字('0'-'9'),数字之间没有任何其他空白符。表示小多的手机号码。
数据范围:
2 <= K <= N <= 10000
- 输出描述:
第一行包含一个整数,表示修改成一个靓号,最少需要的金额。第二行包含 N 个数字字符,表示最少花费修改的新手机号。若有多个靓号花费都最少,则输出字典序最小的靓号。
示例1
说明:
花费为4的方案有两种:777577与777775,前者字典序更小。
- 解题思路
- 代码
2、一面
一个超级温柔的小姐姐,先聊聊简历的东西,说说项目。随后撕了两个sql题目,难度弱于笔试。主要考察窗口函数,来张图证明所言不虚。
业务题是:
如果你负责生产全市的窨井盖,可以生产圆的和方的,如何计算怎么生产更合适
(思路:根据材料限制情况,线性规划,别想的太复杂)。
当天晚上面试官微信介绍了她所在的团队情况,估计应该是比较满意我吧。
3、二面
主要问了下面这些问题:
- 系统有哪些模块,每个模块用了哪些技术,数据怎么流转的?(面试官有点秃顶,一看级别就很高)给了我一张纸,我在上面简单画了下系统之间的流转情况
- 链路追踪的信息是怎么传递的?(RpcContext的attachment,说了Span的结构:parentSpanId + curSpanId)
- SpanId怎么保证唯一性?(UUID,说了下内部的定制改动)
- RpcContext是在什么维度传递的?(线程)
- Dubbo的远程调用怎么实现的?(讲了读取配置、拼装url、创建Invoker、服务导出、服务注册以及消费者通过动态代理、filter、获取Invoker列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝口水么?
- Spring的单例是怎么实现的?(单例注册表)
- 为什么要单独实现一个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进行一些监控和性能优化)
- 谁主导的?内部还在使用么?
- 逆向有想过怎么做成通用么?
- 有什么想问的么?
3、三面
HR直接一个电话就过来了,问方不方便聊。记得问了下面几个问题:
1.高中有参加竞赛,为什么大学不参加了?
2.看你学的是理科,为什么选择数据分析?
3.更倾向于业务还是理论?
4.手里有没有其它offer?
小哥哥声音挺好听的,整体时间12分钟左右。我还吐槽了中间等了两周的时间,气氛比较活跃友好。
小结
总的来说,拼多多的面试流程就简单许多,毕竟是一个成立三年多的公司。面试难度中规中矩,只要基础扎实应该不是问题。但不得不说工作强度很大,开始面试前HR就提前和我确认能否接受这样强度的工作,想来的老铁还是要做好准备。
来源:oschina
链接:https://my.oschina.net/u/4258325/blog/4302576