小米9.9面经
面了33分钟。。期间好长一段时间只能听见面试官嗯嗯嗯的声音。看不到脸。。然后再复盘一下吧。
首先是计网,说说你理解的网络七层架构吧。这里分开了七层从上往下应用层。表示层。会话层。传输层。网络层。数据链路层。物理层分开来说了每层的作用和相关的协议。然后面试官问了一句你觉得分层的好处是什么。我说架构清晰,每层各负其责。下层为上层服务。面试官未置可否。评论区老铁可以讨论一波。
之后是说道了spring框架。(ps:我也不知道为啥先问框架。不应该先问集合嘛。)说说你理解的IOC。此处我说了10多分钟。从bean的加载过程到解决循环依赖到反射机制单例模式等等。自认为非常完美。面试官就是在这段时间内看不见脸只听到嗯嗯额的声音。。然后。最后来了一句你没有答到点子上。。感情我白白浪费了10多分钟啊(ps:小米面试只有30分钟左右),我问那点子是什么。面试官回复自己去看。****。然后说到aop。我说到了底层是由动态***实现。两种方式混合实现。基于接口的和基于子类的。然后说到了拦截器。结果面试官倒是没说没说道点子上。就一直嗯。哇。难受得一批。我跟个弟弟一样自言自语了10多分钟。。
然后。很神奇。问完框架问集合。。说说你知道的集合。Collection和Map开始扯。说道线程安全和不安全的集合。一直想让面试官问我线程方面的东西。结果。面试官并没有问。我又一个人讲了几分钟。。好不容易我扯到了JUC并发包。就问到了Concurrenthashmap。。我刚想说AQS。。面试官就问get需要加锁吗。我说不需要。为什么。因为get使用volatile和cas实现。每次增加节点和改变节点的值都能让其他线程马上看到。然后就没有然后了。
你项目里面用到了redis和mysql是吧。说说他们的区别。传统数据库如mysql都遵循ACID特性,而redis之类的key-value型内存型的Nosql更适合做分布式。然后说了一下CAP理论相关。。说说redis的数据结构。string。list。set。zset。hash。。好。那他们做了哪些优化。。这里我具体说道了跳表。但是面试官很嫌弃。
你用mysql是吧。说说mysql的索引吧。。先说了几种索引。主键索引。唯一索引。普通索引和全文索引。然后说innoDB底层用b+Tree。然后又说到了为什么用他。期间很想面试官一步一步引导的。而不是一直都是我说。感觉面试官并没有加入自己的思考。当然我也有问题。可能逻辑上和语言组织上有点问题。但是确实并不算一场很专业的面试。
最后写了一个堆排序。我也不知道代码写出来了没有反正思想说明白了。面试官假装肉眼debug了一下说问题不大。
并不是说一场体验不怎么好的面试就一定是面试官的责任。我确实也有将得不好的地方。但是。全程嗯嗯额我实在是受不了。本来时间就很短。无法全面的了解面试者的全部。面试官却并没有对这方面进行引导,比如说为什么快。为什么怎么怎么样。全程我一个人噼里啪啦说。很没趣的啊。最后也没有说还有什么要问我的。就说等系统通知就下线了。哎。菜还是我菜啊。
#小米##Java工程师##面经#