开发必备要求
如果你想进入一线互联网公司, 进入阿里, 百度等互联网公司, 以下我统称为必备要求, 必须掌握. 如果你抱有侥辛心理, 技术的面试的首轮, 也许都过不了. 如果以下知识点你掌握的不牢固的, 还需要加强, 如果还没有涉及到, 还需早日掌握. 面试的过程中或多或少都要接触到, 千万别抱以幻想.
1.Java 语言基础
java 语法基础
java 类与对象
java 继承与多态
面向对象高级特性
异常处理
多线程
输入与输出 IO
泛型, reflection,annotation;
2.Java 基本类库
java.lang 包: 主要含有与语言相关的类. java.lang 包由解释程序自动加载, 不需要显示说明.
java.io 包: 主要含有与输入 / 输出相关的类, 这些类提供了对不同的输入和输出设备读写数据的支持.
java.util 包: 包括许多具有特定功能的类, 有日期, 向量, 哈希表, 堆栈等, 其中 Date 类支持与时间有关的操作.
java.NET 包: 含有与网络操作相关的类, 如 TCP Scokets,URL 等工具.
java.beans 包: 定义了应用程序编程接口 (API),Java Beans 是 Java 应用程序环境的中性平台组件结构.
... 等等
3.Java 高级特性和类库
java 类加载器 class loader
java 程序运行的基础知识, java 编译后的 bytecode 的整个运行机制, 这一点对应. net 的 IL(intermediate language).
理解 Java nio, 关于这一点网上有非常多的教程, 这一条需要重点掌握, 对于高并发的掌握很重要.
java juc(java.util.concurrent) 等等
4.Java 多线程编程
Java 线程: 概念与原理
Java 线程: 创建与启动
Java 线程: 线程栈模型与线程的变量
Java 线程: 线程状态的转换
Java 线程: 线程的同步与锁
Java 线程: 线程的交互等等
5.Java 网络与服务器编程
网络结构
6.TCP/IP 协议
JVM 原理和调优
JVM 最重要的三个部分必须要非常清楚, 内存划分, class 加载机制以及 GC 策略. 搞清楚这三部分不仅仅是为了面试, 也是为了让你对于 Java 有更深刻的理解, 这对于你的 Java 生涯非常有帮助.
内存划分简单说分为三个部分, Young Generation(年轻代),Old Generation(年老代) 以及 Perm Generation(永久代). 其中的 Young Generation(年轻代), 又分为 Eden,From 和 To, 其中 From 和 To 又统称为 Survivor Spaces(幸存区).
关于 classloader 机制的学习, 可以结合 tomcat 去学习, 了解清楚 tomcat 的 classloader 机制, 看 tomcat 是如何保证各个 App 之间的类隔离的. 如果可能的话, 看一下 tomcat 中 classloader 的源码, 当中也包含了与 tomcat 类加载机制相似的部分.
至于 GC, 需要清楚 GC Roots 都有哪些, 以及如何判断一个对象可以被回收. 此外, GC 的算法和策略也要有大概的了解
架构筑基
大家都知道, 性能一直是让程序员比较头疼的问题. 当系统架构变得复杂而庞大之后, 性能方面就会下降, 如果想成为一名优秀的架构师, 性能优化就是你必须思考的问题.
所以性能优化专题从 JVM 底层原理到内存优化再到各个中间件的性能调优, 比如 Tomcat 调优, MySQL 调优等, 让你洞悉性能本质, 全面认识性能优化, 不再只是旁观者.
高性能架构
有了大牛的代码功底之后, 接下来可以更好地学习分布式架构技术.
透彻理解分布式架构的好处和优点必然性, 适应市场需求, 能够去找一些更大的平台发展, 提升自己的综合技术能力和薪资.
了解从传统架构到分布式架构演变过程所带来的技术变革, 将理论和实战相结合, 透彻理解分布式架构及其解决方案.
从分布式架构原理, 到分布式架构策略, 再到分布式架构中间件, 最后在加上分布式架构实战, 让程序员可以在技术深度和技术广度上得到飞跃的提升, 成为互联网行业所需要的 T 型人才.
微服务
随着业务的发展, 代码量的膨胀和团队成员的增加, 传统单体式架构的弊端越来越凸显, 严重制约了业务的快速创新和敏捷交付. 为了解决传统单体架构面临的挑战, 先后演进出了 SOA 服务化架构, RPC 框架, 分布式服务框架, 最后就是当今非常流行的微服务架构.
微服务化架构并非银弹, 它的实施本身就会面临很多陷阱和挑战, 涉及到设计, 开发, 测试, 部署, 运行和运维等各个方面, 一旦使用不当, 则会导致整个微服务架构改造的效果大打折扣, 甚至失败.
开源框架
这张图详细介绍了源码中所用到的经典设计思想及常用设计模式, 先打好内功基础, 了解大牛是如何写代码的, 从而吸收大牛的代码功力.
结合 Spring5 和 MyBatis 源码, 带你理解作者框架思维, 帮助大家寻找分析源码的切入点, 在思想上来一次巨大的升华.
团队协作
一名优秀的架构师必须有适合自己的兵器, 也就是工欲善其事必先利其器, 不管是小白, 还是资深开发, 都需要先选择好的工具. 工程化专题的学习能帮助你和团队提升开发效率, 让自己有更多时间来思考.
Git: 可以更好地管理你和你团队的代码.
Maven: 可以更好地管理 jar 包和项目的构建等.
Jenkins: 可以更好地持续编译, 集成, 发布你的项目.
Sonar: 一个开源的代码质量分析平台, 便于管理代码的质量, 可检查出项目代码的漏洞和潜在的逻辑问题 (提升代码的质量, 更加高效地提升开发效率).
B2C 项目实战
电商项目目的是把所学的分布式, 微服务, 性能调优等知识运用起来, 只有在项目中你才能巩固知识, 提升自己. 实践电商项目会利用云服务器搭建真实的开发和部署环境, 让你从零到项目实战, 体验真实的企业级项目开发过程, 让你具备独立开发和搭建分布架构系统的能力.
喜欢这篇文章的朋友可以点个喜欢, 也可以关注一下我的个人专题: Java 成长之路
QQ 群搜索 "708-701-457" 即可免费领取更详细的技能学习大纲以及各种学习资料以及面试资料
来源: http://www.jianshu.com/p/e2f32b560253