宇宙条是春招第一家给我面试机会的公司,收到面试邀约的时候没抱太大希望,全世界都知道宇宙条唯算法论,算法这块是自己最薄弱的地方,但是没想到一路闯进了三面,有点瑟瑟发抖,三面面试官面完后说要和其他两个面试官沟通完之后才能给我结果。下面就看下都问了些什么吧,为了写面经我还特意录音了。
第一面
面试官很准时,是个邻家小哥哥类型的帅小伙,可能是刚刚睡醒发型有点随意但是颜值高,下午两点准时上线了,打了个哈欠就开始视频面试,全程1个小时28分钟,面的都是很基础的东西。
自我介绍数据库索引的作用是什么这里我回答了下索引类型,底层存储,查询效率为什么使用B+树存储这里与红黑树进行了比较,然后操作系统文件系统的页相关回答数据库范式有些什么,为什么要有这三大范式三大范式概念说了说,然后从设计方面回答了为什么要有mysql数据库底层存储从存储引擎方面说数据库类型,关系型数据库还有什么?从典型代表关系型,文档型等,mysql,mongodb,hbase,redis,es这些回答,各自讲解优缺点讲讲jvm,内存泄漏怎么理解的从虚拟机参数调优,虚拟机作用方面回答(讲到后面我有点激动,我说这是Java能飞起来的灵魂,把我们都给逗笑了)垃圾回收机制,垃圾回收算法讲解一下,怎么判断是老年代,触发垃圾回收的时机在什么时候这个讲了挺久的,讲的比较详细,他后来问我从哪里学的,我把周志明那本《深入了解jvm虚拟机》给他看了内存分配怎么分配的将堆,栈,引用计数器,方法区,本地方法区放些什么都给讲了软引用,强引用,虚引用,弱引用那四大引用各自讲解一下顺利讲了下,其中的弱引用的回收时机我已经记不清,这四大引用概念性太强了,很早之前看的能记得这四个我觉得自己已经是超常发挥了Java垃圾回收机制怎么样,弊端自由发挥中,与c比较等,讲了讲弊端,到这里就结束了虚拟机的部分平时学习是怎么学习的?Java基础开始,sychronize底层怎么实现的?synchronize是怎样的锁?synchronize常用场景的使用?synchronize可以修饰什么属性,变量什么的?synchronize如果锁一个字符串会出现什么问题?这个我不清楚,我从内存分配的角度来回答的,字符串可能会存在常量池和堆区什么的,各自情况。后来我搜索这个问题发现回答的方向大致对了,但是这个问题其实深挖很有料线程的同步机制有哪些?这个时候我一开始没反应过来在问什么,面试官人很好引导我,还问我有没有学过操作系统,嗯但是操作系统学的有点儿早,差点滑铁卢,还好在学nginx的时候了解了这方面知识,给答了出来,到这里很慌了,想了很久,我有点乱,面试官笑着叫我别乱线程状态有哪些,转换顺序呢?线程和进程的关系?一个进程多个线程,一个线程崩溃会有什么问题?从线程同步机制引入到锁,我知道几种锁?说了五种,简单介绍了下你知道自旋锁吗?解释一下悲观锁乐观锁怎么理解的说一下?下面到计算机网络网络结构几层,各自说一下