携程校招Java面试题

229 阅读3分钟

一面:

  1. 项目里面设计的签名认证算法如何设计的

    sk(ak+params+nonce+timestamp)

  2. 讲讲实习中遇到的最困难事情,你怎么解决的?最后的结果是什么?

  3. 了解常见的IO模型,谈谈对AIO理解,有没有哪些框架是用过AIO的,有没有了解过它在操作系统级别poll和epoll的方法的区别

  4. 聊聊redis基本类型包括底层实现,一致性hash有了解吗Hash槽有了解吗

  5. Mybatis的一级缓存二级缓存了解吗

  6. 单表数据量特别大的情况下会有查询瓶颈问题怎么解决?分表有哪些方式

  7. 线上正在运行的系统的如何在不影响用户的情况下进行数据迁移

  8. 有没有处理过内存泄露的经历?ThreadLocal,怎么排查内存泄露的问题的

  9. JVM内存分区

  10. 设计题:设计一个多语言系统,页面展示的数据有多个语言版本,如何去存储?要保证B端方便的编辑各个语言的文本

  11. 为了上面这个系统的提高性能需要加缓存,缓存的方案

  12. 平时工作中你的想法和领导的想法有差异时怎么去解决这个问题?

二面:

  1. 对于设计模式怎么理解的?设计模式对于系统性能是有提升的还是有降低的?

  2. 静态内部类和成员内部类在实例化的时候的区别

  3. 怎么理解多线程?只有一个CPU核心使用多个线程就一定不能提高效率吗?

  4. 多线程利用不当会造成除了性能问题还有哪些问题?怎么解决线程安全问题?

  5. 乐观锁和悲观锁在使用上如何选择?

  6. 公平锁和非公平锁哪个性能好?

  7. 讲讲为什么要有分布式锁?分布式锁的设计

  8. 一个线上运行的积分系统,你需要把A用户的数据和合并到B用户,这个数据迁移到过程怎么加锁,怎么加锁才能避免死锁

  9. 介绍一下redis部署方式的发展从最简单到最复杂,每一种部署方式存在什么问题

  10. redis集群中进行数据分片的方式有哪些?

  11. mysql的Innodb怎么做持久化的?为什么要先把脏页放在缓冲池里面在磁盘写redolog,而不直接把脏页写入磁盘

  12. 一个未提交的事务Innodb能恢复吗

  13. 消息队列有了解过吗?我说rabbitmq用得比较多,面试官说:好,就没问题了

  14. 函数式接口

    class Test{
      Type ff = ()->1;
    }
    

    ()->1; 这个代码的含义是什么?

    Type可以使用什么类型?这个类型唯一吗?不唯一

    那你来实现一个这样的函数式接口(面试官用他的电脑给我写的)

  15. 一个多线程的问题,这段代码的输出是什么?为什么?

    class Test{
        public static void main(String[] args){
            new Thread(()->{
                try {
                    TimeUnit.SECONDS.sleep(1);
                    System.out.println(1);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }).start();
            System.out.println(2);
        }
    }