前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >京东二面挑战系列:揭秘高级面试内幕,如何在京东二面脱颖而出,职场高手教你如何斩获成功!

京东二面挑战系列:揭秘高级面试内幕,如何在京东二面脱颖而出,职场高手教你如何斩获成功!

作者头像
@派大星
发布2023-12-26 12:16:01
1880
发布2023-12-26 12:16:01
举报
文章被收录于专栏:码上遇见你码上遇见你

说说类加载器双亲委派模型JVM中存在三个默认的类加载器

  1. BootstrapClassLoader
  2. ExtClassLoader
  3. AppClassLoader

AppClassLoader的父加载器是ExtClassLoader,ExtClassLoader的父加载器是BootstrapClassLoader。

JVM在加载一个类时,会调用AppClassLoader的loadClass方法来加载这个类,不过在这个方法中,会先使用ExtClassLoader的loadClass方法来加载类,同样ExtClassLoader的loadClass方法中会先使用BootstrapClassLoader来加载类,如果BootstrapClassLoader加载到了就直接成功,如果BootstrapClassLoader没有加载到,那么ExtClassLoader就会自己尝试加载该类,如果没有加载到,那么则会由AppClassLoader来加载这个类。

所以,双亲委派指得是,JVM在加载类时,会委派给Ext和Bootstrap进行加载,如果没加载到才由自己进行加载。

泛型中extends和super的区别

  1. <?extendsT>表示包括T在内的任何T的子类
  2. <?superT>表示包括T在内的任何T的父类

并发编程三要素?

  1. 原子性:不可分割的操作,多个步骤要保证同时成功或同时失败
  2. 有序性:程序执行的顺序和代码的顺序保持一致
  3. 可用性:一个线程对共享变量的修改,另一个线程能立马看到

简述CAP理论

CAP理论是分布式领域非常重要的一个理论,很多分布式中间件在实现时都需要遵守这个理论,其中:

  1. C表示一致性:指的的是分布式系统中的数据的一致性
  2. A表示可用性:表示分布式系统是否正常可用
  3. P表示分区容器性:表示分布式系统出现网络问题时的容错性

CAP理论是指,在分布式系统中不能同时保证C和A,也就是说在分布式系统中要么保证CP,要么保证AP,也就是一致性和可用性只能取其一,如果想要数据的一致性,那么就需要损失系统的可用性,如果需要系统高可用,那么就要损失系统的数据一致性,特指强一致性。CAP理论太过严格,在实际生产环境中更多的是使用BASE理论,BASE理论是指分布式系统不需要保证数据的强一致,只要做到最终一致,也不需要保证一直可用,保证基本可用即可。

图的深度遍历和广度遍历

  1. 图的深度优先遍历是指,从一个节点出发,一直沿着边向下深入去找节点,如果找不到了则返回上一层 找其他节点
  2. 图的广度优先遍历只是,从一个节点出发,向下先把第一层的节点遍历完,再去遍历第二层的节点,直 到遍历到最后一层

聊一聊快排算法

快速排序算法底层采用了分治法。

基本思想是:

  1. 先取出数列中的第一个数作为基准数
  2. 将数列中比基准数大的数全部放在它的右边,比基准数小的数全部放在它的左边
  3. 然后在对左右两部分重复第二步,直到各区间只有一个数
  • Java版代码实现
代码语言:javascript
复制
 public class QuickSort {
        public static void quickSort(int[] arr, int low, int high) {
            int i, j, temp, t;
            if (low > high) {
                return;
            }
            i = low;
            j = high;
        //temp就是基准位
            temp = arr[low];

            while (i < j) {
                //先看右边,依次往左递减
                while (temp <= arr[j] && i < j) {


                    j--;
                }
                //再看左边,依次往右递增
                while (temp >= arr[i] && i < j) {
                    i++;
                }
                //如果满足条件则交换
                if (i < j) {
                    t = arr[j];
                    arr[j] = arr[i];
                    arr[i] = t;
                }

            }
            //最后将基准为与i和j相等位置的数字交换
            arr[low] = arr[i];
            arr[i] = temp;
            //递归调用左半数组
            quickSort(arr, low, j - 1);
            //递归调用右半数组
            quickSort(arr, j + 1, high);
        }


        public static void main(String[] args) {
            int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19};
            quickSort(arr, 0, arr.length - 1);
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }

TCP的三次握手和四次挥手

TCP协议是7层网络协议中的传输层协议,负责数据的可靠传输。

在建立TCP连接时,需要通过三次握手来建立,过程是:

  1. 客户端向服务端发送一个SYN
  2. 服务端接收到SYN后,给客户端发送一个SYN_ACK
  3. 客户端接收到SYN_ACK后,再给服务端发送一个ACK

在断开TCP连接时,需要通过四次挥手来断开,过程是:

  1. 客户端向服务端发送FIN
  2. 服务端接收FIN后,向客户端发送ACK,表示我接收到了断开连接的请求,客户端你可以不发数据了,不过服务端这边可能还有数据正在处理
  3. 服务端处理完所有数据后,向客户端发送FIN,表示服务端现在可以断开连接
  4. 客户端收到服务端的FIN,向服务端发送ACK,表示客户端也会断开连接了

消息队列如何保证消息可靠传输

消息可靠传输代表了两层意思,既不能多也不能少。

  1. 为了保证消息不多,也就是消息不能重复,也就是生产者不能重复生产消息,或者消费者不能重复消费消息
    1. 首先要确保消息不多发,这个不常出现,也比较难控制,因为如果出现了多发,很大的原因是生产者自己的原因,如果要避免出现问题,就需要在消费端做控制
    2. 要避免不重复消费,最保险的机制就是消费者实现幂等性,保证就算重复消费,也不会有问题,通过幂等性,也能解决生产者重复发送消息的问题
  2. 消息不能少,意思就是消息不能丢失,生产者发送的消息,消费者一定要能消费到,对于这个问题,就要考虑两个方面
    1. 生产者发送消息时,要确认broker确实收到并持久化了这条消息,比如RabbitMQ的confirm机制,Kafka的ack机制都可以保证生产者能正确的将消息发送给broker
    2. broker要等待消费者真正确认消费到了消息时才删除掉消息,这里通常就是消费端ack机制,消费者接收到一条消息后,如果确认没问题了,就可以给broker发送一个ack,broker接收到ack后才会删除消息

发散性思考题

画出项目架构图,介绍自己所处的模块

这里就需要大家在平时的工作中积极的去了解项目架构了。

好了本章到此结束,希望对你有所帮助,注学习顺利


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码上遇见你 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说说类加载器双亲委派模型JVM中存在三个默认的类加载器
  • 泛型中extends和super的区别
  • 并发编程三要素?
  • 简述CAP理论
  • 图的深度遍历和广度遍历
  • 聊一聊快排算法
  • TCP的三次握手和四次挥手
  • 消息队列如何保证消息可靠传输
  • 发散性思考题
    • 画出项目架构图,介绍自己所处的模块
    相关产品与服务
    消息队列 CMQ
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档