京东正式批面经
二面(9.3,47min)
- 自我介绍
- ==和euqals区别?
- hashCode方法介绍,什么用处?
- 重写equals为什么也要重写hashcode?
- 用到了hashcode方法的集合类有哪些?
- concurrenthashmap的线程安全怎么实现的?
- 算法口述:实现能够获取最大值的栈
- 口述:双线程打印1-100
- 原子类了解吗?ABA问题怎么解决?
- 内存泄漏和内存溢出的区别?
- gc的算法有哪些?(复制、标记清除、标记整理)
- 他们的优缺点?
- 年轻代应该用什么算法?
- netty的模型?(IO多路复用、reactor)
- http长连接还是短连接?(1.1之后默认长连接,1.0之前keep-alive长连接,默认短连接)
- reids实现一个延时消息队列怎么实现?(经面试官引导,用zset)
- mysql Innodb的索引结构?
- 为什么用B+树?
- 项目里面是怎么使用mq的?
- 谈谈对微服务治理的理解?
- 项目里面注册中心和配置中心用的什么?(nacos)
- 反问
一面(8.26,24min)
- 自我介绍
- 实习期间经历介绍
- 多线程交替打印0-100怎么实现?几种不同的实现能说几种说几种(synchronized、lock、semaphare、原子类)
- 刚才提到lock,其他的同步工具有没有接触,介绍一下(juc的组件)
- 这些工具底层的结构是什么?(这一题没反应过来,以为问的是底层的信号量用的什么数据类型,答了个int...最后反问的时候面试官说其实问的是AQS)
- 需要怎么实现这种线程间同步的过程?(实际上已经是明显的问AQS了,当时没反应过来,但是也说了需要一个信号量和一个阻塞队列组合实现)
- ThreadLocal了解吗?讲讲内存泄漏的问题是怎么产生的,怎么解决?(ThreadLocal map的key的弱引用,清理null值的key)
- 线程池的原理讲一下?(八股:参数及作用、执行的过程)
- ArrayList和LinkedList的区别?(底层结构、随机访问、查找插入删除性能、扩容方式)
- List和Set的区别?(集合去重,底层map;列表无去重)
- 分布式锁了解吗?说说分布式锁怎么实现?(加锁set,解锁lua)
- 分布式锁解锁为什么要用lua脚本?
- 分布式锁在主从架构下有问题吗?(有,主机宕机,从机没来得及复制锁信息,升级为主机后将导致锁失去互斥性,解决可参考redisson的分布式锁实现)
- 反问1:部门业务(说是和zf合作的相关业务,具体是啥没听清楚,技术栈主要是java相关的,还有些大数据的组件,hadoop,,yarn这些)
- 反问2:面试表现(锁那块说的有点粗糙,其他的还好)