4面美团、3面拼多多面经分享,现已入职美团

美团4面

一面:

  • 自我介绍
  • HashMap,ConcurrentHashMap与LinkedHashMap的区别
  • 如何在多线程环境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加锁。
  • 多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让他们运行完a部分代码再一起向下执行,如何实现。
  • TCP连接中的三次握手和四次挥手,四次挥手的最后一个ack的作用是什么,为什么要time wait,为什么是2msl。
  • ReetrantLock和synchronized的区别。
  • Java有哪些悲观锁的实现?
  • Java有哪些类实现了乐观锁?
  • java里面的同步锁了解吗?Countdownlauch和Cylicbarrior的区别,分别在什么应用场景下使用
  • JVM的内存结构?哪些是共享的,哪些是线程私有的?Java虚拟机栈里面存放的是什么?
  • 如何自己实现一个线程池让别人使用?
  • 哪些情况会触发Java的类加载?
  • 手写代码:快速排序、单例模式,化一个工厂和装饰者模式的UML类图
  • AOP的实现原理?
  • Java锁有哪几种?可重入锁和不可重入锁的区别?
  • Lock和synchronized的区别?它们都是可重入锁吗?哪个效率更高?

二面:

  • 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
  • 数据库连接池介绍下,底层实现说下
  • hashset底层实现,hashmap的put操作过程
  • 说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
  • 说说B+树和B树的区别,优缺点等?
  • 算法题,对一个链表进行归并排序,链表可能有环
  • 怎么实现一个线程安全的计数器?
  • 原子类AtomicInteger实现原理是什么?和你设计的计数器优劣比较?CAS怎么实现原子操作的?
  • Java中的锁有什么?synchronized与Lock的区别?公平锁和非公平底层怎么实现的?AQS原理详细介绍一下?
  • JVM中的内存区域划分,堆的分代,为什么分代, 垃圾回收算法,垃圾回收器
  • 如何实现进程间特定场景下的高效通信, 问了存储相关的问题。
  • MySQL索引类型, 底层的数据结构
  • 你了解哪些收集器?CMS和G1。详细谈谈G1的优点

三面:

  • 自己项目中的总结的并发经验
  • 说说MySQL的锁并发?加锁的机制是什么?
  • 高并发场景下如何防止死锁,保证数据的一致性?
  • 集群和负载均衡的算法与实现?
  • 说说分库与分表设计?
  • 分库分表带来的分布式困境与对应之策有哪些?
  • Redis和Setnx命令是如何实现分布式锁的?使用Redis怎么进行异步队列?会有什么缺点?
  • 缓存击穿的概念和解决方案?
  • Redis的数据结构? 线程模型? Redis的数据淘汰机制?
  • Redis的数据一致性问题
  • MQ底层原理的实现?
  • 阻塞队列不用Java提供的该怎么实现?
  • 讲讲负载均衡的原理?
  • 如何实现高并发环境下的削峰、限流?

HR面(略)


3面拼多多

一面

  • Java中的HashMap、TreeMap解释下?(TreeMap红黑树,有序,HashMap无序,数组+链表)
  • TreeMap查询写入的时间复杂度多少?(O(logN))
  • HashMap多线程有什么问题?(线程安全,死锁)怎么解决?( jdk1.8用了synchronize + CAS,扩容的时候通过CAS检查是否有修改,是则重试)重试会有什么问题么?(CAS(Compare And Swap)是比较和交换,不会导致线程阻塞,但是因为重试是通过自旋实现的,所以仍然会占用CPU时间,还有ABA的问题)怎么解决?(超时,限定自旋的次数,ABA可以通过原理变量AtomicStampedReference解决,原理利用版本号进行比较)超过重试次数如果仍然失败怎么办?(synchronize互斥锁)
  • CAS和synchronize有什么区别?都用synchronize不行么?(CAS是乐观锁,不需要阻塞,硬件级别实现的原子性;synchronize会阻塞,JVM级别实现的原子性。使用场景不同,线程冲突严重时CAS会造成CPU压力过大,导致吞吐量下降,synchronize的原理是先自旋然后阻塞,线程冲突严重仍然有较高的吞吐量,因为线程都被阻塞了,不会占用CPU )
  • 如果要保证线程安全怎么办?(ConcurrentHashMap)
  • ConcurrentHashMap怎么实现线程安全的?(分段锁)
  • get需要加锁么,为什么?(不用,volatile关键字)
  • volatile的作用是什么?(保证内存可见性)
  • 底层怎么实现的?(说了主内存和工作内存,读写内存屏障,happen-before,并在纸上画了线程交互图)
  • 在多核CPU下,可见性怎么保证?(思考了一会,总线嗅探技术)
  • 聊项目,系统之间是怎么交互的?
  • 系统并发多少,怎么优化?
  • 给我一张纸,画了一个九方格,都填了数字,给一个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低(内心OS:之前貌似碰到过这题,最优解是怎么实现来着)思考中。。。
  • 可以先说下你的思路(想起来了,说了什么时候要变换方向的条件,向右、向下、向左、向上,依此循环)
  • 有什么想问我的?

二面

  • 自我介绍下
  • 手上还有其他offer么?
  • 部门组织结构是怎样的?(这轮不是技术面么,不过还是老老实实说了)
  • 系统有哪些模块,每个模块用了哪些技术,数据怎么流转的?(面试官有点秃顶,一看级别就很高)给了我一张纸,我在上面简单画了下系统之间的流转情况
  • 链路追踪的信息是怎么传递的?(RpcContext的attachment,说了Span的结构:parentSpanId + curSpanId)
  • SpanId怎么保证唯一性?(UUID,说了下内部的定制改动)
  • RpcContext是在什么维度传递的?(线程)
  • Dubbo的远程调用怎么实现的?(讲了读取配置、拼装url、创建Invoker、服务导出、服务注册以及消费者通过动态代理、filter、获取Invoker列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝口水么)
  • Spring的单例是怎么实现的?(单例注册表)
  • 为什么要单独实现一个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进行一些监控和性能优化)
  • 谁主导的?内部还在使用么?
  • 逆向有想过怎么做成通用么?
  • 有什么想问的么?

三面

二面老大面完后就直接HR面了,主要问了些职业发展、是否有其他offer、以及入职意向等问题,顺便说了下公司的福利待遇等,都比较常规啦。不过要说的是手上有其他offer或者大厂经历会有一定加分

读者福利

 分享一下我自己收集整理总结的大厂高频面试题目(含答案解析)希望能帮助粉丝朋友们拿到心意的offer。有需要获取的朋友见文末获取

学习笔记

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值