三顾茅庐,七面阿里,终拿25k*16offer,我的面试历程

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

写在片头声明勿杠

首先简单说一下这三次面试阿里并不是一次性去面的实际上第一次面试时候还在大四找的实习岗不太清楚是什么部门别问我为什么还记得面试题有记录和复盘的习惯再问就是杠。

个人背景不详细多说学历双非本科不是应届生工作年限不长技术不是大牛但也非小白面经分享是想给正面试的同行一些建议和鼓励希望能够多多支持。

One三顾茅庐七面阿里拿下25K*16offer

——一顾阿里一面被怼未知部门

阿里巴巴未知部门一面问的问题让我感觉是偏金融的部门面试官很严肃现在想想都有些后怕

  • 自我介绍

  • 开源项目贡献过代码么回答没有很尴尬

  • 之前在部门做什么简单介绍一下业务吧内部有哪些系统作何交互过程说一下

  • Dubbo踩过哪些坑分别是怎么解决的我答了异常处理时业务异常捕获的问题自定义了一个异常拦截器

  • 说下你对线程安全的理解

  • 事务有哪些特性

  • 怎么理解原子性

  • 讲一下乐观锁和悲观锁的区别这两种锁在Java和MySQL分别是怎么实现的

  • HashMap为什么不是线程安全的怎么让HashMap变得线程安全两者的区别是什么

  • jdk1.8对ConcurrentHashMap做了哪些优化为什么这样优化

  • redis主从机制了解么怎么实现的

  • 有过GC调优的经历么有点虚答得不是很好

  • ListMapSet三个接口存取元素时各有什么特点

  • TreeMap和TreeSet在排序时如何比较元素Collection工具类中的sort方法如何比较元素

  • Thread类的sleep方法和对象的wait方法都可以让线程暂停执行 它们有什么区别

  • 线程的sleep方法和yield方法有什么区别

  • 当一个线程进入一个对象的synchronized方法A之后 其他线程是否可进入此对象的synchronized方法b

  • 请说出与线程同步以及线程调度相关的方法

  • synchroized关键字的用法

  • 启动一个线程是调用run还是start方法

  • 有什么想问的么

——二顾阿里二面惨败菜鸟网络

阿里巴巴菜鸟网络一面

  • 先来了个自我介绍

  • 然后介绍了自己简历里写到的一个比较熟悉的项目询问了项目的细节及具体的实现

  • 接着面试官开始针对项目进行提问1高并发的情况下Kafka消费到第一条记录在下沉服务处理好但由于网络抖动没有正确返回给上层上层服务再次调用服务怎么样保证只处理一次请求我答了分布式锁介绍实现2有自己用Redis实现过吗说说看

  • 介绍一下Redis的zset实现回答的根据skiplist+hashtable和多级索引的方式实现

  • 介绍一下B树。自己拓展开来回答讲到了B+树的区别聚簇索引和非聚簇索引为什么B+树更矮胖如何确定B树的阶等。

  • 如果是普通索引如何查找到对应的数据

  • hashmap如何扩容的讲transfer方法和resize方法。为什么容量是2的指数次幂

  • 介绍一下悲观锁和乐观锁。

  • 当synchronized对指定的方法上锁一条线程获取锁执行任务时另一条线程来获取这个方法对应实例的锁时获取失败会被阻塞。那么当前一条线程执行完任务以后怎么通知被阻塞的线程可以获得被释放的锁继续执行任务感觉回答得比较糟糕后来复盘的时候反思了下建议还是从对象头中存储的偏向线程ID、线程持有的锁、锁状态标志以及monitor锁计数器结合回答

  • 介绍一下线程池介绍几个参数以及几种常见的线程池各自的阻塞队列

  • 几个参数之间的关系大致说了一下打断问如果最大线程数大于核心线程数且阻塞队列中任务已满核心线程数创建达到设置的最大值提交任务的线程被阻塞挂起请问此时线程池开始创建额外的线程来执行任务是哪个任务先被执行队列头的还是队列尾的

  • 介绍一下jvm内存分区和垃圾回收机制

  • 如何确定eden区的对象何时进入老年代当线上监控中心的新生代和老年代哪个区域发生垃圾回收表示此时比较危险

  • Spring的两大特性Springboot如何实现自动装配的aop在项目中用过吗怎么用的底层是如何实现的介绍一下动态代理。jdk原生的动态代理和cglib的动态代理有什么区别

  • spark和flink的区别简历没写flink但之前有spark任务就勉强回答了一下。

  • 有没有发生数据倾斜的情况如何解决的怎么观察spark任务的执行情况

  • 有了解过apollo吗

  • 了解CAP原则吗介绍一下

  • 你有什么要问我的吗

阿里巴巴菜鸟网络二面

  • 自我介绍这次着重介绍自己的项目经历和项目总结。

  • 介绍项目我刚说第一个就被面试官打断了感觉要开始怼我直接问有没有更亮点的项目。然后我介绍了另一个比较难的项目讲了一些业务背景以及使用到的技术栈不知道为什么面试官没有拓展开继续问下去了。

  • 网络协议有哪些

  • 讲讲ThreadLocal的作用是否线程安全

  • 进程间的通信

  • TreeMap讲解里面有什么属性entry里有什么属性

  • Java里有哪些是不需要加锁的同步方法

  • 行锁和表锁的区别、场景

  • 组合索引的使用eg. (a, b, c)索引where a=xwhere b=xwhere a=x and b=x哪个能使用索引

  • ArrayList和linkedlist的区别

  • 有哪些集合类是线程安全的

  • 算法1排好序的数组找2个数的和为M的所有组合2大数据下找出出现频率topK的ip

  • 上家公司的研发部门有哪些组大致的工作内容是什么一个组多少人你在什么组负责什么

  • 离开上家公司后在看什么书学习什么技术回答在研究Dubbo和MySQL还看了一些底层实现的东西

  • 截止目前你自己感觉面试表现怎么样

  • 你有没有要问我的

——三顾阿里四面拿offer一淘事业部

阿里巴巴一淘事业部一面

  • 按照自我介绍项目介绍

  • 你们每天这么大的数据量都是保存在关系型数据库中吗

  • 那你们有没有对查询做一些优化呢

  • 能说说为什么B+树相对于B树在查询上会更加优胜吗

  • 除了上面这个范围查询你还能说出其他的一些区别吗

  • 刚刚我们聊到B+ Tree那你知道B+Tree的叶子节点都可以存哪些东西吗

  • 聚簇索引和非聚簇索引在查询数据的时候有区别吗

  • 刚刚你提到主键索引查询只会查一次而非主键索引需要回表查询多次。是所有情况都是这样的吗非主键索引一定会查询多次吗

  • 在创建索引的时候你都会考虑哪些因素呢有用过联合索引吗

  • 在创建联合索引的时候需要做联合索引多个字段之间顺序你们是如何选择的呢

  • 知道在MySQL 5.6中对索引做了哪些优化吗

  • 你们创建那么多索引到底有没有生效或者说你们的SQL语句有没有使用索引查询你们有统计过吗

  • 那排查的时候有什么手段可以知道有没有走索引查询呢

  • 那什么情况下会发生明明创建了索引但是执行的时候并没有通过索引呢

  • 你们线上数据的事务隔离级别是什么

  • 手撕代码链表内指定区间反转

阿里巴巴一淘事业部第二面

  • 直接上来就手撕代码重建二叉树

  • JVM类加载机制沙箱安全

  • 问到运行时数据区我答漏了一个程序计数器然后面试官就接着问到了程序计数器。

  • 问可达性分析什么样的对象可以作为GcRoot、加载的时候把这些对象提前找好用的OopMap

  • 新生代几次对象几次到老年代

  • 有没有可能直接就把刚new出来的对象放在老年代第一次碰到这个问题有些慌我答的有可能毕竟有些垃圾回收器会有一个空间分配担保策略

  • 多线程volatileCAS总线嗅探CPU缓存一致性协议

  • 讲一讲ReentrantLock、ThreadLocal、Lock和Synchronized的区别。

  • CountDownLatchABC三个线程怎么去保证顺序执行

  • 数据库优化B+树Hash索引最左前缀索引优化分析一条龙服务都问了一下。

  • Redis一来就是分布式锁然后别的就没问了可能也是觉得我回答得还行就跳过了。

  • HashMap扩容的触发条件是什么我答只是一个达到负载就扩容了明显错了。然后面试官纠正说负载和Hash冲突同时发生。

  • 死锁怎么排查

  • JVM调优怎么做

  • 问了几个索引题。字符串要写单引号字符串查询怎么增加查询效率字符串索引太大了那就截取几个做索引叫前缀索引。怎么判断一个索引字段选得好不好看不重复的和总数的比值越大越好。

  • 假如现在系统里面就是要模糊匹配怎么办

阿里巴巴一淘事业部第三面

  • 自我介绍直接问到了技术栈。这次优化了自我介绍的内容主要围绕4个点去讲。自报家门、项目经验、技术栈以及求职愿景

  • 根据项目来提问技术问题这部分大致是对你的整体价值观做宏观的把控包括上进心、责任心、心态以及工作激情等

  • 在项目中遇到了哪些比较棘手的问题是如何解决的呢

  • 目前系统支撑的用户量是多少假如用户量提升10倍系统会出现什么样的问题如何重新设计系统这部分就是主要考察你对问题的预见能力、解决能力考察你对项目、问题解决的整体思路

  • 使用memcached是一个什么样的原理

  • 如何存放数据到memcached集群中介绍一下这个过程。跟进的问题讲一下一致性哈希算法的实现原理。

  • JVM中堆是如何管理的JVM的内存回收机制介绍一下

  • 分布式事务实现方式

  • 热点账户问题项目中有就会问到

  • 类加载委托机制

  • 锁的应用

  • 项目架构

  • 最后一问你觉得你在同事眼中是一个什么样的人

阿里巴巴一淘事业部第四面终面Hr面

  • 自我介绍

  • 看你工作换得比较勤你的职业规划是怎么样的

  • 上一份工作为什么要换我回答的是上份工作让我处于一个舒适区但我比较喜欢做有挑战的事情巴拉巴拉

  • 对阿里了解多少对电商了解多少

  • 知道新零售吗说说看

  • 读过哪些算法方面的书籍

  • 开放题数据和商业的关系

  • 薪资待遇

  • 你有什么想问的

面试题答案

Two三顾阿里七轮面试我的经验复盘

1.阿里面试注意事项

  1. 部门选择从这三次面试经历来看部门不同问到的技术栈都有所区别所以在面试前最好是根据自己所面试的部门做相应的准备。

  2. 岗位选择根据岗位介绍能够洞见的关键信息并不多基于有限的信息所谓合适通常需满足以下几点①自身的核心竞争力与所应聘的岗位具有较高的匹配度②对岗位的工作内容感兴趣至少不排斥③岗位所在的业务具有良好的前景④工作地点可接受。

  3. 应变能力几轮面试下来给我最大的一个感受就是一定要培养自己的应变能力。在面试过程中面试官会根据和你交流的过程中找一些细节进行提问一旦应变能力不强就容易慌了张影响面试发挥导致失败。

2.面试核心知识点梳理

除了阿里以外其他七七七八八的互联网公司我也面过不少不说身经百战那也面临过一些枪林弹雨的。所以对于面试会问到什么技术栈还是做了一些详细的梳理这些面试梳理还是相当有说服力的。

针对面试核心知识点的梳理我提供了以下的思维导图和面试核心点PDF

  • Java面试核心知识导图

  • Java面试核心点PDF

3.简历优化

不要以为简历只是一个 “敲门砖”而已事实上它将伴随你走过应聘流程中的几个关键环节简历评估技术面试HR 面试。

一份优质的简历有助于应聘者展示自己的能力和优势同时也可以为面试官提供 “提问指导” 通常面试官会根据简历内容有针对性地提问有的放矢因此不断去优化自己的简历是很有必要的。

关于简历我可以提供我个人的简历模板给你参考

Three我的未来规划知足常乐但不安于现状

1.职业规划

程序员职业发展一般分三条路

  • 技术

  • 管理

  • 创业

放到自己身上来看很显然没有创业的头脑那这条路自然是行不通的。那走技术还是走管理实际上并不需要过早定下来等到一定年纪自然会开始方向的转移但无论是走技术还是管理一开始就要把技术打得扎实由此对于技术痴迷的我先以技术路线为主管理路线为辅。

2.学习规划

说得难听点程序员不学习那就是在“等死”尤其是对于大厂程序员来说因此接下来的时间要有一个清晰的学习规划。

我的学习规划如下

  • Step1按照技术路线图学习

  • Step2啃完这些电子书籍和技术笔记

  • Step3利用碎片时间看视频学习

3.业余规划

  • 搞副业用业余时间搞点副业还是ok的接点小项目或写写博客正在做。

  • 混论坛混迹各大程序员知名论坛中如GitHub等能够参与开源最好不过。

  • 交朋友加一些社群参加线下面基结识一些同行朋友或许能碰撞出一些不一样的代码火花

写在末尾一些建议和行业愿景

文章写到这里差不多可以停笔了但是又好像还想说点什么或许是对同行的你一些小建议也或许是对整个行业的一些愿景。

近几年来铺天盖地而来的“程序员35岁”制造了不少年龄焦虑试问自己被公司裁员被社会淘汰真的是年龄导致的吗大多数还是与自己能力相关在我接触到的认知里互联网公司35岁以上的技术经理技术大牛仍有不少。实际上无论你是什么行业能力不过关都会被淘汰而避免被淘汰的唯一办法坚持学习。

以上就是本次给大家分享的内容更多Java技术干货、学习笔记及Java面试题的朋友可禾多步至

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6