众所周知,鹅厂后台一直以C++为重,面试官也是做C++开发。但是语言只是工具,对代码的理解才是核心。面试时重点考察的是基础知识,以及解题的思考过程。凭借着对Java的理解去回答,也受到了面试官的认可,最终幸运的拿到offer。

一直以来,通过知乎这个程序员大牛聚集地,学习到了很多经验方法,也少走了很多弯路。感谢这个平台给予我的帮助,同时也分享一下我的Java学习经验。

Java基础

做java开发,java基础是最需要下功夫的一项。在校招时最注重的就是基础,拿不出像样的项目没关系,但是基础必须牢固。

  1. 想要基础扎实,看书沉淀是必须的,有一些编程基础的同学推荐阅读《JAVA核心技术 卷1》,可以跳过图形程序设计、事件处理、Swing、applet以及部分日志章节,如果比较吃力也可以先跳过多线程章节。
  2. 看完一本书,一定要多加练习去理解和吸收。科班的同学可以用java写实验,写的同时一定要多多运用学到的特性。练习阶段各种设计模式套上去用,不要怕笨重,即使是滥用特性和设计模式也是一种有效的学习。
  3. 有了一定量的编程经验后,可以再回过头将《JAVA核心技术 卷1》速读一遍,查漏补缺。同时我们开始扩宽我们的知识领域,开始进行JavaWeb的学习。

JavaWeb基础

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

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

  1. 这部分的学习,我是通过《Head First Servlets and JSP》 。这本书轻松幽默读起来很愉快,但是实在是很厚,而且部分技术已经过时,有时间的同学可以选读。
  2. 可以看到这部分的内容是很杂且多的,此阶段注重广度的基础学习,日后慢慢深入。这里推荐个在线教程:
  • Servlet系列教材 (一)- 基础 - 教程:开发第一个Servlet - how2j.cn
  • mysql系列教材 (一)- 安装mysql-server - how2j.cn
  • Tomcat系列教材 (一)- 教程 - how2j.cn
  • JSP系列教材 (一)- 教程 - how2j.cn
  • HTTP协议系列教材 (一)- 教程 - how2j.cn
  • JDBC系列教材 (一)- Java 使用JDBC之前,先要准备mysql
  • MVC系列教材 (一)- 教程 - how2j.cn

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

部署到Linux系列教材 (一)- 介绍 - 如何把J2EE应用部署到Linux - how2j.cn

Java进阶

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

  1. 在做完一个简单完整的JavaWeb项目后,我们对代码的认知和理解会提高不少,这对接下来的深入学习打下基础。Java圣经:《JAVA编程思想》 值得仔细品读,作者的功力十分深厚,即使很多内容还无法理解,但每次读完一定会有所收获。同样建议跳过“图形化用户界面“章节,这是一本伴随我们技术成长的好书,买一本放在旁边,摸着就有底气。
  2. 读完编程思想,建议写一个有一定复杂度和代码量的后台项目。可以是一个http服务器,一个大型聊天室,也可以参考我的项目实现一个DBMS:wwwyanxin/wyxDBMS 这一部分要强化我们的Java基础,同时也为日后的招聘积累项目经验。
  3. 做完项目我们又该看书沉淀技术了,此时我推荐《Effective Java》,这本书并不厚但是干货十足,作者讲述Java的最佳实践和经验规则。它能帮助我们写出清晰、健壮、高效的代码,同时这本书涵盖了非常多的面试考点,一定要牢记于心!
  4. 最后还要深入学习Java多线程技术以及Java虚拟机原理,这两部分难度较大,理解起来比较抽象。也许日后工作中,我们很少遇到并发问题,不一定有机会进行JVM调优,但是这部分一定要认真对待,越理解底层写出的代码越高效,查bug时越准确,另外更重要的是面试常考!推荐两本书《Java并发编程的艺术》《深入理解Java虚拟机》,以及并发编程网:并发编程网 - ifeve.com 重点掌握java内存模型,各种锁的原理及应用,JVM GC垃圾回收原理。

JavaWeb进阶

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

  1. Linux,现在的服务器基本都是Linux系统,也不存在图形化操作界面。作为开发工程师推荐阅读《The Linux Command Line》,有中文在线免费版本TLCL。那本《鸟哥的Linux私房菜》更适合运维工程师,就不推荐给大家了。学习的时候,可以去阿里云或腾讯云租一个学生服务器,每个月大概10元左右,直接ssh到云服务器上操作,能更好地模拟公司的开发及生产环境。
  2. 操作系统原理,主要学习进程控制调度、进程通信、存储和设备管理、文件管理以及系统安全。这一部分可以通过看教材或者自行找一些网课补充。
  3. 数据库,可以买一本《MySQL必知必会》小册子作为基础入门,没有什么理论的堆砌,是一本实践指南。学习数据库原理可以阅读《MySQL技术内幕》索引优化、事务、锁、范式都是重点。
  4. 网络协议,入门可以读《图解HTTP》《图解TCP/IP》如果要深入研究可以读《UNIX网络编程 卷1》《TCP/IP详解 卷1》大多数开发者接触http和tcp、udp、ip协议比较多,但是对整体网络协议栈有个完整了解是必要的。
  5. 数据结构与算法,数据结构是算法的基础,一定要清晰明了。算法则是笔试面试中无法绕过的难关,推荐去LeetCode刷题,现在也有了中文官方网站:力扣 (LeetCode) 中国官网 - 全球极客挚爱的技术成长平台 从easy难度开始刷起,积累一定题量之后,做算法题会很快找到类型方法。
  6. SSM框架,Spring+SpringMVC+MyBatis可以说是开发必备了,但框架只是锦上添花,不要太依赖框架进行学习。当我们能不依赖任何框架开发完整项目时,才是真正掌握了它。最为重要的是理解Spring的两个特性:IOC 反转控制和DI 依赖注入。明白实现原理以及为什么要使用Spring,只有这样才能在层出不穷的框架中灵活应对,立于不败之地。
  • Spring系列教材 (一)- 教程 - how2j.cn
  • Spring MVC系列教材 (一)- 教程
  • Mybatis系列教材 (一)- 基础 - 入门教程 - how2j.cn

加分技能

  1. 前端,一些岗位要求全栈,即使不是全栈,懂得前端技术的后台能写出更加合理的接口,与前端工程师合作起来会更顺利,理解项目更通透,解决问题准确迅速。
  2. 学习一门动态语言,动态语言开发起来更灵活迅速。同时比较动态静态语言的特点,可以更好去提炼跳出语言束缚的代码思想。推荐学习JavaScript或者Python等。
  3. 大数据,大数据开发近几年也是热门方向之一,有兴趣的同学可以学习。
  4. 热门工具及框架,包括分布式Dubbo、缓存优化redis、nginx、虚拟化技术docker等。一般来说本科应届生不会要求很高,但是要对热门技术有一定的了解。

常用网站推荐

  1. GitHub: Build software better, together
  2. Java学习:How2J 的 Java教程
  3. Linux命令行:TLCL
  4. 算法: 力扣 (LeetCode) 中国官网 - 全球极客挚爱的技术成长平台
  5. 正则表达式测试:PHP, PCRE, Python, Golang and JavaScript

以上学习资料已经为大家打包好了,需要

请关注公众号“编程简单学丶” 获取

Java自学路线总结,已Get腾讯Offer相关推荐

  1. Linux C/C++ 学习路线(已拿腾讯、百度 offer)(转载)

    Linux C/C++ 学习路线(已拿腾讯.百度 offer) 摘自:https://blog.51cto.com/14419148/2416408 lee哥说架构 0人评论 4236人阅读 2019 ...

  2. 五万字15张导图Java自学路线,小白零基础入门,程序员进阶,收藏这篇就够了

    本文收录于<技术专家修炼> 文中配套资料合集 路线导图高清源文件 点击跳转到文末点击底部卡片回复「资料」领取 哈喽,大家好,我是一条~ 最近粉丝问我有没有Java自学路线,有了方向才能按图 ...

  3. 大学四年,总结一套适合小白的Java自学路线和方法

    前言篇 无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班.报班通常太费钱,时间又不自由:自学又不知道如何下手,担心自己坚持不下来.怎么办呢? 本文将解答你自学Java的N种问 ...

  4. 超级硬核!Java 自学路线总结,已 Get 大厂 Offer,建议立马收藏!

    还是要说一句,"大厂"可能有标题党的嫌疑,但我觉得已经属于比较轻微的那种了,CSDN 的小伙伴们应该能接受.有一说一,能进来看的小伙伴都算是赚到了,认认真真看完这篇内容后,我敢保证 ...

  5. Linux C/C++ 学习路线(已拿腾讯、百度 offer)

    一.秋招 Linux C/C++ offer 情况 二.Linux C/C++ 方向的一些思考 三.计算机基础知识的梳理 四.C++ 方向的深入学习路线 五.项目 + 亮点 + 面试的一些思考 六.总 ...

  6. Linux C/C++ 学习路线(已拿腾讯、百度 offer)2

    一.秋招 Linux C/C++ offer 情况 二.Linux C/C++ 方向的一些思考 三.计算机基础知识的梳理 四.C++ 方向的深入学习路线 五.项目 + 亮点 + 面试的一些思考 六.总 ...

  7. LinuxC/C++服务器开发学习路线(已签腾讯sp,附学习资料)

    找完工作后一直想找时间写点东西,回馈牛客,由于在忙各种事情,一直拖到现在.作为一个19届的老油条,趁在毕业之前,将我的学习总结分享给大家,希望对正在找实习或者找工作的同学有所帮助. 个人介绍 首先介绍 ...

  8. 字节跳动算法工程师总结:java自学路线及推荐书籍

    分享第一份Java基础-中级-高级面试集合 Java基础(对象+线程+字符+接口+变量+异常+方法) Java中级开发(底层+Spring相关+Redis+分布式+设计模式+MySQL+高并发+锁+线 ...

  9. C++后台开发学习路线(已签腾讯后台开发)

    找完工作后一直想找时间写点东西,由于在忙各种事情,一直拖到现在.作为一个19届的老油条,趁在毕业之前,将我的学习总结分享给大家,希望对正在找实习或者找工作的同学有所帮助. 个人介绍 首先介绍下自己吧, ...

最新文章

  1. Reporting Services 的多值参数究竟能否用在数据集获取途径为存储过程的情景呢?...
  2. Lintcode 1230解题思路和c++代码
  3. 如果我们预先得知未来某一刻会因为此刻的决定而失败,那是否还会继续努力?
  4. tt协议号服务器,TTIot: TTIoT云端物联网Iot组件;面向JAVA;netty;mqtt;异步推送;以事件为驱动;为设备提供安全可靠的连接通信能力;...
  5. 【演讲实录】下一代企业级应用架构管理体系
  6. c语言遗传算法实例ppt,遗传算法的C语言程序案例.doc
  7. 1951-2021年至今全国气象数据(逐日、逐月、逐年)
  8. java 线程修改数据库连接_如何强制Java线程关闭线程本地数据库连接
  9. android 批量保存网页图片大小,360浏览器看图模式 一键保存“高清套图”
  10. 【Java面试题】线程的生命周期包括哪几个阶段?
  11. 循环群、对称群、陪集和拉格朗日定理、正规子群和商群
  12. 怎样在vue中使用jquery
  13. 解决 EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG 报错
  14. 网络分析工具——WireShark的使用(超详细)
  15. 什么是公考、联考、国考、省考、选调生?
  16. html制作课程导航页面,学成在线页面制作(HTML+CSS部分)(顶部+轮播图部分)...
  17. Banana Pi 消息
  18. 大数定律具体是个什么概念?
  19. IISscanner暴力破解IIS网站目录
  20. JavaScript-154:关闭淘宝二维码案例

热门文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(输出多个分组、色彩配置、添加数据点)实战
  2. R语言grep函数和grepl函数字符匹配实战
  3. plotly基于dataframe数据绘制股票自定义K线图
  4. sklearn使用FeatureHasher处理字符串特征
  5. R假设检验之Shapiro检验(正太分布判断)
  6. Mirror, Mirror,What do I see、一切都是投射
  7. 使用MyEclipse2017进行web开发
  8. R learning 十八讲 0018-R语言绘图基础
  9. 使用泰坦尼克号数据进行决策树、随机森林
  10. r语言用行名称提取数据框信息显示na_用R语言提取数据框中日期对应年份(列表转矩阵)...