当前环境,很多公司都采取了远程办公,远程面试。有一说一,第一次远程面试,还是比较紧张的。
一面
- HashMap链表长度大于8后一定会转化为红黑树吗
- 如场景是,HashMap初始数组长度为8,只有第一个元素中有值,且有八个都在一条链表上,其他数组其他七个位置都是空的,这时候为什么要转化为红黑树而不是存放到数组中呢?
- ConcurrentMashMap分段锁之间加了什么锁,读写之间是互斥的吗?
- 三次握手后如果一直不连接会怎样
- volatile的实现原理是怎么样的,它是怎么实现从内存中读取的?
- lock锁的使用,它如果是一个接口,它的实现类有哪些,区别是什么?
- InnoDB的隔离级别是什么,它能避免幻读吗?怎么避免的?
- 索引的底层实现是什么,简单介绍下。
二面
- 介绍一下spring中的AOP
- mybatis和hibernate的区别与优劣
- redis有哪些数据类型
- 手写一个单例模式
- 用到的技术栈
三面
- 如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?
- 怎么理解强一致性、单调一致性和最终一致性?
- 分布式锁有哪些解决方案?
- 如何解决Redi缓存穿透的问题?
- Redis hash算法用的是什么?
- Redis集群方案应该怎么做?都有哪些方案?
非技术问题
- 为什么要用你,你与其他竞争者比较优势是什么
- 你有什么想问我的
- 如果公司需要你加班你有问题吗
整体的面试感受,面试官都很专业,要求基础知识很熟悉,面试之前一定要准备后再去面试。LeetCode题目也要刷。
切记面试前一定要刷题和准备,简历上的项目不熟悉的千万不要写上去,写上去的项目备好2-3个技术方案。
视频面试结束之后,我总结了下,问的都不算难,虽然不是很顺畅,但问题也都回答上了,就是通过视频的形式来面试,总感觉怪怪的。本以为已经没戏了,谁知道5天后收到通知,竟然过了!现在正在考虑要不要辞职过去...
当然,大厂的面试,是一个系统规范化的流程,除了Redis、MQ这些必备品外,每一个简历都会有一句Java基础扎实(有没有被说中),那么,到底怎么样算Java基础扎实?
1、集合,例如 List、Map的原理,HashMap基本必问这个不用我多说
2、并发,例如线程、线程池,锁相关,这些也基本必问
3、JVM,例如垃圾回收器,垃圾回收算法,OOM处理,jvm参数及调优
上面说的这些,是最最最基本的面试标配了。
首先来说下对于简历的准备。MQ、Redis这两个是标配没跑的了。为啥?你要突出你的核心竞争力,无非围绕高并发、高可用、海量数据这几个点出发。
其次,核心竞争力也体现在分布式解决方案的真实落地实践,但是这些分布式解决方案,也很大程度上依赖 Redis和 MQ。
比如分布式session需要依赖 Redis,分布式事务最终一致性需要依赖 MQ。也就是说,一份优秀的简历,深入 Redis和 MQ这两个,都是避无可避!
以下主要分享面经和个人学习方法,会包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,可以点击此处来获取就可以了!
由于文章的篇幅有限,所以这次的阿里面试题答案整理在了PDF文档里
如果简历上只是做的项目不同,但是实质都是简单的CRUD,那么没面试之前,已经给淘汰得差不多了。
通过数十家面试的观察,对于Redis和MQ,考察的方向,其实也是有迹可循的。首先他们的高可用是怎么保证的,原理是怎么样的,几乎必问(不信你可以自己观察)。当然还会根据你的回答往下继续拓展问题,每个人回答得不一样,自然拓展的问题也不一样。
以下我会分享一些我个人的学习文档,有需要的朋友自行选择获取:
- Java核心知识整理
性能优化(JVM+Tomcat+MySQL)答案解析整理
分布式(限流+缓存+通讯)答案解析整理:
刷题:
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
以上学习资料均免费放送,最后祝愿各位顺利拿到心仪的offer!
资料获取方式:可以点击此处来获取就可以了!