京东Java后端开发面经
一面:
首先是自我介绍
Java基础知识
1. java中的堆栈的区别?
2. 垃圾回收常见的几种算法?
3. GMS垃圾回收器?
4. G1垃圾回收器?他有老年代和新生代的区别吗?
5. Java多线程-创建线程的方式
6. 停止一个线程有哪些方式呢?
7. Java常见的组件?消息队列,管道,缓存等
8. Java的跨平台性是怎么体现的?
数据库
1. 乐观锁和悲观锁的区别?
计算机网络
1. TCP三次握手
大数据
1. Hadoop中MR的流程
2. MapReduce之什么特点导致其在大数据中效率较高,流程上有什么优点?MR相比于Oracle在数据搬运上的特点,为什么MR可以减少数据搬运,在M这个阶段怎么可以减少这个搬运呢?
3. MapReduce设计理念
4. 总结Hadoop, Hive, Spark各自有什么特点?
5. Kafka是什么?
6. Kafka的partition是用来做什么的?
7. Kafka怎么保证数据不重重复消费的呢?多个组之间是怎么防止重复消费的?
二面:
Java基础
1. Java中怎么创建一个线程
2.Runnable和Callable的区别
3.Callable获取到返回值的原理
4.Callable的get操作在做什么动作?get操作是在主线程中,而另一线程的结果在其他线程中,其结果是怎么被get获取到的呢?
5.Java中线程的状态,状态之间是如何转换的?
6.等待状态与阻塞状态有什么区别?
7.一个线程在执行过程怎么中断这个线程,interrupt具体中断的流程
8.Java代码为什么可以跨平台运行
数据库
9.数据库为什么要采用索引
10.索引采用的是什么数据结构实现的?
11.索引用了B+树之后一般高度是多少层?
12.用B+树来存储索引的话,通常来说1-2T的数据用B+树来存储,树的高度一般是多少
13.Hash表有哪些解决冲突的办法
算法
14.怎么判断单向链表中是否有环
操作系统
15.什么是系统调用
16.用户态和内核态的区别
17.计算机中二进制表示方法中,有了原码之后,为什么有反码和补码
18.操作系统中进程中通信方式
计算机网络
19.TCP的三次握手和四次挥手