Java达到什么样的水平才能通过阿里社招?

时间:2021-01-12

刚刚入职阿里不到一个月(新零售方向),所以还是比较清楚之前都准备了啥,部门也在招聘,所以问了下那些招聘的同事主要看什么点。对于社招,我之前做的准备有以下几个方面:

1.基本功:

阿里主要是java方向的,那对jdk要比较熟练的理解和使用,重点内容有:集合,多线程,io,异常,反射,注解,序列化,反序列化等知识。其次就是网络和数据结构,网络至少要知道三次握手,四次分手,https,get,post等。数据结构有时候会问下红黑树,平衡二叉树吧。如果了解redis的,还可以聊下跳跃表,前缀树吧。操作系统问的不多,一般就是问下实际中有没有出现过cpu过高或者内存过高的情况,然后怎么定位解决。

2.中间件框架:

现在这边也是基本spring那套,所以spring的常问题目要了解。比如启动过程,bean的初始化流程,bean的生命周期,如何解决循环依赖问题,ioc,aop等。 缓存,不论是redis或者是memcache或者其他的,至少要有一个比较熟练的,能了解底层数据结构及实现原理,常规的使用方法。数据库,这个就mysql或者Oracle要熟悉一种,数据库一般要知道分库分表的实现,数据库备份,数据库的事务,数据库和缓存的数据一致性,数据库的索引,锁机制等等。rpc 也是阿里这边比较使用多的一种,所以常用的rpc框架可以了解下,优缺点,rpc的原理要懂,如果有时间自己可以基于netty写一个实战一下。MQ也是一个重点知识,一般会问下消息的幂等性,事务性实现,如何保证不丢消息等,要熟练至少一种消息队列,了解原理。zk有时问有时不问,这个有时间也可以看下,毕竟这是分布式协调器,很多时候在分布式系统中都会使用zk来保证强一致性的问题。

3.设计题:

这种一般会给定某个特定场景,让你去做,如果是架构设计,一般就是高并发。如果是数据库的设计,一般看你对数据怎么设计能够方便查询。

4.理论题:

一般这种就是看你对现在一些常用的分布式理论的理解了。一致性协议,分布式cap,base理论,服务降级,熔断,restful接口等等。

5.项目:

这是个重点,和我同事聊天发现,他如果觉得连自己做的项目都讲不清楚的话,基本就没希望过了,所以一定要想下自己做的项目,有什么难点,解决了什么问题,架构有什么调整,为什么这么做,最后的结果是什么。如果做的比较久,一般还是分几个阶段来描述,每个阶段的目标是什么,为什么这么做。这样会显得思路清楚一点。

6.手写代码:

代码考核是进入每个大公司都需要准备的,所以这个就是要刷刷题,leetcod,有时间逛逛,你值得拥有。

其实每个公司面试都差不多,当然了,如果要面试更高的档次的话,一般还有你对行业的了解,对行业的看法。

我的五面经历

阿里的面试还是比较难的,尤其是后面的专家面,基本是一个问题接着一个问题的。相比较于腾讯和字节的面试来说,阿里的面试在于coding比较简单,一般是三道题,一个小时,一道算法题,一道设计模式题,一道多线程事件等待通知,其他的都还好。下面给出阿里的面试题目:

阿里一面:(电话 面试)

  1. 项目介绍
  2. 项目中分库分表的实现,怎么实现聚合查询
  3. 项目中怎么保证只提交一次,http请求的幂等性
  4. Jdk的双亲委派模型,如何破坏双亲委派模型
  5. 分布式锁的使用场景和原理,项目中是否有使用
  6. Java多线程了解么
  7. Mysql的索引介绍一下,在什么条件下索引失效,解释下最左前缀原则
  8. 进程的内存占用过高,要怎么排查
  9. Spring aop的实现原理
  10. 有什么想问的

阿里二面(在线笔试题):

1个小时三道题,不允许使用idea,只能手写,所以有些函数会写错,在旁边注释下

  1. leetcode原题第三题
  2. 设计模式策略模式的实现
  3. 多线程的等待通知的使用

阿里三面:

面试官有事直接到下一面了,幸运


阿里四面:(电话面试)

  1. 项目介绍,问的很详细,细节问题,优化点,如何优化的,性能对比,怎么实现的
  2. rpc框架熟悉么,有了解哪些rpc的架构,分别说说优缺点,因为项目用了grpc,重点介绍了下这个框架
  3. grpc的序列化protobuf知道是怎么实现序列化后很小的,有了解过底层的原理吗?
  4. 你们项目用的是Redis哪个版本 ,知道其新特性么?为什么选用这个版本?
  5. Redis有几种部署方式,哨兵机制和集群的区别是啥?
  6. 有什么想问的么?
  7. 薪资和来杭州的意愿

阿里五面:(视频面试)

  1. 项目介绍
  2. 项目中是如何设计数据库的,其分库分表实现细节?要具体到代码是怎么实现的?
  3. 你刚刚提到的一致性hash算法能描述下么?
  4. 在项目的过程中,你们项目是一个怎么样的演进过程?每年分别做了什么事情?
  5. Netty的线程模型描述一下,口述一下一个netty的服务端启动流程?(需要知道代码是怎么实现的)
  6. 怎么实现一个加锁的生产者消费者模型?口述一下condition的使用,消费者和生产者的代码
  7. 线程是怎么被唤醒的?
  8. 将AQS和condition中的等待队列和同步队列描述清楚
  9. Rpc了解么?说下rpc的流程
  10. Zookeeper在rpc框架中的作用?
  11. Zookeeper的写入过程是怎么实现的?
  12. 有什么需要问我的么?
【推荐】 史上最全阿里技术面试题目
【推荐】 成为Java顶尖程序员 ,看这11本书就够了,及十个必备的技术网站
【推荐】 一线互联网公司Java架构师的最新招聘标准
【推荐】 大数据开发专家(40K以上)必须掌握技能!