首页 > 拼多多 服务端开发 一面 攒攒人品望二面
头像
冲啊啊啊77
发布于 2022-03-12 11:46
+ 关注

拼多多 服务端开发 一面 攒攒人品望二面 内部员工回复

首先上来就是一个算法题, 没见过的:

题目描述: 输入一个链表head与一个整数n, 请你将链表均匀地分为n段:
例如:1,2,3,4,5,6,7,8 分成n=3段, 那就是[[1,2,3],[4,5,6],[7,8]]
不是原题, 一开始想到先求长度, 但是不知道怎么可以确定有多少段要多长,最后靠面试官提示了思路, 这面试官真的人超好! 这都不是提示了吧, 这都是相当于没代码的题解了hhh, 直接说了用取模就可以得到有几段是大于平均长度的, 后面好像意识到自己说太多了,就说思路给你了,就考你代码落地能力了。然后我就开始写, 感觉边界处理还是有点问题的, 如果运行肯定小崩,但是面试官没运行, 只是跟我探讨里面的逻辑问题, 最后说我只是一点问题没处理, 然后下一个。

第二个是SQL题,给我一个表定义语句, 然后三个文字题目让我写select语句,然后根据这些考察MySQL知识:

问题不大, 前两题是那种很常见的select, 第一个就是where即可, 第二个是order by一下, 第三个是要分一下组。
面试官说语法有点问题, 但是逻辑没问题,之后面试官就开始基于第一个简单where的sql进行索引的提问:(ps: 篇幅原因,很多回答都缩略了)

  • 问题:表定义里面索引是(id,status,create),你的sql里是id and create, 可以用到这个索引吗?
    回答:不可以,因为最左前缀原则,这里的status断开了。
  • 问题:那我如果想提高效率,给他加一个什么索引呢?
    回答:加个create即可
  • 问题:加个create确实可以让create用上索引,但是如果我想整个语句都达到最高的一个效率,不考虑空间占用啥的,怎么设置索引?
    回答:那就加个(id,create)
  • 问题:你再仔细看看? 你了解覆盖索引吗?
    (这里终于我把目光移向了前面,发现select的字段里面有个amount!!终于知道面试官在追问什么了!谢谢面试官的提醒!)
    回答:解释了一下刚刚没看到前面的amount,然后开始长篇大论回表&覆盖索引的问题,然后说设置一个(id,create,amount)索引即可。
    (面试官终于表示很满意,也理解我刚刚的错误回答,笑了笑说他都给我提示了哈哈哈,我直接长呼一口气)
  • 问题:说说聚簇索引和非聚簇索引的区别吧?
    回答:举了MyISAM和InnoDB的例子,一个data是地址,一个data是数据巴拉巴拉(老八股了)
  • 问题:你了解MySQL隔离级别不?
    回答:从四个隔离级别结合了脏读、不可重复读那几个问题,穿插着展开说了说
    (可能是看我没说幻读吧,所以又出了一个题)
  • 问题:InnoDB可重复度隔离级别下,如果我有两个事务,一个select之后,另一个insert了,那么原来那个可以读到这个insert数据吗?
    回答: insert是典型的幻读原因,单论可重复度隔离级别,是不可以解决幻读问题的,但是InnoDB特殊的机制(next_key算法),让InnoDB的可重复读也可以解决幻读问题。

面试官听到最后一个回答,好像非常满意,说你回答了这个,我就知道你MySQL挺熟悉的,那就不问了。
我也附和说课内学的挺好的,然后之后项目用到了也深入了解了,面试官点点头。

第三部分Redis缓存:

  • 问题:看你项目用了不少redis,你说说redis在你的项目里面的应用场景吧
    回答:缓存 和 分布式锁
  • 问题:分布式锁?你怎么实现的?
    回答:还是那套,从盘古开天地说到Redisson,然后大致说了说Redisson的实现原理。

面试官说看来我用的不错,没必要问了,时间紧迫,下一个

第四部分RabbitMQ消息队列相关:

  • 问题:看你用了rabbitmq这种消息队列,你说说消息队列在项目里常用场景吧?
    回答:1)系统解耦合,结合了项目讲了一下,2)异步处理,结合了拼多多的增值任务怎么提高响应速度讲了一下,最后提了一下流量削锋啥的

时间紧迫,下一个

第五部分给我一个Java代码,其实就是考try-catch-finally的执行顺序:

考了两种,一个是try有异常,一个try没异常,然后问了一下为什么catch都return了,finally还有输出
不难,刷的做完了

体会:
几次大厂面试下来,我真的发现面试官真的是面试好坏的决定因素!这一次很多问题他都是引导着我去,而不是直接放我在那里晾着最后等我说我不会,没有他的提示,我感觉一上来的算法题就得挂,然后过程中也挺和善的,我回答问题过程中,说到点子上了,他也会点头反馈一下,然后回答得好也会表达一下他的满意,我感觉整体下来非常舒服!其实经过那次某大厂的洗礼,这一次一上来就是做题,我一开始生怕剧情重演,但是这个面试官真的很友好,比如我挺怕面试写sql的,但是他一上来直接说了这个sql不难,甚至直接告诉我最难也就第三个用到了分组groupby,我直接放松下来,真的太感谢了!

总结:

  • 各位面拼多多的,一定要重视MySQL,面试官也说了进公司还会有MySQL培训,因为他们公司很看重MySQL的基础,我在之后也要加深一下,比如面试中说的索引、为什么InnoDB可以解决幻读(这一次没问,可以说也算幸运)等等相关问题
  • 面对算法题和SQL不要太慌,不会就问面试官,万一也遇到这么好的面试官呢!然后SQL好像一般不考多表连接,分组的逻辑下来一定要多去练练!
  • Redisson原理多去了解了解吧,这次就问了,下一次深挖的话就难顶了

攒攒人品,希望有二面!!!!!

更多模拟面试

全部评论

(8) 回帖
加载中...
话题 回帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐