新鲜的字节跳动、美团、B 站、京东 Java 面经,程序员你眼馋了吗
2-1. redis 主要能解决什么问题,聊一下你所知道的?
2-2. 聊一下 redis 高可用的相关。主要说一下哨兵集群的流程,包括选举、以及宕机之后的处理方案,以及 cluster 集群的工作流程。
2-3. 聊一下 redis 哈希槽,为什么不用一致性哈希的方案?
2-4. redis 为什么这么快?
2-5. redis 跟 mq 的技术选型。
3.mysql 相关问题
3-1. mysql 的事务隔离级别。
3-2. 面试官描述了一个场景 #¥%……¥……%&*这种情况下你怎么优化 mysql,说说你优化的流程步骤。
3-3. 你能想到什么优化 mysql 吞吐量的方案。
3-4. mysql 的底层数据结构?索引怎么存储的?
4.rabbitmq
4-1. rabbitmq 的优势,能解决什么问题?
4-2. 说一下 rabbitmq 怎么保证高可用的?
4-3. 聊聊镜像队列,怎么运作的?口述下代码?
5. 并发编程相关
5-1 hashmap 跟 concurrentHashMap
6. 接近一个小时的计算机网络基础、操作系统基础
美团二面(70min)
正儿八经的面试了
1. 再来一个场景¥%……¥#%……&*&
%..优化 mysql,具体步骤,什么命令,怎么操作,比较详细。
2. redis 分布式锁的作用?什么场景用过?会有什么问题?(原子性的问题、误删锁、误得锁等等)怎么解决这些问题?(面试官提了几个场景,这块聊了半个多小时)
3. 详细聊了 rabbitmq 的工作流程。介绍下 rabbitmq 的组建,分别有什么类型,具体是怎么用的?口述代码。
4. redis 高可用。
5. 聊聊你了解的 RPC,dubbo 与 springcloud?(我因为没做过微服务项目,因此,问我,你觉得应该有什么功能,我从 springcloud 的角度回答的)
6. RPC 与 mq 技术选型,说下原因。
7. Spring 源码,我讲了事务的源码(撸了好几次了,比较熟悉)。
8. 手撸算法题两道。
9. 聊实习时间、地点,未来发展。
美团三面(50min)
HR(直接给录用函)谈笑风生....聊薪资,工作地点,还有一些要录入系统的基本信息,留了电话。
小结:美团的问题单个都不难,主要是在一个 tomcat 优化的场景下要把东西联系起来。
公司:bilibili
地点:上海
工作经验:0 年
岗位:主要负责【数据分流】
面试次数:3 次
面试内容:
Bilibili 一面
1.问项目情况。
Bilibili 二面
1.JVM:gc 很关键,基本上只要问到 jvm,必问 gc。
答题过程:
说明垃圾处理器,说明垃圾处理器使用到的算法并说明什么时候对象被 gc(计数器法(缺点)和可达性分析),叙述对象的分派过程,何时进入老年代,空间担保机制。双亲委派模型偶尔会问到,类加载过程一定要熟记于心。
叙述类加载过程,叙述双亲委派模型原理,并说到如果不使用双亲委派模型 java 连最基础的稳定都保证不了。
2.Jvm 的内部结构?
**答题过程:**叙述出每个块的名字以及作用。
3.多线程:线程池会问到构造方法的参数,好处以及坏处。
内置锁和显示锁的使用场景 。
Cas 原理和缺点解决的方法,以及原子类的说明。
Aqs,叙述数据结构,设计模式,模板方法和可重写方法,内部类状态的变化以及节点的成员变量,说到这一定要说明 condition 和 aqs 的配合使用。
ConcurrentHashmap1.7-1.8 基本都会问到的,数据结构,get,put,扩容以及初始化,size,什么时候会扩容,解决 hash 冲突的办法以及 1.8 红黑树到链表的互相转换。(有的公司会问到 arraylist 和 linkedlist 如果两个线程去执行写操作会发生什么,我只说明了会引发线程安全的问题,这个时候就可以说说 hashmap 两个线程去扩容之后去 get 一个不存在的数据时会产生环形链表缓解一下尴尬。)
双重检测引发的问题(临界区重排序带来的)。
多线程远不止这些。
4.mysql 的存储引擎 myisam 和 innodb 必问。
索引分别使用到的数据结构以及分类。
Sql 语句的优化十条一定要记住,并说明原因。
事务的性质 ACID 以及隔离的级别并分别说明,引发的脏读不可重复读幻读分别在哪个隔离级别上会发生。
5.算法:快速匹配字符串(暴力匹配和 KMP 算法)。
其实还有其他的算法,我最后问问题的时候问了面试官,怎么找到两个链表的公共节点?怎么找到链表的环。
6.设计模式会问到单例模式,代理模式,工厂模式。
你看过哪些源码,有用到什么设计模式?
7.网络:osi 七层模型
Tcp 三次握手,四次挥手状态的变化(状态没记住呜呜)
Tcp 为什么是可靠传输协议(确认机制和超时重发)
Bilibili 三面
与 HR 阿姨嘘寒问暖。
小结:面试的时候一定要放轻松,会的问题不仅要答出来,还要让面试官跟着你的思路走,比如内置锁和显示锁的使用场景,我就成功地将面试官引到了 aqs。
公司:京东数科
地点:北京
工作经验:4 年
岗位:京东数科中台-主要负责业务是短信和 push 推送
面试次数:3 次
面试内容:
京东数科一面
1.Java 基础,接口,反射,数据结构,设计模式,实际处理问题的过程(这个会根据你说的方向深入一些继续问)
2.spring 的注解及讲解 aop,微服务用的什么,怎么选择的,消息队列,写代码后给出意见等。
京东数科二面
讲讲以前做的业务,问一些逻辑思考题,还有为什么来这,优势是什么,以后的规划,团队和个人不同意如何处理等。
京东数科三面
HR 直面,整体问下以前公司的情况等问题。
小结:要熟悉基础,最好能把简历上的都特别熟练,会围绕简历问,中间会深入一个点问,不会了会换个方向,代码也要熟悉,中间会有看代码和写代码。
公司:字节跳动
地点:北京
工作经验:3 年
岗位:大数据事业部服务端- 开发服务接 商业对接接口,还有各种 kafka 的消息推送
面试次数:3 次
面试内容:
字节跳动一面
机试(java 基础,算法,数据结构)。
字节跳动二面
主流框架理解,原理,数据库架构,设计模式应用,网络基础知识,分布式问题分析,并发编程,锁知识,JVM 优化。
字节跳动三面
1.拓展知识,项目中常见问题的解决。如,如何保证 redis 和 mysql 数据一致。如何解决缓存击穿问题。如何实现并发限流,JVM 锁和分布式锁的区别。
2.给一个业务场景,如何架构组件和数据库。1 到 1000 个数,如何按顺序存储。(二叉树问题)
小结:掌握 Java 基础和算法基本就成功了一半,更多场景化操作可以加分又加薪。
评论