这是我一位非计算机专业学弟的转行经验分享,用了8个月时间成功把自己熬成了大厂正式程序员一枚,我问了他的学习方法,下面分享给大家,以下为他的转述:
关于基础:这是非常非常非常非常重要的,只要基础好了,框架什么的你自己都能写,还学什么框架(学框架更加快),那什么属于基础呢?我觉得有以下东西,数据结构、计算机网络、数据库、操作系统。这是计算机基础,在java的话,我觉得应该是,IO,NIO,并发(包括concurrent包下的),集合框架(理解原理,多看看源码),反射。面对对象的思想,OOP,OOA,OOD。JVM,JMM(这两个虽然实战经验很少,当时一定要去学习了解一下你就知道什么时候用volatile什么时候用sync)。
关于提高:在基础上面如何提高自己呢?我们有基础之后,我觉得需要学习设计模式,深入的学习数据库(包括,索引原理,ACID,事务隔离机制,触发器,存储过程等等,数据库的锁机制,行锁,表锁,悲观,乐观,),在这个阶段要学会看看源码,把IOC,AOP的原理弄清楚,Spring是怎么找到bean,怎么加载。怎么解析等等,。当你遇到此类问题,你可以马上就找到问题在哪里,这就是看源码的好处。Aop也不能只是了解动态代理的原理,还要知道什么是aspect,pointcut等等,为什么AOP联盟要定义这些接口…这个时候你就要知道什么是解耦合,什么是高类聚。怎样让代码变得可重用行和扩展性更高,设计模式带给你的好处将是质的变化。
关于深入:其实到这里都是看自己了吧,了解什么是SOA,OSGI。什么是分布式(分布式数据库,分布式文件系统),负载均衡(lvs,Ngnix等)。了解云计算,了解实时计算。知道spark,hadoop,storm。什么是虚拟化技术。这方面我也只是入门,不敢多写!
平常怎样学习:
1、给自己定下目标。
2、多看看好的博客。
3、多了解新的技术(就算你不是学前端的你也要知道前端貌似有个AngularJS,扩宽眼界)
4、多写代码、
5、少去java吧水
6、坚持!!!!!!!!!!!!!!!!!!。
送大家一句话:越努力,越幸运!
我也收集了一些阿里巴巴招聘的题目(都是最近周围同学的面试经验)
最后历年来阿里面试题目相关知识点分享:
由于文案限制,本文所提到的阿里巴巴Java面试笔记+1000道互联网工程师485页+Java高级面试知识点,需要完整版的朋友可以留言。
分布式
-
一、大型网站系统的特点
-
二、大型网站架构演化发展历程
-
三、拆分 VS 集群
-
四、微服务 VS SOA
-
五、前后端完全分离与Rest规范
-
六、CAP三进二和Base定理
中间件
-
一、缓存
-
二、消息队列
-
三、搜索引擎
大数据与高并发
一、秒杀架构设计
二、数据库架构发展历程
三、MySQL的扩展性瓶颈
四、为什么要使用NOSQL NOT ONLY SQL
五、传统RDBMS VS NOS QL
六、NOSQL数据库的类型
七、阿里巴巴中文站商品信息如何存放
八、数据的水平拆分和垂直拆分
九、分布式事务
十、BitMap
十一、Bloom Filter
十二、常见的限流算法
十三、负载均衡
十四、一致性Hash算法
数据库
-
一、数据库范式
-
二、数据库开发规范
-
三、数据库索引
-
四、MyISAM vs InnoDB
-
五、并发事务带来的问题
-
六、事务隔离级别及锁的实现机制
-
七、MVCC(多版本并发控制)
-
八、间隙锁与幻读
设计模式与实践
-
一、OOP五大原则SOLID
-
二、设计模式
-
三、代理模式
-
四、面向切面编程(AOP)
-
五、工厂模式
-
六、控制反转IOC
-
七、观察者模式
-
八、Zookeeper
数据结构与算法
一、树
二、BST树
三、BST树
四、AVL树
五、红黑树
六、B-树
七、B+树
八、字典树
九、跳表
十、HashMap
十一、ConcurrentHashM ap
十二、ConcurrentLinked Queue
十三、Topk问题十四、资源池思想
十五、JVM内存管理算法
十六、容器虚拟化技术,Doocker思想
十七、持续集成、持续发布,jenkins
面试题举例
-
一、设计一个分布式环境下全局唯一的发号器
-
二、设计一个带有过期时间的LRU缓存
-
三、设计一个分布式锁
-
四、设计一个分布式环境下的统一配置中心
-
五、如何准备HR面试
面试宝典大合集
由于文案限制,本文所提到的阿里巴巴Java面试笔记+1000道互联网工程师485页+Java高级面试知识点,需要完整版的朋友可以留言,祝大家都能找到自己满意的工作!