面试公司:上海申通物流公司
面试岗位:Java开发面经
面试问题:
1.说一下项目中用到的redis的场景。
2.redis为什么这么快?仅仅因为是读内存吗?
3.redis数据结构有哪些?
4.java8里jvm运行时数据区,堆中有哪些分代?用了什么垃圾回收算法?分代比例是多少?为什么是这个比例?
5.mysql如何调优的?说下执行计划列表中参数(任意两个)?sql慢的话一定是没有命中索引吗?如果现在有个查询慢仅仅是因为数据量大,你准备怎么优化?为什么?
6.索引的数据结构有哪些?各有什么区别?
7.讲下对aop的理解,底层原理是什么?jdk与cglib的区别在哪里?各有什么优势和差异?有没有一种情况是aop无法代理的?有没有碰到过@Transactional失效的情况?知道为什么会失效吗?(碰到但不知道,他解释是和代理失败有关)
8.说下你了解的数据结构有哪些?说下如何计算树的深度。
9.synchronized和lock区别在哪里?说下synchronized锁升级过程?
10.Lock如何做到公平锁和非公平锁?抢占式和非公平锁是一个概念吗?
11.说下项目里哪里用到多线程?用的线程池是什么?为什么用newFixedThreadPool?它有哪些弊端?线程池参数有哪些?阻塞队列用的什么?为什么用这个?有什么弊端?(无界队列会导致内存溢出)
12.平时如何学习的



