前言
你的努力,终将成就无可替代的自己
本科毕业后就一直从事Java开发的工作,和多数人一样,最开始从事crud的工作,看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。
一年半后开始沪漂生活,又摸爬滚打了一年半,薪资基本上在16K。为了进大厂,得到更多的学习机会,开始了系统的学习,也是为了自己到所谓的“35岁”之后,也能在老家恰一口好饭。
努力也没有白费,8个月时间的系统性学习成功上岸Alibaba,直接涨薪14K,下面分享一下我的学习指南,面试真题以及个人心得体会。(晒一下入职offer)
阿里面试真题(3轮技术面 + 1轮HR )
一面(电话面+后期在线coding)
①你们为什么要使用mongdoDb?你们的这个系统中涉及到哪些表?
②hytrix 的实现原理是什么?隔离策略有哪些?你们使用的是哪一些?你们项目中哪些地方使用到了,使用场景是什么?为什么要使用?
③spirng 源码。
④rocketMq 的设计理念,数据存储,设计思想等。
⑤ConcurrentHashMap的底层实现原理
⑥你线上问题解决经验是什么?遇到了什么问题?应该怎么去解决?
⑦在线编码: 两个有序链表,合并成一个链表,然后进行算法的时间复杂度,空间复杂度分析。
二面(电话面+后期在线coding)
①tcp协议和uDP 协议的区别是什么?
②3次握手和4次挥手的过程是什么样的?
③怎么保证接口的幂等性?
④mysql的存储引擎的数据结构是什么?相比其余的数据结构,有什么优缺点?
⑤说一下你对SpringCloud,SpringBoot,Spring的理解
⑥java 在编译和运行过程中分别作了什么?
⑦在线编码: 给定一个字符串,单词之间以空格分隔,要求里面的单词倒装过来。
三面(电话面,技术交叉面)
①介绍一下springCloud 的组件,各组件的作用,你们是怎么用,你的理解是什么?
②springCloudbus 关联的消息中间有几种?支持哪几种?你觉的什么场景下,会用到springCLoudBus?
③springCloud里面的限流,限流是怎么内部实现的?怎么去挡住多余的请求,怎么实现限流的(线程池的工作原理)?
④什么时候该用mongoDB,什么时候使用mysql?该如何选择?
⑤你做过的项目数据量有多大呢?如果现在数据量特别大,或者一张表一种放不下了,应该怎么处理?分布分表应该怎么做?具体的某一张表怎么拆?(涉及到主键生成,各种主键生成策略对比,数据分片,以及关联数据的存储,主从复制)
⑥java 官方提供的创建的线程池的方式有几种?分别是什么?
⑦你们使用的java 版本是什么?java最新的版本是多少?你们为什么还在使用java8呢?
⑧你们的垃圾回收器是什么的? 为什么是使用CMS而不是G1? 你能介绍一下像CMS垃圾回收器,从对象创建,内存分配到垃圾回收整个过程吗?
⑨介绍一下策略模式,应该怎么用? 它能解决什么问题?从编码领域系统设计方,介绍一下我们怎么去实现一个策略模式?
程序员想要成功,首先要成就自己。
我的学习指南
这份Java笔记内容齐全,包括以下几个方面:
Java筑基(基础):Tomcat+Mysql+设计模式+并发编程+JVM+Netty
开源框架(SSM框架):Spring+SpringMVC+Mybatis
微服务架构:Dubbo、SpringBoot、SpringCloud、Docker
分布式:分布式限流+分布式缓存+分布式通讯(限流:Nignx+Zookeeper/缓存:Redis+MongoDB+Memcached/通讯:RabbitMQ+RocketMQ+Kafka)
性能优化:Mysql优化+Java性能调优+JVM调优+Tomcat调优
这几个方面究竟需要掌握多少?见下文揭晓吧。不过文章篇幅有限,不能全部描述出来,有完整的pdf版,关注公主号:JavaAC,即可
一、Java筑基(基础)
1.Tomcat
2.Mysql
MySQL体系结构和存储引擎
InnoDB存储引擎
索引与算法
锁
事务
性能调优
3.设计模式
24种设计模式与6大设计原则
4.并发编程
Java线程
线程池
生命周期
阻塞队列
CAS
AQS
5.JVM
线程
JVM内存区域
JVM运行时内存
垃圾回收与算法
GC
IO/NIO
类加载机制
6.Netty
Netty原理
Netty高性能
NettyRPC实现
RMI实现方式
Protoclol Buffer
Thrift
二、开源框架(SSM框架)
1.Spring
Spring特点、核心组件、常用模块、主要包、常用注解、第三方结合
Spring IOC、AOP
2.Spring MVC
3.Mybatis
三、微服务架构
1.Dubbo
基于XML配置实现
Dubbo注册中心
Dubbo扩展点加载机制
Dubbo启停原理解析
Dubbo远程调用
Dubbo集群容错
Dubbo扩展点
Dubbo高级特性
Dubbo过滤器
Dubbo注册中心扩展实践
Dubbo服务治理平台
Dubbo未来生态
2.SpringBoot
Spring Boot入门
配置文件
日志
Web开发
Docker
SpringBoot与数据访问
启动配置原理
自定义starter
3.SpringCloud
四、分布式
1.分布式限流(Nignx+Zookeeper)
2.分布式缓存(Redis+MongoDB+Memcached)
3.分布式通讯(RabbitMQ+RocketMQ+Kafka)
五、性能优化
1.Java性能调优
2.Mysql调优
3.JVM调优
4.Tomcat调优
总结
从熟练到精通,从CRUD到架构师,这是一个漫长的过程,需要的是积累,更需要的是坚持。文章中也深刻剖析了,想要进阶成大牛,需要学习的知识有很多,要想完全掌握技术栈,并非一朝一夕,但每天学一点,总有一天能溢出来。
所以,你也想成为人才,那么Java全能笔记必不可少