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

3 篇文章 0 订阅
3 篇文章 0 订阅

     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高级程序员面试中,必然会被考察。去年参加了京东,大众点评,去哪儿和阿里巴巴的面试。在这些互联网公司面试中,都有共同的特点,都要求面试人员Java基础扎实,深入开源,能够熟悉使用主流的缓存框架,对技术有热情,学习能力强。

面试技巧:

     首先没有捷径,没有宝典,知识需要不断的积累。

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

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

最后,阿里巴巴社招(杭州,北京,上海,深圳,广州,成都)火热内推中:

Java岗位要求:
1. JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解;
2. 3年及以上使用JAVA开发的经验,对于你用过的开源框架,能了解到它的原理和机制;对Spring,ibatis,struts等开源框架熟悉;
3. 熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题;
4. 掌握多线程及高性能的设计与编码及性能调优;有高并发应用开发经验;
5. 掌握Linux 操作系统和大型数据库(Oracle、MySql);对sql优化有丰富的经验;
6. 学习能力强,适应能力好;具备耐心/细心的品质;
7. 喜欢去看及尝试最新的技术,追求编写优雅的代码,从技术趋势和思路上能影响技术团队

大数据岗位要求:
岗位要求:
1. 精通Java语言,包括JVM核心工作原理,性能优化,系统调试等;
2. 熟悉web应用系统开发核心技术,对主流开源框架如Struts、Spring、hibernate等有深入的了解;
3. 2年以上的架构设计及技术选型工作经验;
4. 精通实时系统开发,有丰富的实时系统的开发及性能调优经验;
5. 熟悉大数据平台如Hadoop、Hive、HBase等的开发及使用;
6. 有技术热情,关注大数据技术前沿动态;
7. 熟悉Scala语言及Spark平台者优先

算法岗位要求:
岗位要求:
1. 计算机或相关专业硕士以上学历
2. 良好的逻辑思维能力,和数据敏感度,能能够从海量数据中发现有价值的规律
3. 具备大规模推荐系统的研发经验(推荐算法设计和实现/推荐系统评估方法研究)
4. 熟悉大规模数据挖掘、机器学习、自然语言处理、分布式计算等相关技术,并具备2年及以上实际工作经验
5. 优秀的分析和解决问题的能力,对挑战性问题充满激情
6. 具备良好的团队合作精神,较强的沟通能力,具备良好的技术领导能力
7. 熟悉C/C++语言编程,对数据结构和算法设计有较为深刻的理解
8. 具备搜索引擎、广告投放、反作弊相关技术的知识和经验
9. 有大规模用户数据或互联网内容数据处理经验者优先

如有感兴趣的同学,投简历到 liuxiaoyi215@163.com 中,也可加QQ:526844395 .我将以最快的速度给您答复。

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

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值