java程序员的自我修炼--冲刺知名互联网企业

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章节

以上六个方面,在Java高级程序员面试中,必然会被考察。去年参加了京东,大众点评,去哪儿和阿里巴巴的面试。陆续都到了这些公司的offer,最终选择了阿里巴巴。在这些互联网公司面试中,都有共同的特点,都要求面试人员Java基础扎实,深入开源,能够熟悉使用主流的缓存框架,对技术有热情,学习能力强。

面试技巧:

首先没有捷径,没有宝典,知识是不断积累的过程,临时抱佛脚是不会成功的。

关于简历:简历非常重要,其中技能和项目 一定要写自己熟悉掌握的,面试过程中会根据你写的技能,逐项考察的。

面试时 要自信 不要慌张。最好在面试自己中意的公司前,先找其他公司 先面试下,用以积累经验,查缺补漏。

最后,阿里巴巴社招及2016年的实习生火热内推中,如有感兴趣的同学,投简历到 [email protected] 中,我将以最快的速度给您答复。

分享是一种态度,学习是一种精神!2015 祝大家越来越好

时间: 2024-11-15 05:22:25

java程序员的自我修炼--冲刺知名互联网企业的相关文章

论程序员的自我“修炼”

Q:ada最近看新闻了吗奥巴马在接受电视采访的时候说所有人都应该更早的学习如何编程,其实随着全民编程时代的到来,运用一门程序设计语言编程对于大多数程序员来说更是小菜一碟,但是如何更上一层楼成为一名专家级的软件开发者呢? A:通常啊对于一个IT从业者,让你谋得工作的也许是技术能力,但有助于提升职业生涯的却是软技能.你不可能一辈子只做开发,这是IT行话,步步高升的人都是那些发表文章.在会议上积极发言以及关注客户的员工(程序员).通常情况下,企业CIO或多或少都具备人文社科专业学历背景,原因就在于其在

程序员的自我修炼

1:学会如何学习 学无止境. 2:制定日常规划 我以前的生活常常没有规划,但是制定计划会让生活和工作清晰而不再会有无所事事感. 每天花20分钟左右通过有道云笔记或文本文档制定将一天主要事情按轻重缓急计划好, 然后,晚上睡前每项核对和记录进度! 3:改善健康 睡眠和工作对于保持最佳的脑功能状态非常重要.我觉得自己不应该再拿年轻人不需要运动为借口逃避锻炼了. 4:练习面试 我特别赞同这一点.面试也是一种技能,但很多人往往不能意识到这一点.此外,经常性地做一些代码挑战也有助于在工作面试中取得成功. 5

Java程序员修炼之道之预告片

从去年(2013)大概9月份开始,到上个月结束,我在深圳招聘一个Java程序员,要求会写Java的,英文能沟通的.我的要求很简单: 一个只实现了功能的函数,重构一下,让其可支持后期扩展,用多态的方式和注册表法(<代码大全2>里面提到了)重构就可以了 对该函数写单元测试,知道怎么写,知道使用Mock工具(Mockito. Jmock. EasyMock随便哪种都行),能正确的对测试方法进行组织 就是这么简单的要求,公司的HR MM陆陆续续给我找了几十个候选人,在北京的.在上海的.在印度的.在珠三

Java程序员修炼之道 之 Logging(1/3) - Logback 配置

写在前面的话: 作为<Java程序员修炼之道>博文的第一个主题Logging,我计划中按照如下三篇来写: Logback的简单介绍和配置 在Java代码中如何使用SLF4J来写日志以及写日志的要点 作为一个程序员,在日常工作中如何分析和挖掘Log. PS:默认生成的目录不对,仔细检查过了,我的h1,h2,h3,h4用的都没错. 1. 缘起 写代码中的日志是一个除了用代码实现功能之外最基础最基础的一个技能了,是一个必须掌握的技能.但是目前为止,关于如何日志的文章和书籍还是不多. 1.1 写日志的

Java程序员修炼之道 之 Logging(2/3) - 怎么写Log

1. 一个最基本的例子 使用Logging框架写Log基本上就三个步骤 引入loggerg类和logger工厂类 声明logger 记录日志 下面看一个例子 //1. 引入slf4j接口的Logger和LoggerFactory import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UserService { //2. 声明一个Logger,这个是static的方式,我比较习惯这么写. private fina

专访《Java程序员修炼之道》作者Ben Evans

转帖这篇文章,很大成分就是认同"保守的设计思想是Java的最大优势"这句话 ------------------------------------------------------------------ [编者按]Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,它几乎是每个程序员的入门语言,而<Java程序员修炼之道>更是深受程序员欢迎的学习书籍.该书作者之一Ben Evans最近参加了上海QCon大会,图灵社区采访了这位大牛级人物. Ben Evans

Java程序员修炼之道 之 Logging(1/3) - Logback 配置(转)

转自紫风乱写:http://www.blogjava.net/justfly/archive/2014/08/10/416768.html,建议大家去原处学习 写在前面的话: 作为<Java程序员修炼之道>博文的第一个主题Logging,我计划中按照如下三篇来写: Logback的简单介绍和配置 在Java代码中如何使用SLF4J来写日志以及写日志的要点 作为一个程序员,在日常工作中如何分析和挖掘Log. 1. 缘起 写代码中的日志是一个除了用代码实现功能之外最基础最基础的一个技能了,是一个必

Java程序员修炼之道 之 Logging(3/3) - 怎么分析Log

1. 说明 作为一个程序员我们经常要做一件事情:获取某个Log文件,从其中找出自己想要的信息.本文总结了我在工作中使用了哪些工具来分析Log文件获取我想要的信息,我最近几年的工作环境都是服务器在Linux上,工作机是Windows, 所以我用的工具主要是Linux上的一些命令行工具,当然他们在Windows上也可以用,具体看下面的工具篇. 先声明,我只是非常普通的Linux用户,所以如果有些Linux命令或者工具用的不高效,请大家教育我. 题外话:我的观点是作为一个Java程序员,只需要在自己工

Java程序员修炼之道 之 单元测试

序 单元测试是一个非常好用的工具,是一个Java程序员修养的一部分.从04年开始,我就开始在项目实践中使用单元测试.十几年来,参与的项目基本上都或多或少的使用了单元测试,多的能有100%覆盖率的要求,少的也要覆盖主要代码,发现这个实践在提高软件质量和开发速度上还是很有好处的.在和朋友同事的交流中,发现有很多项目没有使用单元测试,也有很多程序员不会写单元测试,但是大家对这个都很有兴趣.所以我想把自己掌握的关于单元测试的技能(架构.设计和技术)和实施策略分享一下.当然,要是有那个企业愿意要求我去做相