• 1 未解决
    0
    小米金融-面试-题目

    1.说一下你的项目架构

    按照自己实际做的具体说了一下。


    2.什么是MVCC? 其在两个事务中是如何关联的?

    多版本控制, 最后出现两个隐藏列,当前版本、最后版本。

    后一个问题,暂时不知道怎么回答。后续再补充。


    3.怎么微服务中保证一致性?

    TCC方式,分布式事务处理数据一致性。


    4.异常是怎么处理的?异常分类?

    不是特别明白其问题用意。

    说了一些线上的一些case异常的处理。


    5.MySQL、Mango db、ES 这些数据库什么区别,如何选择的?


    6.Gap锁是怎么命中的,如果是基于主键是如何命中的,如果是基于非主键是如果命中(如ID,name的表,select id, name from table1 where name = ‘xxx’).

    关于GAP锁的命中,具体可以参考:http://www.eiletxie.cn/2019/10/07/MySQL%E4%B8%ADGAP%EF%BC%88%E9%97%B4%E9%9A%99%EF%BC%89%E9%94%81%E7%9A%84%E6%8E%A2%E7%B4%A2/

  • 1 未解决
    0
    京东2b面试-广告业务

    一面:

    微服务部署的时候上下游可用性。

    链路追踪的原理,traceId的生成规则是什么?

    分表分库是怎么去hash的?

    怎么确保服务的高并发高可用高稳定性?

    如何做到数据一次性的?

    如何做到限流,降级?

    如何设计系统的,通过开闭原则,以后面向未知商城活动,设置系统自动扩展自定义的商城营销活动?

    如何确保线上系统,高并发、高可用、高性能的?


    二面:


    1.mybatis,hibernate的区别。

    mybatis是半自动化框架,需要自己写SQL,自己写POJO的mapper关系。

    hibernate是个全自动化框架,SQL自动生成,POJO是自动生成。Hibernate功能强大,数据库无关性好,O/R映射能力强。Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

    从互联网应用来看:

    1)MyBatis的开发和调优更加方便简单。mybatis的开发效率会胜出与hibernate。在互联网迭代较快的情况下,使用Mybatis能较快的定位到问题。

    2)从性能来看: Hibernate的查询会将表中的所有字段查询出来,这一定会消耗性能。MyBatis可以进行更为细致的SQL优化,可以减少查询字段。


    2.kafka比较快的原因是什么?


    3.slf4j,log4j的区别和关系。

    lombok为什么不再使用?

    voliate功能是什么? 具体实现的原理机制是啥?

    Redis里面的数据,是如何更新的?Mysql中的库存数据减少以后,什么时候去更新Redis?

    秒杀中如何减库存的?

    如何协助高级工程师去解决问题的。

    个人优点缺点是什么?

    个人规划是什么?

  • 1 未解决
    0
    【面试题】关于hashmap扩容以及安全问题

    题目描述

    刚刚面试被问到hashmap扩容及安全性问题


    题目来源及自己的思路

    面试题目


    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)


    你期待的结果是什么?实际看到的错误信息又是什么?

    大佬给出解释,谢谢

  • 1 未解决
    0
    一个线程面试题中代码遇到的问题

    三个人跑步,依次翻越障碍,必须3个人都翻阅一个时候,大家才能翻阅下一个。
    我代码基本实现,但是有个问题。

    import java.util.Random;

    public class ThreadNumber {
    //存有三个人跑的距离
    public static class Num {
    int m = 1;
    int j = 1;
    int g = 1;

    }
    
    /**
     * 线程交替标识,true跑完了
     */
    
    
    /**
     * 打印奇数的线程类
     */
    public static class Mming implements Runnable {
        Num num;
    //此段是否跑完
        boolean flagM = false;
    
        public Mming(Num num) {
            this.num = num;
        }
    
        @Override
        public void run() {
            while (num.m <= 3) {
                if ((!flagM)) {
                    System.out.println("m开始跑" + num.m + "个" + current());
    
                    int time = randomNum();
                    try {
                        Thread.sleep(time);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    System.out.println("Mming花了" + time + "跑完第" + num.m + "个" + current());
                    num.m++;
                    flagM = true;
    

    //检查另外两人是否跑完
    if (num.j >= num.m && num.g >= num.m) {
    flagM = false;
    }

                } else {
                    if (num.j >= num.m && num.g >= num.m) {
                        flagM = false;
                    }
                    System.out.println("!!!!!!!");
                }
            }
    
        }
    }
    
    /**
     * 打印偶数的线程类
     */
    public static class Jordan implements Runnable {
        Num num;
        boolean flagJ = false;
    
        public Jordan(Num num) {
            this.num = num;
        }
    
        @Override
        public void run() {
            while (num.j <= 3) {
    
                if ((!flagJ)) {
                    System.out.println("j开始跑" + num.j + "个" + current());
    
                    int time = randomNum();
                    try {
                        Thread.sleep(time);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    System.out.println("Jordan花了" + time + "跑完第" + num.j + "个" + current());
                    num.j++;
                    flagJ = true;
                    if (num.m >= num.j && num.g >= num.j) {
                        flagJ = false;
                    }
    
                } else {
                    if (num.m >= num.j && num.g >= num.j) {
                        flagJ = false;
                    }
                    System.out.println("!!!!!!!");
                }
    
            }
        }
    }
    
    public static class Guai implements Runnable {
        Num num;
        boolean flagG = false;
    
        public Guai(Num num) {
            this.num = num;
        }
        @Override
        public void run() {
            while (num.g <= 3) {
                if ((!flagG)) {
                    System.out.println("g开始跑" + num.g + "个" + current());
                    int time = randomNum();
                    try {
                        Thread.sleep(time);
    
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
    
                    System.out.println("Guai花了" + time + "跑完第" + num.g + "个" + current());
                    num.g++;
                    flagG = true;
                    if (num.m >= num.g && num.j >= num.g) {
                        flagG = false;
                    }
                } else {
                    if (num.m >= num.g && num.j >= num.g) {
                        flagG = false;
                    }
                    System.out.println("!!!!!!!");
                }
            }
    
        }
    }
    
    volatile static Num num = new Num();
    
    public static void main(String[] args) {
        new Thread(new Guai(num)).start();
        new Thread(new Mming(num)).start();
        new Thread(new Jordan(num)).start();
        
    }
    
    public static int randomNum() {
        Random rand = new Random();
    
        return rand.nextInt(1000) + 1000;
    }
    
    
    public static String current() {
    
        return Long.toString(System.currentTimeMillis());
    
    }
    

    }

    这段代码执行可以,但是如果把 System.out.println("!!!!!!!");删除。执行就会卡死。完全搞不明白为什么!!!!!!!求助

  • 1 未解决
    0
    一个面试并发的问题

    有这样一个场景:在service的方法上加上 @Transaction 后,
    再在方法里面的逻辑用Synchronized关键字修饰,在高并发下会出现什么情况?

  • 1 未解决
    0
    面试题:静态代理和动态代理的区别是啥?

    静态代理是啥?


    动态代理是啥?


    静态代理和动态代理的区别是啥?


    经典的应用有哪些?

  • 1 未解决
    0
    面试问题

    面试互联网企业,没有拿得出手的项目,kafka、dubbo并没有实际使用过,没接触过高并发,没参与过大型项目,被鄙视,怎么破,求大佬指点!!!

  • 1 未解决
    0
    算法设计面试题

    给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如:数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是4。要求:

    1)给出算法的基本设计思想。

    2)根据程序设计,采用C/C++/Java/Python中的一种语言描述算法,关键之处给出注释。

    3)说明你所设计算法的时间复杂度和空间复杂度。

  • 1 未解决
    0
    刚刚面试被问到hashmap扩容及安全性问题

    题目描述

    刚刚面试被问到hashmap扩容及安全性问题


    题目来源及自己的思路

    面试题目


    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)


    你期待的结果是什么?实际看到的错误信息又是什么?

    大佬给出解释,谢谢

  • 1 未解决
    0
    面试项目中遇到的哪些难题怎么解决

    面试项目中遇到的哪些难题怎么解决

  • 1 未解决
    0
    【面试题】前天面试被问到,GC算法

    面试官就仅仅说了一下让我叙述一下GC算法

    碰到这种的问题,应该怎么回答?之前也有问到说让我说说多线程

    没有代码

    像这种大而宽的问题,应该怎么去回答比较好?

  • 1 未解决
    0
    【面试题】关于自动拆箱和装箱的

    定义四个Integer变量,分别进行比较

    面试题笔试部分的一道题

    相关代码

    public static void main(String[] args) {

    Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;


        System.out.println(f1 == f2);

        System.out.println(f3 == f4);

    }

    }


    理论上说两个结果应该是一致的,要么都是true,要么都是false,但是结果为第一个为true,第二个为false,为什么?

  • 1 未解决
    0
    笔试面试题

    题目描述

    下列说法正确的是


    题目来源及自己的思路

    笔试面试题


    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)


    你期待的结果是什么?实际看到的错误信息又是什么?

    A. class中的constructor不可省略

    B. constructor必须与class同名,但方法不能与class同名

    C. constructor在一个对象被new时执行

    D.一个class只能定义一个constructor

  • 1 未解决
    0
    小米面试题

    手里有10张扑克牌,从现在开始,依次从上面拿一张放在桌上,然后再拿一张放在手中牌的最下面,循环往复,直到手里的牌全部到桌上,此时桌上的牌的顺序正好是1到10,写代码求出原来手中牌的初始顺序。### 题目描述


    题目来源及自己的思路

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)


    你期待的结果是什么?实际看到的错误信息又是什么?

  • 1 未解决
    0
    面试题提取作者名称和每章目录

    有一个压缩包,里面有多个txt文档(每个文档是一本小说),内容样式如下: attachments-2020-01-CvCKHtRH5e14443aef7bc.jpg

    怎么提取作者名称和每一章的目录

  • 1 未解决
    0
    一个线程面试题中代码遇到的问题

    三个人跑步,依次翻越障碍,必须3个人都翻阅一个时候,大家才能翻阅下一个。

    我代码基本实现,但是有个问题。


    import java.util.Random;


    public class ThreadNumber {

    //存有三个人跑的距离

    public static class Num {

    int m = 1;

    int j = 1;

    int g = 1;


    }


    /**

     * 线程交替标识,true跑完了

     */



    /**

     * 打印奇数的线程类

     */

    public static class Mming implements Runnable {

        Num num;

    //此段是否跑完

        boolean flagM = false;


        public Mming(Num num) {

            this.num = num;

        }


        @Override

        public void run() {

            while (num.m <= 3) {

                if ((!flagM)) {

                    System.out.println("m开始跑" + num.m + "个" + current());


                    int time = randomNum();

                    try {

                        Thread.sleep(time);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }


                    System.out.println("Mming花了" + time + "跑完第" + num.m + "个" + current());

                    num.m++;

                    flagM = true;

    //检查另外两人是否跑完

    if (num.j >= num.m && num.g >= num.m) {

    flagM = false;

    }


                } else {

                    if (num.j >= num.m && num.g >= num.m) {

                        flagM = false;

                    }

                    System.out.println("!!!!!!!");

                }

            }


        }

    }


    /**

     * 打印偶数的线程类

     */

    public static class Jordan implements Runnable {

        Num num;

        boolean flagJ = false;


        public Jordan(Num num) {

            this.num = num;

        }


        @Override

        public void run() {

            while (num.j <= 3) {


                if ((!flagJ)) {

                    System.out.println("j开始跑" + num.j + "个" + current());


                    int time = randomNum();

                    try {

                        Thread.sleep(time);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }


                    System.out.println("Jordan花了" + time + "跑完第" + num.j + "个" + current());

                    num.j++;

                    flagJ = true;

                    if (num.m >= num.j && num.g >= num.j) {

                        flagJ = false;

                    }


                } else {

                    if (num.m >= num.j && num.g >= num.j) {

                        flagJ = false;

                    }

                    System.out.println("!!!!!!!");

                }


            }

        }

    }


    public static class Guai implements Runnable {

        Num num;

        boolean flagG = false;


        public Guai(Num num) {

            this.num = num;

        }

        @Override

        public void run() {

            while (num.g <= 3) {

                if ((!flagG)) {

                    System.out.println("g开始跑" + num.g + "个" + current());

                    int time = randomNum();

                    try {

                        Thread.sleep(time);


                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }


                    System.out.println("Guai花了" + time + "跑完第" + num.g + "个" + current());

                    num.g++;

                    flagG = true;

                    if (num.m >= num.g && num.j >= num.g) {

                        flagG = false;

                    }

                } else {

                    if (num.m >= num.g && num.j >= num.g) {

                        flagG = false;

                    }

                    System.out.println("!!!!!!!");

                }

            }


        }

    }


    volatile static Num num = new Num();


    public static void main(String[] args) {

        new Thread(new Guai(num)).start();

        new Thread(new Mming(num)).start();

        new Thread(new Jordan(num)).start();

        

    }


    public static int randomNum() {

        Random rand = new Random();


        return rand.nextInt(1000) + 1000;

    }



    public static String current() {


        return Long.toString(System.currentTimeMillis());


    }

    }


    这段代码执行可以,但是如果把 System.out.println("!!!!!!!");删除。执行就会卡死。完全搞不明白为什么!!!!!!!求助

  • 1 已解决
    5
    JVM面试题3问

    JVM 对 Java 的原生锁做了哪些优化?

    为什么说 Synchronized 是非公平锁?

    什么是锁消除和锁粗化?

    有大佬能解释一下吗?

  • 1 未解决
    0
    某面试题 以下程序运行结果为

    题目描述

    以下程序运行结果为


    题目来源及自己的思路

    某面试题


    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)


    public class Test {

      public int aMethod() {

          static int i = 0;

          i++;

          return i;

      }

      public static void main (String args[]) {

          Test test = new Test();

          test.aMethod();

          int j = test.aMethod();

          System.out.println(j);

      }

    }

    你期待的结果是什么?实际看到的错误信息又是什么?

    A. 0

    B. 1

    C. 2

    D. 编译失败

    请给出结果并说明原因

  • 1 未解决
    0
    面试题:布隆过滤器

    什么是布隆过滤器,其实现原理是? False positive指的是?

  • 1 未解决
    0
    面试题:请描述一下 rest 和 rpc 的区别

    请描述一下 rest 和 rpc 的区别