不愧是Github疯传的腾讯Java进阶笔记,总结太全了

简介: 移动互联网时代,IT 系统变得愈加复杂,对我们程序员的要求也是越来越高,技术不断更新,我们还不能停止学习,停下来了就会被打上一个‘不合格的程序员’的标签,如何成为一位「不那么差」的程序员?「不那么差」的程序员又需要掌握一些什么知识呢?这篇文章就与大家聊一聊这个话题。以下内容仅代表我从业以来所积累的相关经验,不对不全的地方还请大家海涵,下面我会从硬技能、软实力这些方面尽量阐述我所认为的 “不那么差的程序员” 应当做到哪些技能。

移动互联网时代,IT 系统变得愈加复杂,对我们程序员的要求也是越来越高,技术不断更新,我们还不能停止学习,停下来了就会被打上一个‘不合格的程序员’的标签,如何成为一位「不那么差」的程序员?「不那么差」的程序员又需要掌握一些什么知识呢?这篇文章就与大家聊一聊这个话题。

以下内容仅代表我从业以来所积累的相关经验,不对不全的地方还请大家海涵,下面我会从硬技能、软实力这些方面尽量阐述我所认为的 “不那么差的程序员” 应当做到哪些技能。

技术栈

作为一名码代码的程序员,怎么说干的还是技术活。既然是技术活那专业实力就得过硬,下面我会按照相关类别谈谈我们应该掌握哪些东西。

计算机基础

主要需要掌握网络与操作系统方面相关的知识(这些知识前期是比较枯燥的)但只要你还在做计算机相关的工作,这些都是绕不开的,当哪天这些知识不经意的帮助到你时你会庆幸当初正确的选择。

数据结构与算法

这块当初在大学时也是最不受待见的一门课程,也是我唯一挂过的科目。

记得当时每次上课老师就让大家用 C 语言练习书上的习题,看着一个个拆开都认识的字母组合在一起就六亲不认我果断选择了放弃。这也造成现在的我每隔一段时间就要看二叉树、红黑树、栈、队列等知识,加深印象。

这一块内容可能会在应届生校招时发挥较大作用,在工作中如果你的本职工作是 Java Web 开发的话,这一块涉猎的几率还是比较低。不过一旦你接触到了模型设计、中间件、高效存储、查询等内容这些也是绕不过的坎。

Java 基础

Java基础则是走向Java高级的必经之路。

实际工作中高频次的东西有以下几点

  • 基本容器
  • IO、NIO
  • 常见的设计模式
  • Java多线程
  • 良好的单测习惯

多线程并发内容

有了扎实的基础之后就要了解多线程、并发相关的内容了。

会用了之后也要考虑为啥多线程会出现的问题,这时就需要理解内存模型、可见性之类的知识点。同样的解决方式又有哪些?各自的优缺点也需要掌握。

JVM 虚拟机

想要深入 Java ,JVM 是不可或缺的。对于大部分工作 1~3 年的开发者来说直接接触这一些内容是比较少的,到了 3~5 年这个阶段就必须得了解了。

  • JVM内存划分,知道哪块内存存放哪些内容;线程安全与否;内存不够怎么处理等
  • 不同情况的内存溢出、栈溢出,以及定位解决方案
  • 分代的垃圾回收策略。
  • 线上问题定位及相关解决方案
  • 一个类的加载、创建对象、垃圾回收、类卸载的整个过程

以上问题都是我们需要掌握的

数据库

做WEB应用开发的老哥肯定要和数据库打不少交道,而且通常来说一个系统最先出现瓶颈往往都是数据库,说数据库是压到系统的最后—根稻草—点也不为过。

所以对数据库的掌握也是非常重要。以MySQL数据库为例,这三点必须知道:

  • 索引的数据结构及原理、哪些字段应当创建索引
  • 针对于一个慢SQL的优化思路
  • 数据库水平垂直拆分的方案,需要了解业界常用的MyCAT、sharding-sphere等中间件

分布式技术

随着互联网的发展,传统的单体应用越来越不适合现有场景。因此分布式技术出现了,这块涵盖的内容也很多很广,至少一些像CAP定理什么的这些基本理论还是要知道。

最后当然就是要懂一点架构了

相信程序员都有一个架构师的梦想。

要成为一个架构师,就上面列举的样样需要掌握,底层到操作系统、算法;上层到应用、框架都需要非常精通。(PPT 架构师除外)

俗话说:种一棵树,最好的时间是十年前,其次是现在。如果你现在还不是技术大牛,就不应该停止学习,至少在这个技术不断更新的时代,不会让后浪拍的太惨,前段时间我在腾讯工作的老哥私下传我一份他们内部的程序员全栈知识点进阶笔记,里面的内容真的非常全面,市面上很少会见到这么全的笔记,差距不止一点点。

为了不影响大家的阅读体验,只能以截图形式展示出来了,需要这份笔记高清版的小伙伴,可以点击此处来获取就可以了!

Java全栈知识

  • Java基础

  • 多线程并发

  • Java虚拟机

  • 数据结构与算法

  • Spring框架

  • 网络协议与Netty网络框架

  • 微服务

  • 消息中间件

  • Zookeeper/Kafka

大数据方面

  • Hadoop

  • Spark

  • Storm

  • YARN

云计算

最后

这份笔记涵盖JAVA基础,Netty&RPC网络框架,数据结构与算法,SSM框架,网络协议,分布式,微服务,消息中间件,数据库,设计模式,还包含大数据以及云计算内容。如果你在进阶路上没有一个清晰的思路,把这份笔记里的里内容吃透技术会提升一个档次,对于大牛来说也是查漏补缺的好东西。

总之,计算机编程行业是终生学习的行业!所以说,如果您还在考虑进来,请好好考虑,如果开始从事这个行业,请一步一个脚印,认真学下去,相信我们都会成为心目中的技术大牛!!!加油!!!(未来的外卖员们)

如果有外卖员(手动狗头)需要这份笔记,可以点击此处来获取就可以了!

相关文章
|
6月前
|
SQL Java 数据库连接
阿里腾讯互联网公司校招 Java 面试题总结及答案解析
本文总结了阿里巴巴和腾讯等互联网大厂的Java校招面试题及答案,涵盖Java基础、多线程、集合框架、数据库、Spring与MyBatis框架等内容。从数据类型、面向对象特性到异常处理,从线程安全到SQL优化,再到IOC原理与MyBatis结果封装,全面梳理常见考点。通过详细解析,帮助求职者系统掌握Java核心知识,为校招做好充分准备。资源链接:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
209 2
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
148 2
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
161 1
|
11月前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
624 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
11月前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
379 3
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
195 2
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)