zoukankan      html  css  js  c++  java
  • 记美团一面,凉凉~

    1. 自我介绍

    2. Oauth2原理

    3. Redis数据结构

    常见五种数据结构:字符串、哈希、列表、集合、有序集合

    4. Redis集群模式及区别

    5. 消息队列如何保证数据不丢失

    6. 集合

    常用的集合有ArrayList、LinkedList、HashSet、HashMap、LinkedHashMap

    7. ArrayList与LinkedList区别

    8. ArrayList如何扩容

    9. 如何使用线程安全的集合

    1.使用线程安全的集合类:ConcurrentHashMap、CopyOnWriteArrayList
    2.使用静态方法创建集合 java.util.Collections#synchronizedMap

    10. 分布式锁

    11. 分布式锁设置了过期时间,锁的方法执行执行很长会出现什么问题

    12. JVM分为几大区域

    13. JVM垃圾回收器区别

    14. 垃圾回收算法

    15. Kafka原理

    16. Kafka生产者组与消费者组

    17. 线程池各个属性的含义

    首先来看线程池的通用构造函数

    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue,
                                  ThreadFactory threadFactory,
                                  RejectedExecutionHandler handler) {
            if (corePoolSize < 0 ||
                maximumPoolSize <= 0 ||
                maximumPoolSize < corePoolSize ||
                keepAliveTime < 0)
                throw new IllegalArgumentException();
            if (workQueue == null || threadFactory == null || handler == null)
                throw new NullPointerException();
            this.acc = System.getSecurityManager() == null ?
                    null :
                    AccessController.getContext();
            this.corePoolSize = corePoolSize;
            this.maximumPoolSize = maximumPoolSize;
            this.workQueue = workQueue;
            this.keepAliveTime = unit.toNanos(keepAliveTime);
            this.threadFactory = threadFactory;
            this.handler = handler;
        }
    

    可以看出,构造一个线程池需要以下7个参数:
    1.corePoolSize :核心线程数。可以看作稳定的工作线程数量,当阻塞队列还未满载时,线程池将保持核心线程数。
    2.maximumPoolSize :最大线程数。可以看作弹性的工作线程数量,当阻塞队列满载时,线程池将在核心线程数的基础上创建新线程来处理任务,直到最大线程数。
    3.keepAliveTime :工作线程空闲时则保持存活的时间。
    4.unit:keepAliveTime 参数的时间单位
    5.workQueue:BlockingQueue类型接口,用来存储积压任务的阻塞队列。
    6.threadFactory:线程工厂,用户可以自定义创建线程的工厂。
    7.handler:拒绝策略,当workQueue满载时将会触发。

    18. 请求伪造(CSRF)

    19. RPC有没有使用过

    20. Redis缓存穿透和缓存击穿的区别

    缓存穿透

    缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。
    解决方案:
    1.验证拦截
    2.缓存空数据
    3.使用布隆过滤器

    21.做一道算法题

  • 相关阅读:
    Flume-NG源码分析-整体结构及配置载入分析
    Flume之核心架构深入解析
    使用maven构建scala项目
    大数据的一些面试题
    HBase原理和设计
    Hive UDAF开发详解
    Hive UDTF开发指南
    Hive UDF开发指南
    局域网访问电脑中VMware虚拟机
    百度面试-前端
  • 原文地址:https://www.cnblogs.com/ixan/p/14878684.html
Copyright © 2011-2022 走看看