Welcome everyone

玩吧电话初试

面试 汪明鑫 899浏览 0评论

由于疫情严重现在都是远程面试,初试过了但说是后面还要现场面下。。。噗

玩吧据说福利还是很不错的,管早午饭,8点免费打车,周三是小周末可以6点下班

一共面了40多分钟,感觉还是挺有难度的

 

  • 自我介绍

介绍了实习相关和工作相关

  • 为什么看机会
  • 线程池参数
public class ThreadPoolConfig {

    /**
     * 机器内核数
     */
    private final static int AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors() * 2;

    /**
     * 线程池创建
     */
    private static ExecutorService THREADPOOL = new ThreadPoolExecutor(AVAILABLE_PROCESSORS, 50,
        0L, TimeUnit.MILLISECONDS,
        new LinkedBlockingQueue<Runnable>(1024), new ThreadFactoryBuilder()
        .setNameFormat("call-thread-pool-%d").build(), new ThreadPoolExecutor.AbortPolicy());

    private ThreadPoolConfig() { }

    /**
     * 获取定长线程池
     *
     * @return
     */
    public static ExecutorService getThreadPool() {
        return THREADPOOL;
    }
}

 

队列一般用有界队列,不然可能撑爆内存

 

一家餐厅
corePoolSize 可以理解成一般情况下餐厅招5个厨师,核心成员就5个,就可以完成对餐厅客人的供给

maximumPoolSize 当节假日,餐厅生意比较好,5个已经忙不过来了,就再招3个达到8个,考虑到成本的最大数量,当生意又恢复到平时,另外3个临时工再干掉

  • 为什么阿里规范不让用executors
  • 线程池空闲的线程怎么回收,怎么判断线程空闲
keepAliveTime when the number of threads is greater than
*        the core, this is the maximum time that excess idle threads
*        will wait for new tasks before terminating.
  • HashMap扩容过程

double size 扩容

扩容因子 0.75 触发扩容

 

  • HashMap size 16 扩 32 目的是什么 ?

比如到12触发扩容到32,但就算用到14,也还有10几个位置没用,为什么一定要扩到32

我回答的是  16 二进制是 1111  ,32 二进制是 11111

这样key的hash值和1111/11111与和时,不会让桶的大小影响映射的位置

面试官问还有呢?

突然想到之前看过一篇文章说是,扩容后需要rehash,rehash后的结点要么在原位置,要么在原位置 + 16

 

  • 现在的cpu 求模和求与和效率上没什么差吧,那为什么源码用求与和,基于什么考虑

瞎球说的。。。

 

  • HashMap链表、红黑树相关

链表法,在阀值下链表 -> 红黑树 , 红黑树 -> 链表

红黑树效率更高

 

  • linux公司平时用什么

查日志  cat / tail 。。。

  • shell 脚本替换文本中的内容

shell学过,没实践经验

  • jstack 怎么用
  • jstack线程状态有哪些
  • mysql执行计划

explian

  • 一个sql语句,where 后面有好几个查询条件,用执行计划得到的count 扫描行数是什么

我回答是最优计划扫描B+树的行数 ,答的不好

 

 rows: MySQL估算的为了找到所需行而要检索的行数,作为优化器选择key的参考

 

  • redis好在哪里

基于内存  单进程  多路复用   过期策略(优化版LRU)

 

  • redis bgsave fork子进程后,还接收新的写请求嘛,会不会产生脏数据,redis怎么处理的

接收写请求,子进程不影响主进程

对rdb文件的影响答的不好

 

  • 公司 redis 集群怎么样的
  • tcp  udp
  • 冒泡排序
  • 比较zab协议和raft协议

zab协议和raft协议都是基于拜占庭协议

zab协议是对zookeeper基于raft协议的改进版

zab协议包括消息广播,崩溃恢复

 

  • 用户登陆后延迟一段时间发红包怎么做(新用户延时短,老用户延时长)

我说是通过mq 没到 延迟时间一直自消费,到时间再调发红包服务

面试官说我想复杂了,就用jdk的延迟队列即可

 

 

没有问Spring 和 Spring Boot 还有点不大习惯

 

转载请注明:汪明鑫的个人博客 » 玩吧电话初试

喜欢 (3)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz