俗话说:“不想当将军的士兵不是好士兵”。近期由于产品版本迭代速度比较慢,加之外界种种传闻,所以陆陆续续在约一些面试,检验下自己技术水平。
在一次面试中,偶遇一朋友,他把面试比喻成一次次的bug修复。作为一名技术人员,每个知识点都有待提高的地方,通过和面试官交流,及时找到自己的bug,然后快速的查阅相关文档打补丁,是一个非常不错的提高方式。下面我把和面试官们的交流体会分享一下:
面试开篇,有的面试官以项目介绍为引子,展开技术讨论;有的面试官针对简历上技能介绍,展示技术讨论。由于每位同学的项目介绍不同,我们这里只介绍面试官面试过程中经常问到的一些知识点。
- java基础篇
-为什么要发明泛型?
-抽象类和接口有什么不同?
-hashmap的数据结构
-equals方法
-如何实现有序集合?
-LinkedHashMap如何实现有序存储?
-TreeMap实现原理?
-aop实现原理?
-final关键字
-32位jdk和64位jdk存储java对象有什么不同? - java内存模型
-介绍JVM模型;
-方法区、虚拟机栈、本地方法栈、程序计数器、java堆哪些是线程私有的?
-垃圾回收算法; - Java并发编程
-thread中wait和sleep哪个方法释放锁?
-threadlocal实现原理;
-thread.join方法介绍;
-synchronized介绍;
-CurrentHashMap使用的什么锁?
-synchronized和rentrantlock区别?
-CAS(Compare And Sweep)原理
-AQS(AbstractQueuedSynchronizer)原理
-线程池如何实现的? - 数据结构
-数组和链表的区别?
-树和图的关系? - 算法
-生产者、消费者实现
-冒泡排序
-单例模式
-求一个二叉树深度的算法
-打印菱形图案
-计算算法实现的时间复杂度 - mysql
-mysql存储引擎对比;
-mysql事务如何实现的?
-B树和B+树区别?
-mysql索引如何使用?
-mysql和elasticsearch区别?
-sql优化方案? - spring
-spring如何加载类的?
-spring mvc实现原理?
-spring事务传播特性? - 综合
-zookpeeper如何查找服务?
-elasticsearch如何分片存储?
-什么是倒排索引?
-tcp三次握手介绍
-网站访问流程
-QPS多少?
经过一轮轮的面试,我把java基础知识重新巩固了一下。以前在看《深入理解java虚拟机》和《java并发编程的艺术》时,发现好多知识点看了以后没什么印象,但面试官时不时会问到里面的知识点,现在回顾的时候,理解更加透彻。而且正在培养看源码的能力,以前只知道这么做可以实现,但实现的底层原理尚未了解,更别说如何在底层上改造。
痛并快乐着,虽然面试会被虐,但只有被虐,才知道自己哪些地方可以提高。