京东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的三次握手和四次挥手

上一篇:Java 基础(使用Callable接口新增线程)


下一篇:runnable 和 callable的区别