欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

面试了字节、阿里等大厂,今年面试到底问什么?(Java岗)

程序员文章站 2022-03-23 09:21:54
闲话先说说个人情况吧,我是17年本科毕业,以校招身份进入了鹅厂,在鹅厂工作了小三年,因某些不可描述的原因被裁掉了,目前已经入职字节近1个月的时间了,今天逛微博看到一条热门微博,属实有点感叹,内容如下:被裁掉后的我面试了阿里、京东、字节、拼多多、美团这些一线互联网大厂,面试完后我有个习惯,就是把面试官的问题记下来,方便以后的复盘,这次我就和大家分享一下阿里和字节的面试经验吧(个人感觉面试过程最舒服的),我复盘后的内容以及整理成了一份文档,可以分享给有需要的朋友,里面有一些面试题的复盘分析,面试前的...

闲话

先说说个人情况吧,我是17年本科毕业,以校招身份进入了鹅厂,在鹅厂工作了小三年,因某些不可描述的原因被裁掉了,目前已经入职字节近1个月的时间了,今天逛微博看到一条热门微博,属实有点感叹,内容如下:

面试了字节、阿里等大厂,今年面试到底问什么?(Java岗)

被裁掉后的我面试了阿里、京东、字节、拼多多、美团这些一线互联网大厂,面试完后我有个习惯,就是把面试官的问题记下来,方便以后的复盘,这次我就和大家分享一下阿里和字节的面试经验吧(个人感觉面试过程最舒服的),我复盘后的内容以及整理成了一份文档,可以分享给有需要的朋友,里面有一些面试题的复盘分析,面试前的准备(主要是简历的包装),其他的优质面经分享等等干货知识需要的朋友直接私信我“面试”获取吧!(点击这里直接下载!

先说阿里,看看到底问了什么?

先说一个问题,阿里有些部门对于学历的限制没那么死了,也是有大专生的,前提当然是你的技术足够出色!

阿里一面

  • 先自我介绍,包含日常工作
  • 问了父子线程怎么共享数据 interitableThreadLocals
  • lock和sync区别
  • HashMap1.7、1.8区别
  • AQS原理(执行过程源码,入队出队的细节,源码细节)
  • CountDownLatch和CyclicBarrier的区别是什么源码级别
  • volatile从指令重排序,内存屏障,聊到总线风暴
  • mysql索引:聚集索引、非聚集索引、索引结构,顺带会问各种树的特性
  • 举例优化sql
  • MVCC和事务隔离级别的关系
  • 间隙锁、行锁、乐观锁悲观锁等
  • 唯一索引和普通索引的区别
  • 聊到了changeBuffer、页分裂合页合并
  • 可达性分析算法中根节点有哪些
  • cms和G1区别
  • 怎样GC调优
  • 怎样排查CPU彪高、内存彪高
  • redis数据结构、跳跃表
  • redis qps能上多少,怎么知道的
  • sentinel和cluster区别和各自适用场景
  • redis cluster集群同步过程
  • redis单线程为什么快
  • 多大叫大key、热key产生原因和后果以及怎么解决
  • 本地缓存需要高时效性怎么办
  • spring的作用;
  • spring循环依赖怎么解决(说出三级缓存源码细节);
  • spring aop原理(动态代理)、
  • spring bean生命周期(源码细节,以及各个位置的设计思路,有什么可扩展的)
  • dubbo服务暴露和引用过程,负载均衡策略,容错机制在哪里实现的源码
  • 项目中碰到的问题。

第二轮

笔试两道题,第一题写代码,第二题写技术方案,以查询为主,考察锁粒度、时间粒度上的细节点。

第三轮

  • 自我介绍、项目介绍
  • 说到缓存穿透,让我设计一个防止缓存穿透的解决方案,简单的就是存null值,但肯定会深究,可以结合布隆过滤器,设计分布式系统,里面又会问到流量分发到具体过滤器服务的方式,比如一致性hash算法,怎么调用?比如dubbo直连、等等细节会边说边问
  • 有没有做限流,设计一个侵入性最小的限流服务。
  • 项目中碰到的问题,最好说框架本身问题,能提现个人能力,也避免问题太低级被面试官看low,刚好之前有发现一个dubbo的bug,所以这问题应该回答的还可以。
  • 介绍最熟悉的项目,业务上有没有什么优化点;和同行业其他公司的差距和优势
  • dubbo服务调用过程
  • NIO、BIO区别,NIO解决了什么问题,Netty线程模型(源码拷问)。
  • MQ相关

第四轮

  • 项目介绍
  • 听到说做了限流,限流标准(并发数? qps?并发数和qps关系?说出了5种限流方案和对应算法原理)
  • dubbo调用端怎么在jvm中生成对应服务?dubbo服务端和调用端超时时间设置和区别、dubbo长连接。
  • mysql行锁最大并发数?(秒杀项目指出)
  • 设计秒杀系统,我说的异步的方式,会问怎么优化?改为了同步的方式,异步和同步区别?
  • 碰到哪些技术难点?怎么解决?有没有参考其他大厂?其他大厂方案什么样的?有没有关注阿里这边最新的技术?
  • 刚刚的秒杀系统,会涉及到多个库表的更新,分布式事务怎么解决,我说的消息最终一致性,异步?有没有更好的方案?同步TCC方式,TCC方式原理?(三个阶段的具体实现)

字节面试过程

一面(闲聊吹逼,放松方式)

  • 自我介绍
  • 你好像用到了MQ,主流MQ有哪些?
  • 为什么选RMQ?
  • RMQ的主要有哪些组成部分?
  • 讲讲消费模式和刷盘策略吧

基础知识问答

  • Java泛型机制了解吗?
  • 在哪用到了?
  • 集合类源码看过吗?
  • 介绍一下String三个类的区别吧,源码看了吗?
  • 哪个线程安全?怎么实现的?
  • String拼接是咋做到的?
  • 反射了解吗?
  • Spring里哪用到了反射(答动态代理)
  • 静态代理和动态代理的区别?JDK代理的条件?
  • 上面你说看了一些源码,我们聊聊HashMap吧
  • HashMap线程安全吗?
  • 为啥不安全?(我开玩笑回了一个,因为他没锁门,面试官一听也笑了笑,主要是看气氛太紧张了)
  • 怎么实现线程安全?(集合类方法/concurrentHashMap)
  • HashMap内部是咋实现的?(数组+红黑树/链表)
  • 扩容了解吗?为啥因子是0.75不是别的?JavaDoc有看吗?(这个记不太清楚了,印象里是javadoc里有写,是服从一个lambda为0.75的泊松分布)
  • 扩容之后的数据落在哪?为啥容量一定是2的倍数?为啥引入红黑树?红黑树要啥参数?并发的时候咋处理的?

算法:

(1)# 给定一些数组,例如下面的格式,他们都表示一个区间,然后你需要将区间进行合并
[1,2],[2,4],[3,7],[8,11]
# 如上所示, [1,2] 和 [2,4] = [1,4]
# 然后 [1,4] 和 [3,7] = [1,7]
# 最后 [1,7] 和 [8,11] 无法合并,所以最后结果应该返回 [1,7],[8,11]
(2)# 给定一个数组,例如 [1,1,2,2,2,3,3,3,3]这样的,里面的数组不一定连续并且有序,假设我输入 2,这个2表示出现次数最高的两个
# 那么你需要给我返回 2,3

第二轮

  • 自我介绍
  • 博客已经开源了么,用的什么开源协议,博客的用户多么?
  • 对于Solr或者ES里面用到的一些中文分词器有了解过么?
  • 谈谈那些技术栈,你比较熟悉的是那些,mysql 和redis?
  • 聊聊MySQL的底层索引结构,InnoDB里面的B+Tree?
  • B Tree 和 B+ Tree的区别
  • 聊聊MySQL索引的发展过程?是一来就是B+Tree的么?从 没有索引、hash、二叉排序树、AVL树、B树、B+树 聊。
  • 谈谈MySQL里面的事务,说说什么是事务?
  • MySQL里面有哪些事务级别,并且不同的事务级别会出现什么问题?
  • 谈谈可重复读和幻读的区别?
  • MySQL中如果使用like进行模糊匹配的时候,是否会使用索引?一定不会用么?
  • 谈谈Redis吧,在你项目中的具体使用?
  • 谈谈Redis如何实现分布式锁?
  • 谈谈Redis中缓存穿透的问题,以及解决的方法?
  • 还有其它解决缓存穿透的方法么?布隆过滤器有了解过么?
  • Redis中大面积的缓存失效,然后请求全部打到数据库,有什么解决方法?
  • 如果出现一些热点数据,比如明星之间的新闻,造成大量的吃瓜用户涌入后台,但是服务器还没有缓存对应的数据,这样可能造成数据库宕机,如何避免这样的情况?
  • 聊聊 JVM的组成结构?
  • 谈谈垃圾收集原理?以及垃圾收集算法
  • 复制算法 和 标记整理算法?
  • 为什么不在新生代使用标记整理算法?或者在老年代使用复制算法?
  • 有了解过Volatile么?谈谈你对Volatile的理解
  • Volatile如何保证可见性的?以及如何实现可见性的机制。
  • 如果大量的使用Volatile存在什么问题?
  • 谈谈操作系统的线程,以及它的状态
  • 线程和进程的区别?
  • 为什么提出多线程应用,而不是多进程应用呢?
  • Linux你平时都有用到什么命令呢?
  • 如果我需要查看端口号或者进程号,你会使用什么命令?
  • 谈谈你做的另外一个项目吧?稍微介绍一下
  • 来吧,写个题目试试
# 链表的两两翻转 # 给定链表: 1->2->3->4->5->6->7 # 返回结果: 2->1->4->3->6->5->7

第三轮

  • 说一下Java垃圾回收机制
  • 64匹马,8个赛道,找最快的4匹马。
  • 64匹马,8个赛道,找最快的8匹马。
  • 给出两个升序数组A、B和长度m、n,求第k个大的数
  • 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
  • 讲一下多线程与多进程区别
  • JVM中什么时候会进行垃圾回收?什么样的对象是可以回收的?
  • Spring主要思想是什么?
  • 你未来的发展方向是什么?确定了么?打算一直做Java?有考虑过转吗?
  • 那你平时是怎么学习Java的呢?
  • 场景题目:设计一个短域名服务:短信存不了太长网站,需要弄成短域名,你该如何设计一个服务,可以为全国的网址服务。
  • TCP为什么是三次握手四次挥手?
  • 数据库的隔离级别
  • sql题,写了个连表查询外加模糊查询
  • 算法:镜像二叉树

后话

其实字节和阿里都面上了,我个人比较偏爱字节一点,因此选择了字节跳动,字节真的是很爱问算法了,据我了解,现在大厂面试对于算法这块在逐渐加强,因此我把我复盘后的这些文档笔记留给大家食用吧,希望大家在接下来的金九银十或者明年的金三银四都能拿到自己满意的offer,一起努力!(下载地址)

面试了字节、阿里等大厂,今年面试到底问什么?(Java岗)

近2000道面试真题总结:

面试了字节、阿里等大厂,今年面试到底问什么?(Java岗)

666页算法笔记:

面试了字节、阿里等大厂,今年面试到底问什么?(Java岗)

看完了别忘了点赞支持一下哦!感谢大家!

本文地址:https://blog.csdn.net/QAQFyl/article/details/107371125