java学习路径1--转自byr

以过来人的身份谈谈个人感觉。
    首先若是只是ssh框架的话,是没有理由能拿到bat及这层次之上的offer的。由于这样的人太多了,并且框架的使用也比较简单,除非:对该框架很是了解,具有根据公司状况开发适用于公司框架的能力,即要求你对java反射机制、设计模式、多线程要有较深理解,最好熟悉jvm相关机制。(其实对着有较深理解的状况下也不会对“ssh”这个关键字这么在乎了)
    其次,我以为java体系能够分红四个部分,从高到低: 框架开发,网络协议,java语言,jvm。深度倒是递增的。
    从我我的的角度看(我对框架开发不是很了解,只是实习的时候由于公司的要求试用了spring,因此框架就不谈了),对网络协议是须要比较了解就好了,好比分层,每层传输的数据结构,每层的对等关系(port to port,  host to host),而后tcp的三次握手、四次挥手,拥塞控制(快启动、慢恢复等),若是还对http了解的话就更好了,由于大部分的应用开发须要应用到,websocket等也了解下。
    而后是java语言,其中collection接口、map接口是最经常使用也最常问到的,好比hashmap(呵呵),好比implementes queue的类有哪些(应该说出双端队列和阻塞队列的多种实现);而后是重点和难点,也是面试官区别你和通常面试者的地方:JUC包与NIO的理解。这个就比较多了,重点是线程池的理解和异步并发的理解(这里最好着重理解epoll函数与select/poll的区别)。固然,前面说过了,设计模式和java反射也是一般会被问到的,尤为是单例模式,你最好能默写出双重校验锁、enum、内部类三种实现方式。
    最后是JVM的理解,推荐你买本《深刻理解JVM》认真阅读一下吧,好像是一个中国人写的,仍是很不错的,基本都讲到了,主要理解jvm分代回收、java类加载机制,jmm内存模型,最后能扯点并发优化固然更好了。这本书里中间好多降到了java字节码的部分,你能够不用记住,可是看一遍有个映像是最好的。面试的时候通常你能很是清楚的描述分代回收机制的话就能够默认你对jvm很熟悉了,若是还了解jmm,可以描述的话应该就彻底达到了阿里终面的水平了。。。
    最后,就是除开语言能力以外的能力了,着重体如今 算法、新兴技术。     算法各自看各自造化了,我只看了《编程之美》中间数字和字符串的两章,感受受益不浅,若是能再看看《剑指offer》(不喜欢这本书,感受太功利了,根本就是历年笔试题集合嘛,哈哈)就更好了,而后就在leetcode上刷刷题吧。     至于新兴技术,最好是跟你项目相关的技术,结合我本身的状况,主要是把nosql了解了一下,redis, cassandra, mangodb, neo4j,以及一致哈希、类聚、mapreduce等,必定要有集群部署实验,推荐根据《nosql精粹》认真学习一下。而后我在vmware实习了,对vmware的vchs产品的架构了解了一下,对本身之后再服务器开发有很是大的帮助(其实就是在吹本身项目的时候先“升级”一下)。     其实,语言都是通用的,感受java对比c++主要是在编译层面多了不少安全的check,在oo设计上有些不一样,主要是由于jit。     最最后,若是选择java,通常作高性能中间件,后台开发之类的,若是选择c++,呵呵,都能作!并且还有游戏开发等是专门针对c++招生的。。。     好了,本身作选择吧。 【 在 tyr1235831 的大做中提到: 】 : Lz研二狗,明年找工做,看到师兄师姐找工做找的如此痛苦,我也开始审视本身,要早作准备。 :   奈何lz技术渣,在实验室一年只作过一个web的项目,并且感受有些拿不出手的那种。其实Lz实验室的项目跟web彻底不相关,可是恰好就被分配到了这个任务,就作下来了,并且基本都是拿之前的东西改的。 :   因此下定决心好好学Java。其实之前就学过,只是学的不认真,不少都是徒有其表,再学一遍发现本身真的啥都不会!如今打算把Servlet、JSP学一学,再学主流的框架,主要是ssh吧,把本身以前的项目用这些高大上的框架包装一下(ps:看以前师兄的简历他貌似就是这么作的!) : ...................
相关文章
相关标签/搜索