总结
面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。
我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
面试题及解析总结
大厂面试场景
知识点总结
**程序员:**你好,我毕业于XXX,工作5年了,最近的工作主要是负责XXX(见以上背景介绍)
**面试官:**看到你写到熟练掌握Java语言的高级特性,简单介绍一下Bean SpringBean一个注入过程吧
**程序员:**Bean的注入过程…首先是从配置文件(注解)里面把它和对象…额,我对这方面还是不太熟悉
**面试官:**没事没事…我们接着往下聊
**程序员:**尴尬一笑
**面试官:**我看大你写到你了解一些高级特性,你能给我简单的介绍一下Java8有哪些新特性吗,或者你比较擅长的新特性有哪些?
**程序员:**Java8主要就是在语法上就是lambda表达式,它可以用函数式进行那个函数式编程,函数式接口的意思就是它这个接口它只有一个方法…
**面试官:**还有别的吗?
**程序员:**还有一些流的操作,比如:Stream API它可以简化编程语义,显得更清晰,比如在做一个filter功能,就可以绑定数据把不符合要求的数据过滤掉,就在以前的话写一个for循环,看起来就没那么好理解…然后对于数据结构进行了一些优化,像ConcurrentHashMap,它底层实现改成了红黑树…
**面试官:**你刚刚说的都是一些优化,我问的是它新加的一些高级特性
**程序员:**再次尴尬一笑…
**面试官:**你刚刚提到它的流式处理,那对比像foreach或者基本的for循环,它有没有在效率上进行优化,还是说它更慢了?你有去了解过吗?
**程序员:**额…没有
**面试官:**我看你说对并发编程有些了解,你能跟我讲一下Synchronized和Lock锁它的底层实现原理吗?
**程序员:**啊…Synchronized是一个语义级的支持,它在一个对象头里面,它有一个Mark Word的标记去记录它的锁,Lock显示锁是利用了它底层是一个AQS,它式一个双向链表的先进先出的一个队列,它只有当前持有锁的线程就是一个对头,然后它释放出来之后,就会利用一个自旋的操作,让下一个线程作为队头这样子
**面试官:**那它们两个分别是什么层面的呢,是jdk层面还是JVM层面,还是?
**程序员:**Synchronized是JVM层面的,Lock是jdk层面的
**面试官:**刚刚你说到了Synchronized,你有去了解过它锁方法、锁对象和锁代码块分别是怎么去实现的吗?
**程序员:**额…这个没有
**面试官:**那你了解Synchronized锁升级过程吗?
**程序员:**没有…
**面试官:**那刚刚提到了Lock,CAS你能给我简单的介绍一下吗?
**程序员:**CAS就是比较并交换
**面试官:**恩恩,提到这点就可以了,那你有在实际开发过程中有实际的一些应用吗?应用到乐观锁的一个过程
**程序员:**有的,就譬如,我在更新数据库的时候,如果一个数据库用的是乐观锁的话,我也用一个自旋的操作,就把他更新到成功为止
**面试官:**自旋的效率会不会很低?如果一直取不到这个锁的话,那可能会造成一些线程堵塞,或者在高并发场景下其他的会影响到很多效率,有考虑到这个问题吗?
**程序员:**也考虑到了…如果并发高的时候确实不太适用用自旋,这个时候更适合用悲观锁
**面试官:**那跟我聊一下线程池吧
**程序员:**线程池是…我还是先说一下它的工作流程,再变成先提交进来,它先进入核心吃里面,如果线程书大于coreSize,就会进入一个阻塞队列,阻塞队列满了后就会新建一些线程,进入最大的池里面;当线程数,连maxSize的超出了之后,它就会执行一个拒绝策略,JDK自带的拒绝策略有四种:一种是直接丢弃;一种是抛异常;一种是由调用者的线程执行;一种是丢弃阻塞队列里面等待时间最长的一个线程
**面试官:**我看你简历上还提到了熟练掌握JVM调优的知识,我能问一下你了解它调优的一些基本步骤吗?
**程序员:**啊…一口老血,调优的基本步骤…就譬如,我从…恩…我从OOM说起吧…如果生产上发生一个OOM异常,首先是要判断它是在堆里面发生的还是元空间里面,还有…它还有一种类型就是GC效率过低…吧啦吧啦
注意:由于内容过多,避免影响到阅读体验,下面的面试环节我就不码字了,全以截图代替了!
**面试官:**我看你基本上都是待了一年就离职了,你能说一下你离职的原因吗?
程序员:…
**面试官:**你对自己职业规划大概是什么样的?
**程序员:**往互联网金融行业走
**面试官:**你有什么想问我的?
**程序员:**问了一些之前没太懂的
**面试总结:**从这场面试官中可以看出,面试官没有深问,不然估计80%的内容都答不上来,基本上都是偏基础的东西,底层的内容没有怎么问,写了个Dubbo在简历上,面试官都没有问他Spring Cloud,Hystrix容器这些,连bus都可以问出一堆东西,一旦问了真的就只有尴尬了,问到怀疑人生。
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
f00ff254613a03fab5e56a57acb)收录**