面经-阿里、腾讯、百度、美团外卖、快手、Zoom、微软

一、腾讯:
【一面 38min】

  • Tcp连接过程
  • Time Wait原因,如何解决
  • HTTP连接过程,涉及到了哪些网络协议(一直说到了链路层)
  • IO多路复用原理及底层实现
  • Epoll和Select的区别
  • 边缘触发和水平触发
  • Coding:模式转换,输入2|[A1|[B]] 输出 ABAB

【二面 1h20min】

  • 聊项目
  • 说说thrift rpc的过程
  • thrift网络通信如何实现的
  • Socket建立的过程(设计到用户态和核心态的函数切换,以及双向fd的建立)
  • protobuf和json的区别,为什么protobuf更快
  • Grpc有了解吗,说说其特性(http2.0)
  • Coding:给定字符 a b和长度n,输出所有由a b两字符组成的长为n的回文串,输入 a b 3 输出:aaa bbb aba bab

【三面 30min】

  • 聊项目
  • 讲讲Os的虚拟内存
  • Coding:输入任意数组,每次操作都能使n-1个数+1,求使数组所有数变为相等的最少操作,输入 1 2 3 输出 3

【hr面 15min】

  • 优点缺点
  • 哪里人,多大了
  • 大学研究生经历
  • 父母职业
  • 工作意向城市
  • 有女朋友吗
  • 反问……

二、阿里:
【一面 58min】

  • 自我介绍
  • arrayList和LInkList区别,底层实现,性能差别,arraylist扩容机制
  • string底层实现
  • stringBuffer和stringBuilder区别
  • hashtable和hashmap区别
  • concurrenthashmap实现原理,transfer具体过程,如何实现并发扩容机制的
  • concurrenthashmap并发一定安全吗
  • jvm分区,分别存的是什么
  • jvm垃圾回收,为什么要使用分代回收,年轻代为什么要分两个s区
  • 类加载过程
  • 双亲委派模型,如何破坏
  • java是如何保证线程安全的
  • 说说JMM
  • 平时项目中有用过tree结构吗
  • 快排的具体过程,最差和最好的时间复杂度,空间复杂度,稳定吗
  • mysql的引擎区别
  • 数据库是如何实现acid特性的
  • 为什么选用b+树
  • mysql如何控制索引的大小
  • redis和mysql区别
  • 反问

【二面 56min】

  • 自我介绍
  • java的三大特性,具体说说多态
  • ava异常有哪些
  • 运行时异常和非运行时异常的区别
  • 为什么要分运行时异常和非运行时异常
  • 了解设计模式吗——说说代理模式
  • 为什么要使用代理模式,直接实现接口不行吗
  • 具体解耦的体现
  • 为什么要使用JDK动态代理
  • JDK动态代理的具体实现原理
  • CGLIB代理和JDK代理的区别
  • JDK代理为什么只能针对接口实现代理
  • Volatile的作用,它是如何保证可见性的
  • 进一步说一下Volatile底层是如何保证可见性的
  • Volatile一定线程安全吗
  • synchronized和retreenlock的区别
  • synchronized底层实现原理,为什么要设计偏向锁和自旋锁,锁升级的过程
  • cas的实现原理,具体到指令
  • retreenlock是如何体现cas的
  • retreenlock是如何实现公平和非公平锁的
  • threadlocal原理
  • 项目中有用过线程池吗,线程池的创建方式,具体参数及其作用
  • redis的数据结构,zset底层实现
  • 如何解决缓存穿透
  • 布隆过滤器的原理,为什么布隆过滤器空间利用率更高
  • redis如何保证高可用
  • 哨兵机制原理

【二面完补了部门笔试,然后系统开了又笔试一次】

【三面 45min】

  • 自我介绍
  • 聊自动驾驶的项目(ps:貌似面试官很懂自动驾驶)
  • 具体工作以及算法优化的具体细节
  • 平时如何学java的
  • 了解java哪方面的知识
  • 说说jvm分区,为什么一定要分元空间和堆空间、栈空间这些
  • 线程并发安全问题有遇到过吗,说一说
  • 反问

【四面 42min】

  • 自我介绍
  • 聊项目
  • 结合你现在的经验,分析项目架构还有那些值得优化的地方
  • MapReduce源码实现的具体过程(自我介绍说自己实现过,所以才问了)
  • master宕机怎么处理
  • 如何实现MapReduce的高可用
  • 谈谈自己对一致性协议的理解
  • 如何处理脑裂问题
  • java的线程状态有哪些
  • 阻塞态和等待态有何区别
  • 什么情况下进入等待态
  • 分布式限流如何实现的
  • 反问

【五面 交叉面(视频) 30min】

  • 自我介绍
  • 自己的优缺点,具体体现
  • os为什么要加缓存,os的缓存和架构的中间件缓存有什么关系
  • 看自己写的博客
  • thrift和dubbo的区别
  • 有看过dubbo的源码吗(没有......然后给他讲了thrift的源码)
  • 你希望拥有什么样的工作环境
  • 你觉得自己的编码水平在周围同学中怎么样(那肯定得吹,数一数二)
  • 是什么驱动你编程的
  • 反问

【hr面 31min】

  • 家在哪里,大学哪里
  • 高中在哪个高中,是市重点吗,成绩如何
  • 在你的生活经历中,谁对你的影响最大,具体说说
  • 看你数学比较好,那为什么要选计算机这个行业,而不是数学专业
  • 项目中遇到的难点
  • 个人从大学在到研究生的经历
  • 为什么要选择考研究生
  • 现在学校和本科学校,有什么区别(同学,环境,教学等等)
  • 个人业余爱好
  • 为什么喜欢音乐,钢琴考级了吗
  • 有女朋友吗(为啥都要问这个,我已经不能承受任何伤害了)
  • 个人有没有遇到什么比较困难的时刻
  • 反问

三、美团外卖:
【一面 48min】

  • 自我介绍
  • java基础知识:arrayList、LinkList、HashMap、ConcurrentHashMap(熟读源码,问得很细)
  • JVM分区
  • GC详细说一下(年轻代为什么要分2个s区)
  • gc为什么要stop the world
  • cms说一下,快在哪里,缺点
  • threadlocal原理及内存泄漏原因
  • synchronized原理
  • mysql索引原理
  • ACID解释
  • thrift原理
  • thrift服务发布如何自动通知
  • redis特点
  • 缓存击穿和解决方案
  • tcp 3次握手和4次挥手
  • coding:给定一字符串,输出出现次数最少的所有字符(例:输入ababccc 输出:a b)

【二面 30min】

  • 自我介绍
  • 聊项目(说了很久)
  • 数据库如何实现事务的
  • 反问

【hr面】

  • 直接通知过了,确认信息和时间

四、快手
【一面 35min】

  • 自我介绍
  • java基础知识:arrayList、LinkList、HashMap、ConcurrentHashMap
  • java反射用过吗(没用,但提到了spring)
  • java的定时任务怎么实现
  • jvm分区
  • spring mvc原理,请求到controller的具体过程
  • coding:sql语句,实现一个类似于除法的语句not exists这种
  • coding:二分查找
  • 反问

【二面 25min】

  • 自我介绍
  • 聊项目
  • 说说自己对java哪一块比较了解
  • java锁的实现(说了很久,synchronized和retreenLock的底层实现,以及AQS)
  • 实习时间问题
  • 自己想做哪些方面
  • 反问

【hr面 10min】

  • 对快手的认识
  • 如何看待部门业务
  • 家在哪里
  • 实习时间
  • 反问

五、Zoom Vedio
【一面 48min】

  • 自我介绍
  • 聊项目
  • 项目当中遇到的问题,说得很细,会考虑各种case,让你给出解决方案(比如mq的顺序性保障,唯一id等)
  • jvm分区
  • 类加载机制,java只能从class文件加载吗
  • mysql索引原理
  • 为什么不建议在sql中写order by
  • 对于a=1 or b=2 or c<3 类似的where 语句如何优化
  • 反问

【二面 35min】

  • 自我介绍
  • thrift和protobuf区别
  • jwt原理
  • jwt的数据格式(还问了具体字段意义......)
  • 聊项目
  • RateLimiter的实现原理
  • 分布式锁的实现原理
  • redisson原理
  • 反问

【三面 18min】

  • 自我介绍
  • 聊项目
  • redis数据结构
  • 集群高可用如何保证
  • 宕机的服务器恢复后还能继续作为leader吗
  • springboot 自动装配原理
  • 反问

【hr面 8min】

  • 开学了吗
  • 实习时间
  • 以后期望的工作方向
  • 反问

六、百度(连续2个多小时,3面完)
【一面 36min】

  • java基础知识:arrayList、LinkList、HashMap、ConcurrentHashMap
  • 线程的创建方式
  • 继承thread和实现runnable接口有啥区别
  • 这两者在堆栈中区别的体现(有点懵)
  • mysql的索引
  • 全文索引知道吗
  • 倒排索引原理
#Proto#
全部评论
感谢楼主分享,期待补全嘿嘿。最后去了哪里呀
点赞 回复
分享
发布于 2020-04-18 21:42

相关推荐

点赞 37 评论
分享
牛客网
牛客企业服务