拼多多PDD-4.24服务端研发实习生一面面经

📍面试公司:拼多多

👜面试岗位:服务端研发实习生

📖面试过程:全程问八股,没聊项目,最后做道题。

  1. 自我介绍
  2. CMS和G1垃圾回收器,为什么现在生产环境主要用G1而不用CMS了?我没答到点上,面试官希望我回答的是CMS的Full GC会导致STW(stop the world)的时间很长,以及时间很长的原因
  3. synchronized锁升级的流程,说一下什么时候会发生锁升级?我三阶段答上来了,但是升级的触发时机有点忘了
  4. 有没有了解过HTTPS,讲一下会话密钥是如何决策出来的,讲一下流程。如果有个中间人伪造了一个公钥下发给客户端,导致中间人将客户端和服务器之间的信息被截获了,如何防止这个攻击?我背八股时有看到过,但印象不深,只回想起CA啥的,没答上来。
  5. 有了解过消息队列吗?有听说过Kafka吗?这个我简历上只有RabbitMQ,不了解Kafka,和面试官说后他就换了个问题
  6. RabbitMQ底层是用什么语言实现的?答:Erlang。为什么Erlang实现RabbitMQ延迟会比较低?这个问题面试官觉得可能有点难就跳过了
  7. 讲讲RabbitMQ的优先级队列、延迟队列是用来干嘛的吗?举两个实际场景。面试官说如果他们要用RabbitMQ的话,是因为有这些RabbitMQ特有的feature,Kafka没有,所以才会去用RabbitMQ,不然还是会用吞吐量更高的Kafka。
  8. MySQL存储引擎InnoDB,它会有一个内存的BufferPool,为什么要有这个区域?答的缓存减少磁盘IO
  9. 你知道一般的缓存命中率会有多少吗?什么情况下BufferPool需要扩大?不太了解生产环境,猜测是查询结果集较大时需要扩大。
  10. MySQL的分库分表有了解过吗?如果有个订单表,数据量有1亿条,你怎么去拆?答的水平分表,一开始我想的是按顺序分表,但是如果不断有新订单产生的话,这个策略还合适吗?后来我就改成了hash去分。
  11. 现在表已经改完了,那么我需要怎么修改业务代码去适配?你知道代码为什么要改造吗?如何尽可能减少代码侵入去修改?面试官希望我回答的是通过Spring的AOP动态代理去做,但我当时只想到了代理,没处理过这种业务,所以答得不好。
  12. MySQL的事务隔离等级有哪些?可重复读会不会出现幻读?我回答的是MySQL在一定程度上解决了幻读,但还是存在幻读现象,比如前面用快照读,后面用当前读,这种情况可能会出现。如果统一用快照读(MVCC)或者当前读(间隙锁)的话可以避免。
  13. MVCC是存在哪里的?面试官希望我回答的是undo log,但我没get到。
  14. bin log和redo log有什么区别?为什么需要redo log?为什么不直接刷到磁盘?这一块的八股有点忘了,应该回答“顺序写”和“随机写”的。为什么顺序写比随机写快?面试官希望我回答磁盘的工作原理。
  15. 抛开价格因素不谈,固态硬盘和机械硬盘分别会用在什么场景?两者分别有什么好处和弊端?没答上来,面试官说固态速度快但不容易恢复,所以他们的数据仓库一般会用机械硬盘存,会比较好恢复,当然价格上机械硬盘也会比固态低很多。
  16. 代码题:题干有点长,概括讲就是有一个log文件里存了多条命令,命令分为四种,input、delete、undo、redo,input命令输入,delete命令删除、undo命令撤销上个操作、redo命令重做上个被撤销的操作,最终给出执行完所有命令后的结果。面试官先让我看题想思路,然后用伪代码写一下就行。思路就是用了两个栈,一个记录最终需要执行的操作opStack,另一个记录被撤销的命令undoStack。在遇到input、delete命令时,将命令压入opStack中;遇到undo命令时,把opStack栈顶的命令弹出,压入undoStack中;遇到redo命令时,把undoStack栈顶的命令弹出,压入opStack中。在读完所有命令后,去执行opStack里的命令就行。虽然中间因为个人对题意有点误解,写了一个比较复杂的版本,但后面在面试官的提示下还是写出来了这个最终版本。
  17. 最后反问环节问了一下如果去拼多多实习的话,会做什么工作。面试官说一般入职后会有个新手项目,一边做这个新手项目,一边看各种文档,主要是学习,不会参与业务代码开发。新手项目是用来熟悉公司内部的各个中间件的,后面会做一些影响不大的业务需求,了解业务流程,这时的需求还只是一些影响不大的小优化或者之前搁置的非核心需求。大概两个月后可以参与一些正式的业务需求了,这时因为要着急上线,而且涉及多个团队进度,强度就上来了,一开始可能就参与一个需求,后面如果适应了就会加大需求的并发量,总体是这个节奏。

🙌面试体验:今天早上面了荣耀,面试官似乎是做安卓开发的,所以问的都算比较基础,手撕也是最基础的链表反转,20分钟就结束了,如果去的话大概率需要换方向。晚上面拼多多,虽然对难度早就有心理预期,不过确实难度大了不少,有些问题挺底层的。面试官人挺好的,对于每个没答上来的问题都会解答,只不过我答得确实太差了,估计大概率是要凉了。因为投得比较晚,所以这是我面的第二场,只能说还需要继续沉淀,再多背几家八股准备充分一点,到时候再多海投几家吧,先攒个实习经历再说。

#软件开发2024笔面经##软件开发笔面经##拼多多面经#
全部评论
面经真的很有用
4 回复 分享
发布于 04-24 23:06 江西
哥写的太详细了,棒
1 回复 分享
发布于 04-26 17:44 陕西
面试官好真诚的亚子
1 回复 分享
发布于 04-25 17:49 北京
收到二面邮件了,5.5下午4点
点赞 回复 分享
发布于 04-29 17:00 江苏

相关推荐

拼多多 暑期实习 二面,总共用时1h 左右, 被面试官疯狂拷打, 估计凉凉。首先介绍项目, 对方完全不感兴趣: 你做的这些和后端开发有什么关系?我简单介绍了下后端相关的,面试官可能觉得太简单了,没有继续问。然后就是痛苦的手撕拷打,持续50mins 左右。问题1: 给你两个班级, 每个班级共有 k 个人,你是班主任,要从每个班级中挑出1个人,使得他们的身高差最小。回答: 先排序, 然后遍历A班级,二分查找B班级中的第一个大于等于(lower_bound)A班级里的那个 的位置,然后比较那个位置和前一个位置。面试官和我不太同频,问我为什么要找第一个大于等于?二分查找不就是找一个位置吗? 面试官笑眯眯的问我是第一次接触二分搜索吗?然后计算时间复杂度。感觉完全不同频。问还有更优解法吗?回答双指针,还是固定遍历A, 然后另一个指针从B开始找比A大的,然后在和前一个也比较,取最小的。这样就是O(n).面试官提示一下,不要局限在当前这个和前一个比较,换种思路。 然后我一直在思考,对方问我双指针要怎么初始化?  因为我还没想好,就没回答。面试官: 双指针要怎么初始化?这你都不懂吗。。。? 怎么不回答我。我说新思路还没想好,面试官表示刚才那种思路的双指针要怎么初始化? 答:都初始化在第一个位置。问题2: 两个班级, 换成 N 个班级, 每个班级选1个人, 要求算出来的人里的 max - min 最小。答没思路, 面试官提示下多个指针? 考虑下指针应该如何移动。我想了想,移动最小的那个指针,直到所有指针都走到末尾,每次移动,从这个N个人里面取最大的,最小的,比较。然后算时间复杂度:n个班,每个班k个人,  我想整体的数据规模是 N = n*k , 然后我用 N 去后续表示。面试官:你为什要定义新的符号N? 算完时间复杂度,问我“从这个N个人里面取最大的,最小的”这部分可以优化吗? 我回答可以使用 map (cpp里的),面试官表示你直接说数据结构,不要说语言中的名字。问这个的时间复杂度,答logn面试官:那你开始写吧。写了大概 3 分钟。 他看了眼。问题3: ping 100ms  , curl http://1.2.3.4:8080/hello  需要多少时间?这里我考虑了4次挥手, 面试官:需要考虑这个吗?答 200ms. 问题4: 直播间,打赏金额最高的100个用户? 你应该如何实现维护?我回答使用 redis 的 zset ,  可以高效的获取top 100.面试官问:这样有什么问题吗? 如果用户特别多的情况。我想了一会,也没想出什么问题,回答没什么思路。面试官:用户太多了会有 大 key 问题, zset 删除的时候会阻塞几秒。 (我不太理解)面试官:你应该考虑怎么优化?答: string 配合 zset 使用, string kv 中存 user, money,  而 zset 中只维护 top 100 的。同时更新这俩。最后, 反问部门业务:拼多多直播带货。技术栈: 面试官看我的简历里面,cpp 太底层了我们这边不用,golang 也不用,主要是 java , 然后 redis, mysql, kafka这些。面试官问我懂不懂二分, 我当时多少有点生气💢, 不过总的来说面试官人还不错,还算友善,给了很多引导。#牛客创作赏金赛##拼多多#
查看13道真题和解析 牛客创作赏金赛
点赞 评论 收藏
分享
04-28 00:38
门头沟学院 C++
timeline 4.20笔试     4.27一面,一面时长50分钟左右。面试官很年轻,很友好,不知道的地方会讲解一下。(此处鼠鼠表示特别感谢)-------------------------------1.自我介绍2.拷打项目3.项目里面的MySQL是怎么使用的4.你的用户ID是什么?怎么用户数据的保证唯一性呢?5.项目里面Redis缓存的是什么数据?过期时间是怎么设置的?6.线程池里面有几种拒绝策略,你用的是哪一种呢?7.你这里提到了MySQL索引优化是怎么使用的?8.你这里用到了线程池,用线程池来处理什么?-------------------------8.说一下MySQL的引擎innodb的特性9.事物的隔离级别10.数据库分库和分表了解吗?说一下11.redis数据类型有哪些?你这个项目里面用的是什么?12.了解中间件吗?RabittMQ,Kfaka(此处鼠鼠不了解,面试官放过了)13场景题:设计随机挑选幸运观众---------------------------14.撕题,力扣原题,但非hot100,简单题,在原题基础上进一步追加一步随机操作(鼠鼠太紧张了,这里在面试官的提醒下,大概写了一下逻辑,也没让调通)15.什么时候可以来实习,打算实习多久?16.base在上海,考虑吗?---------------------------17.反问环节:技术栈,想让面试官总结面试,但是应该是内部不让,只说了不用担心这个,后续他仔细整理一下。#牛客解忧铺# #拼多多面试#
查看15道真题和解析 牛客解忧铺
点赞 评论 收藏
分享
评论
17
43
分享

创作者周榜

更多
牛客网
牛客企业服务