1. 前几天约了今天(8/28) 19:00 电话面试。废话不多说
自11自我介绍
非科班,说了以前的规划,为什么变了要搞计算机,讲了学校里干了啥之类的
2.String类可以继承码?(烘托下气氛~)
3. 你项目用了Mybatis,自己写SQL还是工具生成?
答先是自己写,之后用工具生成了,(感觉情况不妙,自己对Mybatis不熟)
4. 你用Mybatis常用#还是$更多?(果然)
有点忘了,
肯定是#更多一些吧? (感觉面试官疯狂暗示?)
确实好久没维护项目的Mybatis部分,赶紧说不太熟。.
5. 问我项目只是停留在应用吗?说了解一点点原理,就问了Spring原理AOP,IOC
IOC讲了如何通过XML获取单例(感觉这块说的不够清楚,暴露了理解还不够),AOP讲了反射机制+动态代理。
6. 接口和抽象类的区别
7.Java是引用传递还是值传递
值传递,不过传递的是引用地址。
8. 常用集合框架
讲了ArrayList,LinkedlList, Hashmap,ConcurentHasmap各自底层的原理,顺便简单讲了下hashmap死锁的原因。
9. 问如何开启一个线程。
Thread类和Runnable接口
10. 常用的线程池。
不小心说成数据库连接池,尴尬。一下想不起来,赶紧说自己以前实现过线程池的Demo,模拟了生产者消费者模型。
11. 了解ThreadLocal吗。
没想起来,说不了解,~
12. 项目里用过什么模式?答了单例模式
讲了一下饿汉式,懒汉式,双重锁机制内部怎么维护单例的,枚举式和内部静态类方式。
13.Lock和Sychronize的区别
没理解到想问什么,Lock指的是不就是锁吗,Synchronize不是lock吗?大神来解释一下
14. 知道乐观锁和悲观锁吗?
讲了定义,乐观锁的自旋锁,CAS机制,悲观锁Synchronized,
15. 问synchronized和violate的区别,
讲了violate底层的机制,禁止指令重排和总线嗅探,violate比Synchronized更轻量级
16. 了解JVM吗?说一些知道的
答了方法区和堆区的线程共享,方法区存的类信息,常量等,堆里存放的是实例对象。程序计数器记录线程的执行的上下文(应该是位置),栈帧是方法执行的地方。讲了用递归的时候脑子里会有栈帧的模型。
17. 垃圾回收机制了解吗?
讲了堆区的分代,新生代,老年代,元空间。回收对象的识别方法,引用计数器法和根可达性法区别,然后讲了对象的强弱引用导致回收策略不同,接着讲了标记清除,标记复制。标记整理算法和他们的优缺点,
18. 然后问了CMS垃圾收集器和啥没听清楚
没深入理解,忘了,
19. 项目用到了Redis,Redis内的几种数据结构?
List ,String,Set,zSet,hashmap.
20.. Redis持久化了解吗? 不了解~~~
21.MySQL引擎有哪几种?区别是什么?
答了MyISAM和InnoDB,区别说了索引的结构不同,还有的想不起(忘了说事务支持不一样)
22. 其实有很多种,那你说说InnoDB的索引使用的什么结构?
一下忘了,说是红黑树或者B+树。。最后说是红黑树。。尴尬
23. 其实是B+树,B树和B+树有什么区别?
大概讲了一下B+ 根节点不存数据,叶子节点存数据,并用链表连接。
24. MySQL的隔离级别,默认隔离级别是什么?
可重复读,
什么是可重复读?
(这里答错了,答成了已提交读。)
(还有一些零碎的问题想不起来就不说了)
有没有可能来北京面试?答:略
总结: 感觉面试官人很好,可能看我非科班的,只问了Java基础,网络操作系统都没问,虽然我也准备了好久, 体验还是不错的。
建议大家多准备下基础,然后看看面经,不会很难,不过自己还是太菜了,难受,许愿美团~