自己投了几家头部互联网公司,阿里是其中之一,也是我的期望公司。既然目标定下来了,自然是要竭尽全力去实现的,年前面试了阿里一波,但最终是败给了MySQL,好几个问题都答得不太理想,所以结果也想象得到,挂得很快。但今年由于疫情的缘故,各大互联网公司也受到了一些阻力,不过也趁着这空闲之际,我重整旗鼓,在败给“MySQL”的第33天,四面拿下了阿里淘系offer!
阿里淘系面试题(核心部分)
以下内容主要是我整理出来的这两次面试的核心面试题,其中标粗部分是问到的MySQL相关的,由于篇幅有限,所以完整版我整理在了PDF文档里,包括这次面试的感受、详细过程、心得以及一些建议。
- 如果让你自己实现一个布隆过滤器应该怎么实现?
- 你看过哪些开源框架的源码?
- 你如何设计一个RPC框架?说了大概的dubbo框架的工作原理
- 分布式服务怎么支持高并发?
- Java应用线上本来可以支持1000-2000的QPS,但是实际只能支持100-200,怎么排查问题?
- 说一下synchronize和ReentrantLock的区别?
- JVM线程和操作系统线程有区别吗?还是就是一回事?
- Ioc和aop是什么,为什么要有jdk动态代理和cglib代理?
- 文档型数据库有哪些?ES与MongoDB有什么区别?为什么ES搜索更快?
- 数据库都有哪些类型,关系型数据库和NoSQL有什么区别?
- 微服务都有哪些框架或中间件啊?
- SpringCloud都有哪些组件啊,和阿里开源的这些有什么不同呢?如果要你用你该如何选择?
- 如果让你提高一个系统,你该怎么做?如果让你设计一个系统,你要考虑哪些方面?
- MySQL索引是什么样的数据结构?
- MySQL中的常用的存储引擎 MyISAM与InnoDB的区别?
- 如何选择存储引擎 MyISAM与InnoDB?
- MyISAM与InnoDB实现BTree索引的方式不同在哪?
- 为什么要使用索引?(索引的优点?)
- 索引是怎么提高查询速度的?
- 既然索引这么多好处,为什么不给表中的每一列都创建索引?(索引的缺点?)
- 使用索引有哪些注意事项?(使用索引时,SQL语句怎么优化?)
- 什么是最左前缀原则?
- 什么是覆盖索引?
- HashMap和HashSet有什么关系?用HashMap实现HashSet该怎么做?用HashMap的keySet就当作HashSet,底层的源代码看过吗?看过HashMap,知道key找value,万一找到的key对应的HashCode所在的数组有好几个Entry,怎么查找? 遍历链表,需要用到equals方法找到那个key的Entry?
阿里核心面试题答案+解析(完整版):
如何复习?如何重振旗鼓拿下阿里offer?
(一)找出自己的薄弱之处,恶补
有了第一次阿里面试败阵的经验,知道了自己的不足,所以第一步的关键之处就在于要恶补自己的薄弱之处,由于MySQL方面欠缺的比较多,所以就从MySQL开始,从掌握到精通,一点点弄透。
关于MySQL的学习,我自己也整理了不少资料,首先自己脑海中要有一个思路图,所以根据思路图学习起来还是非常轻松的。
- MySQL思维导图
- MySQL 性能优化的21个最佳实践
- 最全MySQL面试50题和答案解析
(二)系统化复习,查漏补缺
关于系统化复习,其实就是一个查漏补缺的过程,很多人在复习的时候,总觉得自己知道的东西就不需要再去学习了,实际上很容易出现“自己为自己知道”的这种情况,所以系统化复习非常关键。当然,系统化复习也是有技巧的,可以整理一些核心的知识点,将这些核心知识点吃透即可。
关于系统化复习,我个人也整理出一套Java的核心知识点,这套核心知识整理内容非常详细且完整,包括Java基础部分、数据结构与算法、开源框架、分布式以及微服务,将多线程、JVM、Spring、MyBatis、MQ等各个知识点非常详细的讲解到位了。
(三)走走捷径:多刷题
在准备面试时,一定要抽出一部分时间来刷刷题,很多人曲解了刷题的目的,认为刷题就是抱有侥幸心理,认为面试是问到原题的几率很小,但实际上刷题这一步要做的是学会“举一反三”,言下之意就是在刷题的过程中,建立一种:这个问题的核心是什么?为什么要这么问?关于这个核心我要怎么回答!
关于刷题,分享一套我自己的大厂题库:
写在文末
最后不想说太多废话,总结只有一句:简历是敲门砖,获得的是面试的机会,而能力才是拿下面试通关卡的钥匙。
所以,提升自己很有必要,而学习,不能止步。