拼多多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 陕西
收到二面邮件了,5.5下午4点
点赞 回复 分享
发布于 04-29 17:00 江苏
面试官好真诚的亚子
1 回复 分享
发布于 04-25 17:49 北京

相关推荐

04-25 18:18
门头沟学院 Java
0425 问了些八股(10min),没问项目,做了三题手撕(50min)在pdd的面试平台,需要共享屏幕。面试官很和蔼,比约的时间早进面试间。不会的也说没事,手撕也提示自我介绍(1min)1. 常见的集合有哪些2. 哈希表有哪些实现方式3. 除了哈希表,还有什么数据结构能实现输入key,找到他的value4. 哈希表怎么实现的5. 为什么链表长度大于8,要用红黑树6. 为什么红黑树是log(n)的时间复杂度7. 优先队列怎么实现的8. 说一下堆怎么实现的,pop之后堆怎么调整9. 说一下TCP协议10. 说一下IP协议11. 说一下HTTP协议和TCP/IP整体关系12. 说一下HTTPS13. 说一下HTTPS的原理14. 说一下公钥、私钥和数字证书15. 为什么一开始要用非对称加密,后来用对称加密16. HTTPS 如何防范中间人攻击手撕1. 给了两个有序的数组(数组中有重复元素),把a中存在,但b中不存在的数据加入新数组2. 一个有序序列构造成二叉搜索树有很多种结构,如何判断两个二叉搜索树是一样的。先说了中序遍历获得序列判断,但面试官提示说能不能一边遍历一边判断,比如最小的数不相等就不往下遍历了3. 给一个字符数组,写一个排序函数,数字排在字母前面,但数字之间相对顺序不变,字母之间相对顺序不变。(原地排序,不能用新数组)
拼多多集团-PDD一面327人在聊 查看40道真题和解析
点赞 评论 收藏
分享
评论
23
81
分享

创作者周榜

更多
牛客网
牛客企业服务