美团优选Java一面面经
- 线程池介绍一下
- 核心线程数是5,最大是10,存活时间是10秒,队列长度是100;同时有1000个任务并发,线程池数量是怎么变化的。如果其中有一个线程发生异常,会发生什么情况?这个线程不是异常了吗 然后现在线程数少了一个 那要怎么设计,把它再加进去呢?
- synchronized和volatile的区别
- Java中哪些类用到了synchronized
- 知道ConcurrentHashMap吗,这里边用到了synchronized了吗
- 可以简单说一下CAS吗
- 用到CAS的有哪些类吗
- 可以简单写出来CAS的代码吗(看过,忘了😓😓😓😓😓😓😓),说下思路
- 对Java的集合哪些比较了解?说了ArrayList的简单源码,说的有点混乱。说一下HashMap什么时候转换为二叉树、知道链表长度大于8的概率是多少吗、说一下put流程、比如你已经知道hash值和数组长度,怎么知道应该在哪个数组位置、hashmap的扩容原理、扩容过程(没说好😓😓😓,脑子突然就空白了😶)
- 写一个单例
- 介绍一下spring、IOC和AOP的具体应用
- Redis怎么用的(项目中)、zset和set区别、Redis的命令了解吗、哨兵模式和其他模式的区别、RDB和AOF的区别、Redis的淘汰策略
- 说一下MySQL、有哪些索引、最左前缀原则(重点掌握)、为啥设计成最左前缀(b+树,是从左边找的)、sql的执行效率怎么看、各个字段说一下
- 算法:
给一个字符类型的数组chas和一个整数size,请把大小为size的左半区整体右移到右半区,右半区整体移动到左边。