原来拼多多才是互联网的铁饭碗

hey,我是白露。

又到了一年一度的秋招季,有人为了大厂加班跋山涉水,有人为了内推使出浑身解数。

今天我们来看一则招聘信息,部门200个HC(招聘名额)敞开怀抱,业务扩张太快,面试一周搞定“,这简直是秋招中的一股清流啊!

你有没有想过,也许拼多多才是互联网界的“铁饭碗”。

拼多多的后台开发部门不仅提供了丰厚的薪资待遇,还打出了“安心赚钱不担心裁员,HC巨多!!”的口号。

是什么让pxx如此自信?

img

丰厚薪资,一目了然

贴一个拼多多2024年的校招薪资,

pdd的薪资主要是18薪(也就是18个月的工资)

除了12个月的工资,还包括2个月的绩效+2个月的年终+2个月的加班费😂

拼多多校招2024薪资大曝光

img

具体来说,开发岗位的白菜员工薪资在27-30k之间,而ssp员工更是能拿到37-40k。

算法岗位同样诱人,白菜员工27-32k,ssp员工则是38-43k。

而对于产品、运营、设计等岗位,薪资结构也是同样诱人!

看到这里,大家是不是已经跃跃欲试了?

别急,接下来我们就来聊聊拼多多后端技术岗位的面试经验,看看如何顺利拿下这个“铁饭碗”!

面试开始

今天的面经来源于白露自己的一位陪跑学员(java后端)的真实面试内容!顺便恭喜这位学员已拿下offer!

本次面试经历了三轮专业面,今天在这篇文章里面给大家分享前两轮面试的内容,如有需求的朋友,可以后台滴滴白露,查看整个面试的完整内容!!

同时,白露自己的博客网站OfferNow也已上线,当前网站上已有400+份学习资料,不仅涵盖现下热门编程语言的学习,同时也有超多面试真题。

img

  • 超多实践面试真题汇总(持续更新中!!)

img

01 拼多java后端一面面经

基础问题

自我介绍

  • 请简要介绍一下自己,包括你的教育背景和工作经验。

项目介绍

  • 介绍一下你参与过的项目,包括各个服务的功能是什么。
  • 你的各个服务是如何通信的?是否了解RPC?介绍一下RPC。
  • 在高并发场景下,你是如何应对的?

八股问题

微服务架构

  • 谈谈你对微服务架构的理解。
  • 你是否了解设计模式?使用过哪些设计模式?
  • 介绍一下你使用过的消息队列,例如RocketMQ的架构。

数据结构和算法

  • 介绍一下HashMap的底层数据结构。
  • 面向对象编程的理解,介绍一下继承、封装、多态。
  • 介绍一下你使用过的Redis的数据结构及其作用,为什么使用内存做缓存?
  • 解释Bigkey问题和Hotkey问题及其解决方案。
  • 你是否了解MySQL?为什么不使用MySQL做缓存?

系统和性能优化

  • 介绍一下JVM的内存结构。
  • 垃圾回收算法介绍一下。
  • 介绍一下分代回收。
实践操作题

编码题目

  • 请用代码实现一个简单的缓存系统,并说明你设计的理由。
  • 实现一个简单的消息队列,解释其核心逻辑。

值得注意的是,拼多多的算法题没有代码提示,得手敲!!

02 二面被问麻了!!

基础问题如自我介绍等问题在一面面经中已写,在此不再赘述。在此,我们仅阐述二面的面经核心问题。

项目相关问题

有接触过哪些消息队列中间件?如何来选型?

  • 答:接触过RabbitMQ、ActiveMQ、Apache Pulsar。选型依据包括吞吐量、延迟、消息持久化能力、拓展性、社区支持、运维难度和企业的具体需求。例如:
  • RabbitMQ:适合需要复杂路由规则、易用性高、需要持久化的场景。
  • Apache Pulsar:适合高吞吐量、低延迟、需要多租户支持的场景。
  • ActiveMQ:适合需要兼容JMS规范,且需要持久化支持的场景。

为什么用消息队列?

  • 答:使用消息队列的主要原因包括:
  • 解耦:使得生产者和消费者可以独立发展、独立部署。
  • 异步处理:允许任务异步处理,提高系统吞吐量和响应时间。
  • 流量削峰:在流量高峰期可以平滑处理流量,避免系统过载。
  • 数据持久化:保障消息的持久化存储,提升系统可靠性。
  • 容错处理:支持消息重试和处理失败后的恢复机制。

对于消息的重复消费你有什么设计方案吗?

  • 答:以下是一些常见的设计方案:
  • 幂等性设计:在消费者端实现幂等性,即重复执行相同的操作不会改变最终结果。
  • 唯一ID检测:给每条消息分配唯一ID,在消费时检查该ID是否已经处理过。
  • 事务机制:使用事务消息,确保每条消息只处理一次,例如使用数据库事务或消息队列的事务特性。
  • 消息确认机制:确保消费者在成功处理消息后才确认消息,未确认的消息可以重新消费。
计算机网络

HTTP和HTTPS的区别是什么?

  • 答:HTTP是明文传输,HTTPS使用SSL/TLS加密传输,HTTPS更安全,防止数据窃取和篡改。

DNS解析的过程?

  • 答:客户端查询本地DNS缓存 -> 本地DNS服务器 -> 根DNS服务器 -> 顶级域DNS服务器 -> 权威DNS服务器 -> 返回IP地址。

TCP和UDP的区别?

  • 答:TCP是面向连接的,提供可靠传输,适用于数据完整性要求高的场景;UDP是无连接的,传输效率高,适用于实时性要求高的场景。

TCP三次握手的过程,如果没有第三次握手会有什么问题?

  • 答:第一次:客户端发送SYN,第二次:服务器回复SYN-ACK,第三次:客户端回复ACK。没有第三次握手,服务器无法确认客户端接收到ACK,可能导致资源浪费和连接不可靠。
Java并发

Java中如何实现线程安全的队列?

  • 答:可以使用ConcurrentLinkedQueueBlockingQueue(如ArrayBlockingQueueLinkedBlockingQueue)。

什么是CAS?它是如何工作的?

  • 答:CAS(Compare-And-Swap)是一种原子操作,通过比较期望值和当前值,如果相同则更新为新值,常用于无锁并发编程。

什么是线程池?为什么使用线程池?

  • 答:线程池是一种管理线程的机制,通过重用线程减少线程创建和销毁的开销,提高系统性能和稳定性。

Java并发包组件了解多少?

  • 答:了解ConcurrentHashMapCopyOnWriteArrayListCountDownLatchSemaphoreCyclicBarrier等,用于线程安全操作和并发控制。

HashMap、HashTable和ConcurrentHashMap的区别?

  • 答:
  • HashMap:非线程安全,适用于单线程环境。
  • HashTable:线程安全,但性能较低。
  • ConcurrentHashMap:线程安全,采用分段锁提高并发性能。

什么时候多线程会发生死锁?怎么预防?

  • 答:多线程在持有资源等待其他线程释放资源时可能死锁。预防措施包括避免嵌套锁、使用超时锁、按序请求资源、使用死锁检测机制。

什么是线程局部变量?

  • 答:线程局部变量(ThreadLocal)是每个线程独享的变量,确保线程之间的变量互不干扰。

如何实现线程的安全终止?

  • 答:使用volatile标志位、interrupt方法或使用并发包中的Future.cancel方法。

Java中如何实现不可变对象?

  • 答:将类声明为final,所有字段为私有并使用final修饰,不提供修改字段的方法,仅通过构造器初始化所有字段。

单例模式怎么保证线程安全?

  • 答:使用双重检查锁定、静态内部类或枚举方式实现线程安全的单例模式。

什么是读写锁?有什么用处?

  • 答:读写锁(ReadWriteLock)允许多个读线程并发访问,但写线程独占锁。适用于读多写少的场景,提升并发性能。

Fork/Join框架的原理是什么?

  • 答:Fork/Join框架将大任务拆分为小任务并行执行,通过ForkJoinPool管理任务的分解和合并,提高任务执行效率。

最后,祝你拿到心动的Offer!

当然,除了这些之外,pdd的每次面试都会问到面试者关于11116工作的看法,能否接受…

如果你在准备秋招的过程中遇到任何疑问或需要更多的面试辅导,我的秋招陪跑项目可以为你提供全方位的支持和帮助。无论是模拟面试、简历优化,还是专项技能培训,我们都能为你量身定制解决方案,拿到理想的offer。

想要了解陪跑项目的同学,也可以后台私信白露!

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值