侥幸还是实力?破二本两个月逆袭阿里,夺得P6offer

两年CRUD,没料到我这渣二本,备战两个月面试阿里,居然侥幸拿下P6的offer

过来人都知道,对于很多没有学历优势的人来说,面试大厂是非常困难的,这对我而言,更是一样,出身于二本,原本以为就三点一线的生活度过一生,直到生活上的变故,才让我有了新的想法和目标,因此我这个二本咸鱼也奋斗了起来,最终出人意料的拿下了阿里P6岗。今天分享这波面经,主要是希望能够激励到同样被学历所困扰的技术人,能够对职业生涯和技术规划有一个参考价值,感谢!

一、面试阿里P6难在哪?(面试难点)

(1)难在“心态”

首先需要克服的第一关,实际上就是自己的心态。因为我是二本出身,base比较低,所以面试阿里本就是一件没太大底气的事情,更何况是高级开发岗,所以心里就更容易没底。因此,在准备面试之前,调整心态这件事情就做了很久,所以难在“心态”一点也没错,心态没调整好,面试几乎是没戏的。

(2)难在“要求”

其次就是要求,所谓的要求实际上就是阿里对岗位的任职要求,也就是作为开发人员,你掌握了多少技术栈?

首先,你简历上写的肯定要会,其次就是你要拥有一些亮点,也就是说对某个技术有深入的了解,这样才能给面试官耳目一新的感觉。

那么,面试阿里P6岗,需要掌握多少呢?

Java集合:HashMap和ConcurrentHashMap,平时最好有读一些源码,最好知道每个参数为什么设置成这么大?有什么好处?

大厂必问JVM:垃圾回收算法,垃圾收集器、JVM内存模型,每个区域用途,各种oom的种类,jvm调优经验,类加载过程,双亲委派等。

Spring就得抽空看源码了,一般会问到bean的生命周期,如何解决循环依赖,实现事务原理,动态代理原理等。

Dubbo也是必须问的,设计框架,负载均衡。

Redis更要多懂一点,单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型?包含一些缓存常见的问题击穿、穿透、雪崩、数据一致性等。

Mysql,事务,锁,索引,b+树,主从这些你必须会

Mq ,我用的rocketmq,你得知道为什么用,重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程,读过源码更佳,更好吹

Netty的话,零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好

算法,建议去刷题,我运气好,简单的算法让我碰到了,一些快排,堆排,二叉树相关的,链表反转,成环,环节点,跳楼梯等常规的简单算法建议刷刷,双指针,dp,递归这些还是多找找感觉,大数据内存有限的场景的统计,有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。

网络,http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。

还有就是一些分布式事务实现,架构实现,比如抢红包,高并发下单等常规的场景设计,你来设计,你怎么去设计?多找一些大牛或者上网自己查,帮你看看有哪些漏洞,有哪些解决方案?业界有哪些好的中间件?

二、阿里面试过程(共四面)

一面(主要是jvm,并发,锁,数据结构等基础)

自我介绍(说说自己的擅长及拿手的技术)

说说treemap和HashMap的区别?HashMap和ConcurrentHashMap的区别?

HashMap底层如何实现(JDK1.8有所改动)?

说说Hash的一致算法?

你知道的GC算法和回收策略有哪些?GC的机制是什么?

垃圾回收器的基本原理?是否可以立即回收内存?怎么样主动的通知JVM进行垃圾回收?

双亲委派模型机制

线程池创建的几个核心构造参数是什么?

乐观锁和悲观锁?可重入锁和Synchronized?

他们都是可重入锁吗?哪个效率更高?

CountDownLaunch和Cylicbarrior的区别以及分别是在哪样场景下使用的?

Http和Https的区别以及Https加密的方式?

以后的职业规划和想法

二面(主要是数据库,协议,Spring等)

自我介绍,聊下自己认为做得很好的项目!

InnoDB支持的四种事务隔离级别名称是什么? 之间的区别是什么?MySQL隔离级别是什么?

说说事务的特性?讲讲对慢查询的分析?

你理解的BTree机制?

有哪些MySQL常用的优化方法?

Http请求过程,DNS解析的过程?

三次握手和四次握手的过程?

B+树索引和Hash索引之间的区别?

Spring IOC如何管理Bean之间的依赖关系,怎么样避免循环依赖?

SpringBean创建过程中的设计模式?

说说AOP的实现原理?

Tomcat的基本架构是什么?

三面(主要是缓存,高并发,分布式)

自己项目中的总结的并发经验

说说MySQL的锁并发?加锁的机制是什么?

高并发场景下如何防止死锁,保证数据的一致性?

集群和负载均衡的算法与实现?

说说分库与分表设计?

分库分表带来的分布式困境与对应之策有哪些?

Redis和Setnx命令是如何实现分布式锁的?使用Redis怎么进行异步队列?会有什么缺点?

缓存击穿的概念和解决方案?

Redis的数据结构? 线程模型? Redis的数据淘汰机制?

Redis的数据一致性问题

MQ底层原理的实现?

阻塞队列不用Java提供的该怎么实现?

讲讲负载均衡的原理?

如何实现高并发环境下的削峰、限流?

四面(主要项目入手)

讲讲项目中用到的中间件(Dubbo/MQ/Zookeeper/Redis/Kafka)?

什么情况下会造成雪崩?该怎么避免这种情况?

高并发架构的设计思路?

以前的项目中遇到的问题和解决策略?

生活中遇到过哪些挫折?最后怎么解决的?

小结

一线互联网公司都比较注重实际的项目中解决问题的能力,另外面试点主要围绕JVM、多线程相关、基础知识的底层原理、处理高并发的能力。这里也不扯什么面试技巧了,轻松发挥就好,祝大家都能有个高薪满意的工作!

前边主要介绍了学习框架和面经,下面分享一些干货

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门500道一线互联网常问面试题及答案助你拿offer。

2、多线程、高并发、缓存入门到实战项目pdf书籍

读书既能学习 也有利于平静心态! 

总结

很多学历不太好的人,可能对自己没有太大的信心,实际上任何事情都有“奇迹”发生,而这个“奇迹”关键还是要靠自己去创造。无论你是小白菜鸟,还是技术大牛,日常都不能够落下学习这件事情。

机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

限于平台篇幅原因,更多内容展示不了,

需要完整版的小伙伴可以帮忙点赞+转发,扫码添加小编一下后,无套路免费领取完整版文档。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>