本文首发公众号:只是说说话,请扫描关注二维码关注后续系列更新面试
跟以前同样,打开内外,看到系统提示已经入职恰好一年,心里思绪万千,内心依旧怀揣着进入阿里当时的新鲜感与兴奋感。算法
笔者2016年毕业,毕业于国内某普通二本学校,大学作的是Android客户端开发工做,毕业后从事Java服务端开发,17年中公司不景气,因而决定跳出温馨圈,以入职阿里巴巴为目标,从零开始从新认识服务端,重新开始Java后端的学习,期间面试并拿下小米、美团、饿了么、阿里、百度等一系列公司的offer。后端
本系列将从知识储备、简历、岗位策略、内推方式、面试技巧、面试流程、背调、阿里工做等方方面面,绝不保留的分享笔者在冲刺面试阿里巴巴的准备过程以及入职阿里巴巴后的所思所想,但愿对读者有一些微小的帮助。性能优化
BAT的后端岗位,对社招都有必定的经验要求,以笔者所在的A为例,通常2-3年的童鞋的定级基本处于P6-到P6+之间,A对于P6的定义主要是:微信
一、主导产品,实现用户价值。数据结构
二、准确理解需求,能有产品设计方案。多线程
三、沟通协调能力,把控产品落地。并发
从上面的要求能够看到,对于2-3年工做经验开发的童鞋,通常要求你能hold得住压力、实现得了需求、产品能稳定落地。所以有足够的知识储备以及项目经验是任何一家公司是否选择你的重要条件。框架
在知识储备方面,笔者当时内心很虚,由于在公司作的基本都是CRUD的操做,虽然代码写了很多,功能写了很多,可是能拿出手的项目屈指可数。为了弥补知识储备的不足,笔者花了许多时间,从许多渠道整理而且获取了Java后端开发的相关知识,然后来的实践证实,这些起到了举足轻重的做用。分布式
笔者知识储备的渠道包括:关注比较有价值的微信公众号,简书或者掘金上面的技术分享,公司内网的技术文章分享以及经过阅读书籍构建起比较完整的复习知识树。
笔者认为,2-3年的Java工做经验的童鞋应该具有如下的工做技能:
A、基础
Java基础:面向对象、集合、反射、多线程、锁、注解、并发(CAS、乐观锁、ABA、ThreadLocal、synchronized、Java内存模型、线程池、引用类型)、IO、JVM、JMM等等。
存储基础:MySQL、NOSQL、分库分表、SQL优化、索引、分布式主键、事务隔离级别ACID、数据结构、最左匹配等。
B、Spring
事务、IOC、AOP、循环依赖、Spring Cloud、Spring父子容器、动态代理(Java、cglib)等。
C、中间件基础
消息队列:消息队列使用、重发解决、幂等设计、分布式锁、消息堆积、消息模型。
相关中间件实现原理:掌握一个RPC框架实现原理(例如服务发现、治理、路由、优雅下线、限流降级等等)、掌握一个MQ中间件的实现原理(例如Kafak设计方案、高可用、高并发、重复消费、消息延迟等等)、掌握经常使用的中间件实现原理(例如MyBatis、ZK、Redis等等,在此不一一列举。)
高并发解决经验:如何根据场景设计高并发方案、降级限流、分布式事务、分布式锁、数据一致性等等。
D、问题排查以及性能优化
线上紧急问题处理流程、处理方式(好比FullGC、OOM、进程挂了等等)
性能优化:性能瓶颈、慢SQL、负载太高、CPU太高等等紧急问题处理方案。
E、计算机基础、算法
计算机基础
算法(算法是很是重要的,怎么描述重要程度呢,笔者面试经过美团、饿了么、小米、阿里所有都要手写或者在线算法)
当时本身也是摸索了许久,按照笔者的爱好程度前后排序分别是:书籍、慕课网视频、掘金、简书、微信公众号。其中书籍跟慕课网视频是笔者主要的学习方式,在准备过程当中,笔者针对知识点,先去查找相应的书籍,而后先啃书。下图是笔者当时读的一部分书籍,另一部分找不到了。
此部份内容欢迎扫描下方二维码关注微信公众号查看(掘金不容许发布此部份内容)。
若是您认为本篇文章能给您起到必定的启发做用,请点击右上角关注微信公众号(只是说说话),后续会连载简历准备、面试表达、阿里面试流程、各大公司面试过程、入职阿里一年我学习到了什么等等系列连载,敬请关注。