打个比方吧, 这位牛人 23 岁毕业, 做了两年嵌入式 C 编程, 25 岁时, 突然对 Java 的优雅设计情有独钟, 而正好这时, 公司有个 Java 项目, Java 技术之旅开始了.
1, 最开始三个月, 开始接触 Java, 比如接口, 继承, 封装等, 买了本Think in Java天天啃, 并且同时做项目实践. 猛学了三个月后, 对面向对象编程 OOP 熟悉了, 原来脚本式思维和对象思维确实有差别.
2, 三个月后, 开始啃Core Java,Effective Java, 对 Java 有了更深入的了解, 回调的概念也有了, 逐渐接触到更高的层次, 面向对象设计 OOD, 这时又看了一本书Head First Design Patterns, 感觉设计模式特别有趣. 再写代码, 已经不是面向实现编程, 而是面向设计编程. 感觉写 Java 代码太简单了. 因为每天还有 Java 的 web 项目开发, 逐渐了解了 WebWork 等 Web 框架的使用.
3, 六个月过去了, Java 瘾越来越大, 逐渐开始往更高层次攀登, 这时, 又看到两本书企业应用架构模式,UML 和模式应用: 面向对象分析与设计导论, 已经开始从设计往面向对象分析 OOA, 架构攀登了. 因为大半年的 Java 企业开发, Hibernate 已经比较熟悉了, 了解 Hibernate 背后的持久化技术, Spring 背后的 IoC 容器, 组装技术原理.
4, 一年后, 他逐渐脱离了 Java 语言, 开始看这类书面向模式的软件体系结构 卷 1. 这个阶段持续了一年, 并且对以前的学过的设计模式, 如命令模式, 观察家模式有一个更深入的了解. 因为两年的企业应用开发, 他已经熟悉了 Java EE 的十来种规范, 对 Web 容器和 Servlet 规范的关系有很深的理解, 对 JDBC 规范和数据库驱动程序的关系也很了解.
他正在经历 Java 开发的快速上升期, 对应于曲线的一年时间点.
5, 两年后, 他突然发现, 他学的很多东西都没用, 都是纸上谈兵, 比如, 在自己的企业应用开发中, Command 模式, Template 从来没有用过. 他还发现, 本来 100 行写的一个功能, 花了 1000 行, 就是为了所谓的设计优雅性: 可扩展. 而实际上, 还没有等到扩展, 该系统就已经废掉了. 他发现原来设计模式主要用在系统框架开发, 而不是应用开发, 一般开发人员不用, 只需要理解. 他还发现, 他认真学过的 JMS,JCA,JTA,EJB 像是从来没有用过. 突然他想通了, JMS,JTA 可能是一种无奈的选择: 处理遗留系统.
当他开始对自己两年学到的知识进行反省, 批驳时, 他已经有了技术辨别能力, 知道技术推广也不是那么纯洁, 也有商业炒作. 知道 Java 虽然是 Sun 公司发明的, 但 Sun 公司没有赚到钱, IBM 却赚得盆满钵满, 最后 Sun 公司竟然卖给了技术商人 Ellison 所创立的 Oracle 了, Java 之父 James Gosling 也混得并不好, 从 Sun 公司到 Oracle, 最后还不欢离开了.
这时候, 他已经不限于 Java 了, 开始了解 C#,Ruby, 发现 Java 可能并不太适合互联网开发, PHP 可能更适合, ROR 开发更快但需要在牛人的手里. 两年后的这个时候, 他才开始真正驾驭 Java, 他已经不再限于 Java, 而是企业应用.
这个时候, 技术提升的速度越来越慢了 (曲线的三年分界点), 因为不知道还可以学习什么新技术. 因为他发现, 原来这些东西, 最深层次的, 都是几十年前的技术概念: 消息系统, 异步通讯, 事件机制等等....
6, 三年过去后, 他已经不再限于企业应用, 而是解决方案, 技术只是一种解决问题的方式, 比如企业信息化成功的关键, 恐怕不是技术, 而是企业本身的业务流程成熟度; 企业信息化成功的关键, 不是处理好了技术, 而是处理好了几位企业高官的利益. 这时候, 对 IT 行业新闻, 逐渐有判断力和免疫力.
他突然发现, 技术的力量很有限, 商业才是最大的驱动力量. 而此时, 他已经不再钻研技术细节, 比如 JVM 的垃圾回收机制, 如果他在一个技术研发型公司, 比如普元, 可能还会深入挖掘技术. 如果他在东软这类行业应用开发企业, 这类企业的口号是 Beyond Technology, 这时候他再执迷于技术而轻业务, 恐怕不太受欢迎.
这个时候, 技术的提升, 就会进入一个平台期, 也就是曲线的水平部分. 再平稳发展, 技术大牛就开始炼成了
下面是我收藏的一个系统化学习的课程体系
每晚会有免费的课程直播, 讲课的老师都是在各大互联网公司工作至少十年的技术专家, 不但会给我们讲解上面所提到的, 还会教我们最重要的学习思路. 下面是我截取的部分课程表.
跳槽时时刻刻都在发生, 但是我建议大家跳槽之前, 先想清楚为什么要跳槽. 切不可跟风, 看到同事一个个都走了, 自己也盲目的开始面试起来 (期间也没有准备充分), 到底是因为技术原因 (影响自己的发展, 偏移自己规划的轨迹), 还是钱给少了, 不受重视.
准备不充分的面试, 完全是浪费时间, 更是对自己的不负责 (如果 title 很高, 当我没说).
今天给大家分享下 chenssy 在这次跳槽中整理的 Java 面试大纲, 其中大部分都是面试过程中的面试题, 可以对照这查漏补缺, 当然了, 这里所列的肯定不可能覆盖全部方式.
项目介绍
大部分情况, 这是一场面试的开门题, 面试官问这个问题, 主要是考察你的概述能力和全局视野. 有的人经常抱怨自己每天在堆业务, 但没有成长. 事实上, 很多情况下确实在堆业务, 但并不是没有成长的. 并非做中间件或者技术架构才是成长, 例如我们的需求分析能力, 沟通协作能力, 产品思维能力, 抽象建模能力等都是一个非常重要的硬实力.
如果你想学好 JAVA 这门技术, 也想在 IT 行业拿高薪, 可以参加我们的训练营课程, 选择最适合自己的课程学习, 技术大牛亲授, 7 个月后, 进入名企拿高薪. 我们的课程内容有: Java 工程化, 高性能及分布式, 高性能, 深入浅出. 高架构. 性能调优, Spring,MyBatis,Netty 源码分析和大数据等多个知识点. 如果你想拿高薪的, 想学习的, 想就业前景好的, 想跟别人竞争能取得优势的, 想进阿里面试但担心面试不过的, 你都可以来, q 群号为: 230419550
注: 加群要求
1, 具有 1-5 工作经验的, 面对目前流行的技术不知从何下手, 需要突破技术瓶颈的可以加.
2, 在公司待久了, 过得很安逸, 但跳槽时面试碰壁. 需要在短时间内进修, 跳槽拿高薪的可以加.
3, 如果没有工作经验, 但基础非常扎实, 对 java 工作机制, 常用设计思想, 常用 java 开发框架掌握熟练的, 可以加.
4, 觉得自己很牛 B, 一般需求都能搞定. 但是所学的知识点没有系统化, 很难在技术领域继续突破的可以加.
5. 阿里 Java 高级大牛直播讲解知识点, 分享知识, 多年工作经验的梳理和总结, 带着大家全面, 科学地建立自己的技术体系和技术认知!
来源: http://www.jianshu.com/p/d910a2c31c91