1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 分享昨天的Java面试题答案(上)

分享昨天的Java面试题答案(上)

时间:2018-07-10 16:16:36

相关推荐

分享昨天的Java面试题答案(上)

昨天提到了被面试的一些Java面试题,今天就来整理一些这些面试题的答案。

介绍一下自己的工作经历以及介绍一下最近做的一个项目,你主要负责了什么工作经历的话简单介绍就好,控制在三分钟左右,这个就是个开场白,毕竟简历上都写了。介绍项目就因人因项目而异了,如果你做过的项目比较高大上,一五一十的说出来就好了;如果项目比较简单,那么你就要提前准备准备了,争取把项目中的一些亮点找出来,整理好思路,提前准备好怎么回答这个问题。对于你主要负责了什么,最好提一下在项目中负责的一些东西,最好是一些核心的东西。有没有做过MySQL调优,怎么做的这个题目的话,就会跟自己的一些经验有关了。大致分为两个方向,一个是MySQL服务器方向调优,包括通过监控MySQL服务器内存、CPU以及io等来进行调优,还有MySQL的一些配置调优,由于这方面本人确实没有涉及过,就不给大家细说了,大家可以去google一下学习学习。另一个方向就是sql方面的调优,包括分析慢查询日志,查看执行计划(explain),索引优化(主键索引、唯一索引、组合索引等),查询尽量select仅需要的字段(如果能覆盖索引最好)等。MySQL索引有哪些,什么情况下不走索引主键索引、唯一索引、普通索引、组合索引(涉及最左前缀原则)、全文索引。索引失效的情况主要有下面几种情况:1、查询条件包括or:如果or查询的左右字段只有一个索引,索引会失效;如果or左右字段都有索引,才会生效。2、like以%开头不会走索引3、组合索引不是使用第一列索引,索引会失效4、where中对字段使用了函数会导致索引失效5、如果MySQL分析全表扫描速度比索引速度快时,会使用全表扫描,索引失效MySQL为什么选择B+树,它和Hash索引有什么不同大家都知道MySQL的消耗主要在io上,所以io的次数越少越好,而树高就代表着io的次数,所以树高越低越好。B+树的非叶子节点不保存键值对应的数据,这样B+树每个节点所能保存的键值大大增加,所以树高就降下来了;另一方面所有关键字数据都存在叶子节点,所以每次查找的次数都相同,查询速度更稳定;还有一方面是B+树的叶子节点是跟后序节点相连接的,对于范围查找是非常有用的。Hash索引之所以不适合MySQL有以下几点原因:1、Hash索引由于特殊的结构,所以查询效率特别高,但是它不能使用范围查找,这是致命的;2、对于大量重复键的情况,Hash是会有哈希碰撞的问题。MySQL事务隔离级别有哪些1、读未提交2、读已提交(避免脏读)3、可重复读(避免不可重复读)4、序列化(最高级别,性能低,一般不使用)上面是4个隔离级别,一般数据库默认可重复读。大家可以去google一下更详细的内容,还有会涉及到快照读以及MVCC的概念。Java8新增了哪些东西1、lambda表达式2、stream流式操作3、function接口以及接口里面支持默认方法4、时间类工具类,LocalDateTime、LocalDate等5、Optional6、优化了HashMap、ConcurrentHashMap7、jvm中去掉了永久代,改为了MetaSpace垃圾收集算法有哪些1、标记清除(会有碎片的问题)2、复制算法(应用在年轻代,会有内存空间的浪费)3、标记整理(效率会低一些)4、分代收集(年轻代(存活对象少,采用复制算法)、年老代(,存活对象多,采用标记清除或标记整理))ReentrantLock的实现机制ReentrantLock的实现机制大家最好去看源码,常用的方法是lock和unlock,大部分的核心逻辑都在AQS中,大家可以去看我之前写的文章Java HashMap的结构,Java8对比Java7做了哪些优化HashMap是数组加链表的结构,Java8中引入了红黑树,而且在扩容时也做了优化,大家可以去看我之前写的HashMap源码解析线程池有哪些参数,以及它的实现原理这个面试题是百分之百会被问到的,刚好前几天整理了线程池的相关知识,大家可以去参考Java锁的那些事儿之JDK锁(ReentrantLock)

HashMap面试,看完这一篇就够了(上)

Java线程池看这一篇就够了,面试再也不怕了

没想到这些面试题答案整理起来还挺多,先整理出上半部分,晚上会把下半部分整理出来。到了该去写bug的时候,大家也好好上班。

欢迎大家继续关注我哦,没有关注的小伙伴,走过路过不要错过,赶紧点关注哦

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。