写点什么

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

  • 2021 年 11 月 11 日
  • 本文字数:2642 字

    阅读完需:约 9 分钟

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


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

(1)难在“心态”


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


(2)难在“要求”


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


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

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

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


JUC 包肯定要学,即使平时的编程根本不用,也必须得会。至少要知道 aba,cas,aqs,unsafe,volatile,sync,以及常见的各种 lock,死锁,线程池参数等,也必须要明白自旋,阻塞,死锁和它如何去定位,oom 如何定位问题,cpu 过高如何定位等基本的操作,你可以没有生产调试经验,但不代表你可以不会 top,jps,jstack,jmap 这些可能会问的东西。以及可能衍生的 jmm 模型和 mesi 协议等。


大厂必问 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 书籍


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



3、文中提到面试题答案整理


总结

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


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


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


需要完整版的小伙伴可以帮忙点赞+转发,关注小编一下后,戳这里 即可免费下载一份

用户头像

还未添加个人签名 2018.11.21 加入

还未添加个人简介

评论

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