liuxiaoyi216的专栏

2015年初收到了阿里的offer,“理想这东西是可以有的,万一实现了那”.下面分享下这一年多的的学习经历,希望能帮到大家。

要成为高级程序员,至少需要掌握下面六方面的知识,具体如下图:

第一java基础

这块是最基本 也是最重要的技能,细分为以下六点:

1.Collection和Map

这块是面试时首先考察的部分,如 ArrayList和LinkedList的区别,CopyOnWriteArrayList是如何实现高并发的;HashMap(重点)、LinkedHashMap与TreeMap各自的特点与区别,ConcurrentHashMap的底层实现以及并发机制;HashSet、LinkedHashSet与TreeSet各自的特点与区别。

推荐阅读“Java程序性能优化”的第3章和第4章

2.多线程并发控制,锁优化和线程池

首先要熟悉并发控制的方法 如synchronized、重入锁,读写锁、信号量 的各自的机制与优缺点;接着要熟悉 ”锁”的性能及优化方法;最后要掌握JDK自带的线程池框架 Executor和ThreadPoolExecutor的基本使用和原理。

推荐阅读“Java程序性能优化”的第4章

3.JVM 内存区域,垃圾回收

这块也是面试时重点考察的,要非常清楚JVM的内存模型、内存分配参数 垃圾收集的算法、垃圾收集器的分类

推荐阅读“Java程序性能优化”的第5章

4.JVM调优工具

这块重点会考察 遇到实际的OOM或者系统瓶颈时 通过什么工具解决,主要通过Linux命令行工具、JDK命令行工具(重要)、与可视化工具JConsole和Visual VM。

推荐阅读“Java程序性能优化”的第6章的前5小节

5.类加载机制和类加载器

掌握类加载机制和类加载器机制 推荐阅读“深入理解Java虚拟机”第7章

6.设计模式

掌握常用的设计模式。这块面试的基本会挑一到两个设计模式进行讲解 。

推荐阅读“深入浅出设计模式”

对于这块内容的提升,我主要看得是下面三本书:

1)Java程序性能优化 点击下载

这本书真心不错,我特地买了这本书,看了有3-4遍,受益匪浅啊。

2) 深入理解Java虚拟机 点击下载

对于Java虚拟机相关知识讲解的很透彻,建议阅读2,3,4,5,7,9,12,13章,耐着性子阅读,保你受益匪浅。

3)深入浅出设计模式 点击下载

第二 网络开发

Java网络开发,也是高级开发人员必备的技能,主要包含四个方面:

1.网络编程基础

这块主要掌握网络编程的基本用法,如ServerSocket,Socket,SocketChannel和ServerSocketChannel的基本用法和区别。

推荐阅读“java网络编程精解”的第3,4,5,6,8章

2.HTTP协议

这块主要掌握HTTP协议的概念,request和response包含哪几个部分,还有常见的状态码的含义(如301和302的区别)等。

推荐阅读“HTTP协议详解”

3.IO和NIO区别

重要,主要考察的是NIO比IO的优势在什么地方,NIO是怎么实现非阻塞的,非阻塞底层实现的方式有哪几种?

推荐阅读“Java NIO”

4.netty

Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序,netty提供网络编程中问题的各种解决方案。 这块要掌握netty是什么、他的基本用法、可靠性分析、线程模型等相关知识。

推荐阅读“Netty in Action“ 对于这块要着重掌握NIO和常见的网络编程开源框架(如netty,mina等)。

我主要看以下几本书,来掌握这部分知识的:

1)java网络编程精解 点击下载

2)HTTP协议详解点击下载

3)Java NIO点击下载

4)Netty in Action 点击下载

里面包含了netty in Action以及两篇可靠性分析文章,可靠性分析、线程模型 这两块是重点要掌握的内容。

第三 开源框架

1.spring框架

重要,这块是企业项目中 使用非常广泛的框架,要从 IOC,AOP, Spring MVC、Spring事务 这几个方面来掌握spring,深入开源 掌握它的原理和实现。

推荐阅读“spring 技术内幕“ 的2,3,4,6章节

2.memcache

重要,高效分布式缓存框架,主要从memcache的优势和使用领域,服务端原理,是否支持同步,分布式算法,如果优化等方面提问。

推荐阅读“memcache手册“ 全文

3.redis

重要,redis是一个key-value存储系统,也是一个分布式的缓存架构,它比memcache更强大,更多的数据结构,持久性。这方面的很大可能会拿memcache进行对比和选型。

推荐阅读“redis入门指南”,“redis实战”

这三块也是面试时,重点考察的知识点,,一定要掌握底层原理。我主要看以下几本书,来掌握这部分知识的:

1)Spring技术内幕 点击下载

2)memcache 手册 点击下载

3)redis 入门指南 点击下载

4)redis实战点击下载

5)memcach和redis区别 文章一 文章二

第四 项目经验

重要,从自己做过的项目中找出一到两个,有技术亮点项目,进行详解。如使用了memcache,你要知道项目为什么选择了memcache 他的优势,底层原理,后期如何优化的;项目中遇到的问题,如何解决的;你在项目中的角色;项目目前存在的问题,未来将如何优化。

我这边通常在面试的时候,会通过项目中的memcache,来讲解和redis的区别,底层实现等问题。

第五 apache

nginx这块在京东面试的时候,被问到过,主要考察nginx相比tomcat等传统的服务器的优势在哪里,有什么区别。

建议阅读下面几篇文章:

Apache与Nginx的优缺点比较

Nginx介绍

nginx的优缺点

第六 linux与数据库

1.数据库

重要,至少要熟练掌握一门数据库语言,我熟悉的是oracle。

推荐阅读“oracle 编程艺术”

2.linux

这里会考察,常见的shell脚本命令,文本处理和查看命令,流量和端口检测命令,Awk使用。

推荐阅读“Shell脚本学习指南”

我主要通过下面两本书,来学习掌握的:

1)oracle 编程艺术 点击下载

着重阅读6,8,9,11,13章节,有余力的可继续阅读3,4,5章。一般oracle锁类型 、分区 和 索引 是重点考察的对象。

2)Shell脚本学习指南 点击下载 着重阅读 3,4,5,9章节

耿耿于怀着过去和忐忑不安着未来的人,也常常挥霍无度着现在。

liuxiaoyi216的专栏

相关文章:

你感兴趣的文章:

标签云: