Java 达到什么样的水平才能通过阿里社招?
刚刚入职阿里不到一个月(新零售方向),所以还是比较清楚之前都准备了啥,部门也在招聘,所以问了下那些招聘的同事主要看什么点。对于社招,我之前做的准备有以下几个方面:
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 比较简单,一般是三道题,一个小时,一道算法题,一道设计模式题,一道多线程事件等待通知,其他的都还好。下面给出阿里的面试题目:
阿里一面:(电话 面试)
项目介绍
项目中分库分表的实现,怎么实现聚合查询
项目中怎么保证只提交一次,http 请求的幂等性
Jdk 的双亲委派模型,如何破坏双亲委派模型
分布式锁的使用场景和原理,项目中是否有使用
Java 多线程了解么
Mysql 的索引介绍一下,在什么条件下索引失效,解释下最左前缀原则
进程的内存占用过高,要怎么排查
Spring aop 的实现原理
有什么想问的
阿里二面(在线笔试题):
1 个小时三道题,不允许使用 idea,只能手写,所以有些函数会写错,在旁边注释下
leetcode 原题第三题
设计模式策略模式的实现
多线程的等待通知的使用
阿里三面:
面试官有事直接到下一面了,幸运
阿里四面:(电话面试)
项目介绍,问的很详细,细节问题,优化点,如何优化的,性能对比,怎么实现的
rpc 框架熟悉么,有了解哪些 rpc 的架构,分别说说优缺点,因为项目用了 grpc,重点介绍了下这个框架
grpc 的序列化 protobuf 知道是怎么实现序列化后很小的,有了解过底层的原理吗?
你们项目用的是 Redis 哪个版本 ,知道其新特性么?为什么选用这个版本?
Redis 有几种部署方式,哨兵机制和集群的区别是啥?
有什么想问的么?
薪资和来杭州的意愿
阿里五面:(视频面试)
项目介绍
项目中是如何设计数据库的,其分库分表实现细节?要具体到代码是怎么实现的?
你刚刚提到的一致性 hash 算法能描述下么?
在项目的过程中,你们项目是一个怎么样的演进过程?每年分别做了什么事情?
Netty 的线程模型描述一下,口述一下一个 netty 的服务端启动流程?(需要知道代码是怎么实现的)
怎么实现一个加锁的生产者消费者模型?口述一下 condition 的使用,消费者和生产者的代码
线程是怎么被唤醒的?
将 AQS 和 condition 中的等待队列和同步队列描述清楚
Rpc 了解么?说下 rpc 的流程
Zookeeper 在 rpc 框架中的作用?
Zookeeper 的写入过程是怎么实现的?
有什么需要问我的么?
我的学习资料
学习 java 没有捷径,是一个孰能生巧的过程,通过不断的练习,把基础学扎实,一步一个脚印的逐步学习。
由于篇幅有限,无法在此一一罗列,读者朋友可以转发+关注小编之后添加助手 vx:bjmsb10 获取整套免费领取;
按类分组,清晰目标与进度:
对我帮助最大的一份文档:
这份文档其实不用多说,单从目录就可以看出他的含金量了!
如何领取?
转发+关注小编之后添加助手 vx:bjmsb10 即可领取!
评论