应届生如何自学 Java、成功拿下腾讯 Offer?

前言

众所周知,鹅厂后台一直以C++为重,面试官也是作C++开发。可是语言只是工具,对代码的理解才是核心。前端

面试时重点考察的是基础知识,以及解题的思考过程。凭借着对Java的理解去回答,受到面试官的承认,最终幸运地拿到offer。nginx

一直以来,经过不少程序员大牛汇集地,学习到了不少经验方法,也少走了不少弯路。感谢这些平台给予个人帮助,同时也分享一下Java学习经验。程序员

Java基础

作Java开发,Java基础是最须要下功夫的一项。在校招时最注重的就是基础,拿不出像样的项目不要紧,可是基础万万不可不牢固。面试

  • 想要基础扎实,看书沉淀是必须的,有一些编程基础的同窗推荐阅读《JAVA核心技术 卷1》,能够跳过图形程序设计、事件处理、Swing、applet以及部分日志章节,若是比较吃力也能够先跳过多线程章节。redis

  • 看完一本书,必定要多加练习去理解和吸取。科班的同窗能够用Java写实验,写的同时必定要多多运用学到的特性。练习阶段各类设计模式套上去用,不要怕笨重,即便是滥用特性和设计模式也是一种有效的学习。算法

  • 有了必定量的编程经验后,能够再回过头将《JAVA核心技术 卷1》速读一遍,查漏补缺。同时咱们开始扩宽咱们的知识领域,开始进行JavaWeb的学习。docker

JavaWeb基础

JavaWeb是一系列技术的综合,也是大多数Java学习者往后的技术方向。及早了解JavaWeb也有利于更深层面理解,Java在完整的应用中,是如何与各个模块交互并发挥做用的。数据库

基础篇包括Servlet和JSP的学习、tomcat的使用、理解MVC分层模式、MySQL的基础用法及JDBC、了解HTTP协议。编程

  • 这部分的学习,我主要经过《Head First Servlets and JSP》这本书。这本书轻松幽默读起来很愉快,可是实在是很厚,并且部分技术已通过时,有时间的同窗能够选读。设计模式

  • 能够看到这部分的内容是很杂且多的,此阶段注重广度的基础学习,往后慢慢深刻。

  • 重点要理解Servlet的原理以及生命周期。在完成这一部分的学习后,能够简单的作个小网站,包括注册登录,增删改查等功能。若是想继续折腾,能够考虑将项目部署在阿里云或者腾讯云上,一个完整可供他人访问的项目,所得到的成就感是非凡的。

Java进阶

Java始终是咱们JavaWeb开发体系中最核心的一环,惟有不停地探索,才能把握住方向和机遇。

  • 在作完一个简单完整的JavaWeb项目后,咱们对代码的认知和理解会提升很多,这为接下来的深刻学习打下了基础。Java圣经《JAVA编程思想》值得仔细品读,做者的功力十分深厚,即便不少内容还没法理解,但每次读完必定会有所收获。一样建议跳过“图形化用户界面“章节,这是一本伴随咱们技术成长的好书,买一本放在旁边,摸着就有底气。

  • 读完编程思想,建议写一个有必定复杂度和代码量的后台项目。能够是一个HTTP服务器,一个大型聊天室,也能够参考个人项目实现一个DBMS:wwwyanxin/wyxDBMS。这一部分要强化咱们的Java基础,同时也为往后的招聘积累项目经验。

  • 作完项目咱们又该看书沉淀技术了,此时我推荐《Effective Java》,这本书并不厚可是干货十足,做者讲述Java的最佳实践和经验规则。它能帮助咱们写出清晰、健壮、高效的代码,同时这本书涵盖了很是多的面试考点,必定要牢记于心!

  • 最后还要深刻学习Java多线程技术以及Java虚拟机原理,这两部分难度较大,理解起来比较抽象。也许往后工做中,咱们不多遇到并发问题,不必定有机会进行JVM调优,可是这部分必定要认真对待,越理解底层写出的代码越高效,查bug时越准确,另外更重要的是面试常考!推荐两本书《Java并发编程的艺术》《深刻理解Java虚拟机》,以及并发编程网重点掌握Java内存模型,各类锁的原理及应用,JVM GC垃圾回收原理。

JavaWeb进阶

围绕整个Java体系学习,咱们要筑起高高的城墙。

  • Linux,如今的服务器基本都是Linux系统,也不存在图形化操做界面。做为开发工程师推荐阅读《The Linux Command Line》,有中文在线免费版本TLCL。

  • 操做系统原理,主要学习进程控制调度、进程通讯、存储和设备管理、文件管理以及系统安全。

  • 数据库,能够买一本《MySQL必知必会》小册子做为基础入门,没有什么理论的堆砌,是一本实践指南。学习数据库原理能够阅读《MySQL技术内幕》,索引优化、事务、锁、范式都是重点。

  • 网络协议,入门能够读《图解HTTP》、《图解TCP/IP》,若是要深刻研究能够读《UNIX网络编程 卷1》和《TCP/IP详解 卷1》。大多数开发者接触HTTP和TCP、UDP、IP协议比较多,因此对总体网络协议栈有个完整了解是必要的。

  • 数据结构与算法,数据结构是算法的基础,必定要清晰明了。算法则是笔试面试中没法绕过的难关,推荐去LeetCode刷题,如今也有了中文官方网站(leetcode-cn.com/)。从easy难度开始…

  • SSM框架,Spring+SpringMVC+MyBatis能够说是开发必备了,但框架只是锦上添花,不要太依赖框架进行学习。当咱们能不依赖任何框架开发完整项目时,才是真正掌握了它。最为重要的是理解Spring的两个特性:IOC反转控制和DI依赖注入。明白实现原理以及为何要使用Spring,只有这样才能在层出不穷的框架中灵活应对,立于不败之地。

加分技能
  • 前端。一些岗位要求全栈,即便不是全栈,懂得前端技术的后台能写出更加合理的接口,与前端工程师合做起来会更顺利,理解项目更通透,解决问题更准确迅速。

  • 学习一门动态语言。动态语言开发起来更灵活迅速,同时比较动态静态语言的特色,能够更好去提炼跳出语言束缚的代码思想,推荐学习JavaScript

  • 热门工具及框架,包括分布式Dubbo、缓存优化redis、nginx、虚拟化技术docker等。通常来讲本科应届生不会要求很高,可是要对热门技术有必定的了解。

文章福利

若是你想将互联网大厂做为本身职业生涯的始发站,那你必定要在这几个月结合对应的资料,用心准备!

小编耗时数周,为你们准备了Java校招资料QQ群:967051845(群内提供的Java技术+面试题目等500+资料集合,将是你不错的学习库。)

相关文章
相关标签/搜索