拼多多PDD-5.5服务端研发实习生二面面经

📍面试公司:拼多多

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

📖面试问题:先项目穿插八股,后纯八股,最后手撕,后面几个问题都答得不怎么样,大概率挂了

  1. 自我介绍(简历上的项目:黑马点评 + RPC框架 + 两个科研项目)
  2. 首先问了一下研究方向,因为我那两个科研项目是用Python写的,所以面试官首先问我对Python的基本原理了解吗?本来估计想问我线程模型、内存管理机制啥的,但我也只是使用了Python,并没有对底层做研究,就没继续问
  3. 你第一个项目是科研项目还是课题项目?老实回答说是自学项目。是你独立开发的吗?依旧老实回答。
  4. 说说项目亮点。答的缓存那一套东西以及缓存穿透、缓存击穿、缓存雪崩。
  5. 缓存穿透怎么解决?存储空对象。那存储的key是什么?那如果我是一名攻击者,我每次都随机生成不同的key去查询,那每一次都是穿透的,你怎么解决?(应该用布隆过滤器的,没想到)
  6. 缓存击穿怎么解决?双重检测锁。缓存雪崩怎么解决?设置随机的过期时间去尽可能预防。
  7. redis怎么设置过期时间?set命令+ex或ps参数。你用过这个参数吗?一般是在SpringBoot上用RedisTemplate去设置的。除了set+ex外,还有其他命令去设置过期时间吗?印象中有个expire命令。
  8. 缓存击穿是有大量热Key并发访问,那redis中如何检测热key?那热key会有什么问题呢?(检测没想起来,后者答的一个缓存雪崩,另一个是节点压力过大,可以考虑集群)
  9. 集群怎么让一个请求打到不同的节点上?负载均衡
  10. redis对过期key的删除策略有哪些?(忘了,应该回答惰性删除和定期删除的)
  11. redis中ZSet底层是用什么数据结构来实现的?存储元素数量在多少时会从ziplist切换到skiplist?这个阈值的默认值是多少?(麻了,太久没背想不起来了,答得不咋地)
  12. 那讲讲第二个项目吧。注册中心用的是zookeeper是吧?那zookeeper挂了会有什么影响吗?我那个项目有个本地缓存,服务发现完后会记录到本地,所以答的是会从本地去找,直到zookeeper恢复。
  13. 你的RPC框架负载均衡是怎么实现的?有实现基于权重的负载均衡策略吗?如果要你去实现的话,你怎么实现?
  14. 有了解其他RPC框架吗?比如gRPC、Dubbo这种?你知道Dubbo的基于权重的负载均衡策略是怎么实现的吗?(又麻了,不了解这些)
  15. 你序列化用来Json和Hessian两种是吧?你这个Json是FastJson还是Jackson?FastJson。为啥不用Jackson呢?这两者相关的性能你了解吗?相同点与不同点,有了解吗?(再度麻了,总不能说网上教程用的是FastJson,所以没用Jackson吧)
  16. 你项目是用的SpringBoot是吧,你项目是怎么打包发布的?用pom.xml文件设置,并用IDEA配置的Maven进行的打包。有直接使用命令吗?
  17. Maven里面有哪些包依赖管理的原则?传递性依赖如果最终有版本冲突了,最终是由哪个版本决定的?依赖冲突怎么解决,通过什么手段?(这个Maven属于是忘完了,就只会用IDEA那些了生命周期)
  18. 你了解JVM的垃圾回收吗?G1垃圾回收器哪些过程可以和用户线程并行呢?
  19. G1和CMS对比之后,你觉得CMS有哪些优势呢?
  20. G1里还有Survivor区域吗?所以它垃圾回收的时候也是按照S1、S2来做回收吗?
  21. G1中的Region可以分为哪几种类型呢?
  22. 你对card table了解吗?(这个也太冷门了吧
  23. MySQL有哪些方式可以解决回表问题?只想起一个覆盖索引,后面面试官问我索引下推了解吗?我答上来了(应该是面试官在暗示我这个操作也可以减少回表)
  24. 你知道Read View里面有哪些比较重要的关键字的吗?为了实现事务的版本并发控制,MySQL表里面有哪些隐藏字段来实现事务功能?(这两问一面之前背过,结果忘了
  25. 你知道order by是怎么实现的吗?我想不到,就答了如果有索引的话,B+树这个数据结构可以优化order by。后续我去查了一下,如果没有索引,是通过filesort里的sort_buffer实现的(之前完全没听过
  26. 你这些项目都是用git去管理的吗?有用过哪些命令?你知道git pull和git fetch的区别吗?(没背过,查了一下两者都可用于从远程仓库获取数据,但后者只会获取远程仓库的最新代码和更新信息,但不会更改本地代码,前者则还会尝试自动将这些更改合并到你的当前分支中,也就是git pull == git fetch + git merge)
  27. 最后是手撕lc hot100里的4. 寻找两个正序数组的中位数,牛客上也有这题两个升序数组的中位数,要求最低的时间和空间复杂度。面试结束后搜了一下,是hard题,可惜之前没刷过,就只能先和面试官讲了最基本的归并找中位数的思路,也说了这种方法的时间复杂度和空间复杂度,但不符合题目要求的最低时间与空间复杂度,临时想的话没想出来,后续再补刷一下吧
  28. 反问环节,因为差不多已经能看到感谢信(如果有的话)在向我挥手了,所以就只问了面试结果大概多久可以出来。

🙌面试体验:虽然面试官没给压力,语气挺温和的,没答上来的也没多问,但是问的题目个人感觉难度都挺高,加上我个人准备不充分,感觉基本是无了,面到一半心就差不多凉了,不报什么希望了。只能再投几家了多找找了

全部评论
居然过了3个小时就收到三面邮件了,明天下午3点开始。二面好多题没答上来,手撕也没做出来,我还以为直接给我挂了,今天再背一下八股,刷一下leetcode热题,明天再冲一次吧
2 回复 分享
发布于 昨天 20:47 江苏
25在极客时间有,16 | “order by”是怎么工作的?,说实话有点难了
1 回复 分享
发布于 今天 17:50 湖北
三面加油!(佬进度好快,蹲一个三面面经
1 回复 分享
发布于 今天 13:58 天津
你这面了多久呀,怎么这么多问题
1 回复 分享
发布于 今天 10:57 广东

相关推荐

评论
7
23
分享

创作者周榜

更多
牛客网
牛客企业服务