Skip to content
This repository was archived by the owner on Dec 8, 2024. It is now read-only.

gduf-cs-tribe/2023-direction-introduction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

direction-introduction

目录

今年后端考核相比于往年的主要不同

相比于往年的后端考核,今年的考核向你们介绍了后端的其他方向。比如往年后端考核主要以 Java 后端开发的方向为主。今年的考核我们引导,鼓励你们尝试后端的其他技术栈方向,比如C/C++,go或是其他等。所以今年的考核会向你们介绍主要的三个技术栈方向 Java,C/C++,go,包括这三个方向的学习资料,发展路径等相关内容。

选择的思路

  • 不同的方向有不同的特点,学习曲线也不一样,最重要的是选择自己喜欢的方向!

  • 可以从下方不同的方向的发展路径,就业行情去考虑。

  • 第一轮考核是语言基础入门,比较简单,也可以在先做完一个方向的考核的情况下去尝试另一个方向,拓展自己的广度,等到第二轮的时候再来做选择,这个时候你可能已经开始有自己的一些见解了,更能帮你做出判断。

    • 在做出这些判断,选择的时候最好是联系文档下方的师兄师姐沟通沟通。
  • 从后面第二轮开始后,也不是说选了某个技术栈方向后就一定是走这个技术栈方向了。后期(大三大四或是考研工作之后)从一个技术栈转到另一个技术栈也不是说不可以,部落也有这样的案例。后端在还没有进入到细分领域之前,很多东西都是相通的,进入细分领域之后也相通,只不过相关度没那么高了。

  • 还有一点需要提醒的是,学校的教学语言是C,C带入门之后,主 Java 技术栈

  • 还有就是不同方向的薪资问题,可以这么说,不管哪个方向,只要能冲到头部,薪资都是不低的。而不同的是,不同方向能冲到头部的比例,以及不同方向发育空间。总的来说,

    • Java方向比较依靠业务,业务上升则个人也跟随上升,不过不是所有公司都有那么大的那么复杂的业务。

    • 而 C/C++,Go 的云原生方向比较依靠技术,公司有相关技术探索需求,就会带动个人技术提升。

  • 关于考研的话,选择的方向可以尽量的偏向计算机底层或者基础架构的方向。

关于后期转技术栈

  • 具体来说Java转go的偏多,转过去的开销也比较小,企业的接受度也比较大,因为从Java转go还是做得类似的后端内容,而从Java转到go之后做go的特色领域云原生的比较少,但也不是没有

    • Go 转 Java 的话也有,相互之间接受度也比较高,毕竟都是做的后端的内容
  • C/C++转 Go 也比较普遍,接受度也比较高。不过大部分也是做和Java类似的后端内容,做 Go 的特色领域云原生的也比较少

    • 为什么C/C++转Java反而少?因为Java各种成熟的框架非常多,而且是必学框架,go的成熟框架反而少。导致 C/C++ 转Java不是那么容易,接受度也不是很高
  • Java转C/C++

    • 这样转的人比较少,因为工作的之后就不好转了,社招基本都要经验对口的,在校期间是比较好转的,有相应方向的项目就可以去找那个方向的实习/工作
  • go转C/C++

    • 这个比较少,因为就是C/C++不好找工作,才转向 Go ,转回去的比较少

选择之后

  • 不管最后选择了什么技术栈,不要来回切换方向。如果一段时间后还是一直想切换技术栈,只能说明还没有入门,因为入门之后就没有门了,不会在考虑走哪道门了。

  • 取其上者得其中,取其中者得其下。部落是技术性部落,不管你们选哪个方向的技术栈,都希望你们是取其上者。

各个方向的介绍

Java

简要介绍

  • Java能做什么

    • Java 语言主要走的是 web后端开发 这条路,最典型的就是做网页后台开发,就是对接数据库,将数据库内对应的数据进行组合交于前端渲染。这也就是为什么每个人进入一个网页有自己的个人信息,可以操作属于自己的信息等等。
  • Java学习难度

    • 入门快,语法糖多,比起C语言,那简直是干净的不得了。

    • B站搜索Java基础哪个视频播放量高,就选择哪个,发现这个老师不适合自己,那我就选另外播放量高的,就这样。

  • Java的现状

    • Java 在国内的生态比较好

    • 目前来看 Java 的岗位依然很多,但走 Java 这条路的人成倍的增长,所以现在 Java 岗位依旧是处于 “狼多肉少” 的局面。

  • Java这条路如何

    • 部落走这个方向的人比较多,后期你能了解到的案例会比较多,过去十年多的师兄师姐的经历,走出来的路,我想是比较稳的,只是最近今年变革比较大,需要更加卷,更早的出去实习。

学习路线

  • JavaSE:大致过一遍,需要掌握基本API的使用、面向对象语言的特点,建议视频入门,没必要买那种又厚又重的书

  • JavaWeb:需要掌握Java网络编程基础Servlet、Socket、HTTP、JDBC、MySQL

  • SSM:入门框架,需要掌握Spring、Spring MVC 、Mybatis或其他流行ORM框架

  • SpringBoot:熟练使用注解开发、Maven工程管理

  • 进入分布式大门:掌握微服务治理理念、各类中间件学习。

    • 数据库:Redis、MongoDB、PostgreSQL、Mysql

    • 消息队列:RabbitMq、RocketMq、Kafka

    • 各家SpringCloud:注册中心、网关、分布式事务、分布式锁、日志监控

    • 搜索:Elastic Search

    • 部署:Docker、k8s、Linux

    • .......

  • 回头看(重点学习!提高计算机素养的重要阶段):

    • JavaSE和相关源码:集合、并发、IO.....

    • Mysql、Redis原理:对理解数据库工作原理很有帮助,感兴趣可写内核

    • SpringIOC原理:解构Spring,不用再害怕相关面试八股

    • JVM:相关GC算法、实现原理、收集器区别。

  • 项目

    • Github必须会用

    • 业务项目

      • 商城、外卖
    • 轮子项目

      • RPC、线程池、MQ、IOC、MVC

C/C++

简要介绍

  • 学习曲线比较平缓,是比较接近计算机底层的语言,相比于Java,入门时就需要接触理解计算机底层相关概念,学习过程不会那么立竿见影。

  • 就业岗位相对较少,但是就业面很广,很多底层相关的方向都需要用 C 语言来写,只是量都不大。可以就业的方向包括但不限于安全,linux内核,网络,虚拟化,存储,协议,驱动,客户端,游戏等等。C/C++ 一般在这些方向做研发性工作,需求量相比开发要少不少,所以岗位容量也相对较少。

  • C/C++ 参与这些方向多数比较看重技术,比较吃经验。因为这些方向离底层比较近,而计算机底层硬件,OS等变动都很慢,所以经验的时效性相对较长。但也是因为较底层,所以能接触到应用层的业务比少。

学习路线

  • 语言入门,计算机相关基础的入门,建议视频入门,没必要买那种又厚又重的书

  • 虚拟机使用,Linux使用入门,vim,gcc,make,cmake,gdb等工具入门

  • 入门级练手项目:开始尝试写写五子棋,推箱子,贪吃蛇等

  • 一些周边工具使用入门,git,github,docker,rpm/deb,以及linux常见的运维工具,磁盘,网络等常见的工具

  • 操作系统基础原理入门,计算机网络,数据结构以及一些常见的算法等入门

    • 虽然这里只出现几个名称,但是每一个都够喝一壶

    • 但是入门阶段不建议这里的每遇到一个就去深挖,广度还不够,意义有限

  • 结合操作系统,计算机网络,数据结构,算法等提升项目的复杂度,比如比较经典的网络库项目,或者线程池,内存池项目等

  • 补充应用层相关知识,Web开发,关系型数据库,键值数据库,消息队列,搜索引擎等

    • 还不需要在这个阶段深挖这些东西,知道怎么使用就行
  • 关注性能,关注底层实现,使劲优化项目的某个点来挖掘知识深度

  • 继续探索底层基础

    • 最好返回去软件的第0层,从汇编重新学起,有很多东西可以刷新原先错误的理解

    • 同时有了汇编的基础之后,最好能重新认识一些操作系统,去跟操作系统的实践课

  • 有了底层基础之后,可以考虑选择一个细分方向继续深挖

    • 方向包括但不限于安全,linux内核,虚拟化,网络,虚拟化,存储,协议,驱动,分布式

    • 部落之前走这些方向的人比较少,因为大部分学校也都是主Java方向的。较近的几届开始有师兄师姐走这个方向,有在尝试存储方向的师兄,也有在做内核/虚拟化的师兄。这些方向路不好走,同时还需要一定的机会和运气,所以这些方向能给你们提供的案例比较少。如果想走这个方向有比较大的挑战和未知性。但是反观一下,有哪个方向不是充满未知的。所以希望你们以后也能勇于挑战,给后面的师弟师妹带来更多的案例。

GoLang

简要介绍

  • 几年前开始火起来的语言,各种框架和库都比较新,就业没有要求必须熟练某某框架。

  • 可以和 Java 一样做常见的Web后端,同时有自己的特色领域云原生,大多数云原生框架,中间件是用go写的

  • 部落有从 Java 转 Go 的师兄,从事后端开发的方向。做云原生的比较少。

  • 比较少有人直接拿Go来当做自己的第一个技术栈,一个是因为这门语言还比较新,大部分人是转过去的,同时也因为他比较新没什么自己的技术栈。如果要说有,那就是云原生了,但是云原生不是用来入门计算机的。

  • 如果后期有转Go的想法,一定要尽量往云原生上去靠,多多接触 Docker,k8s,etcd 等等这种业界有名的项目。

学习路线

  • 虽然想学的是Go,但是最好还是先入门C,然后在来看Go的内容。

  • GoLang基础语法入门,可以先忽略一些暂时用不上语法新特性。建议视频入门,没必要买那种又厚又重的书网络上的视频教程完全够用。可以直接b站搜索,哪些播放量高就点那些。

  • 其他基础阶段的入门可以参考C/C++路线

    • 甚至可以先按着C/C++的方向先学着,等到差不多快到选择细分方向的时候,如果对这个方向感兴趣,可以考虑研究云原生领域相关内容。
  • 在知道了操作系统,计算机网络,数据结构,算法,Web开发,关系型数据库,键值数据库,消息队列,搜索引擎之后,如果想往云原生方向靠的话,就可以开始考虑关注业界一些知名的云原生框架,中间件了。

  • 市场上直接奔云原生这个方向的人很少,竞争压力当然会比Java小很多,但是和C/C++类似,岗位需求量目前也不是很多。

  • 想涉足这种有活跃的开源社区的领域,最好的方法就是参与开源活动,给社区提issue,提pr,打patch。

  • 由于近几届没有直接走这个方向的师兄师姐,关于这个方向能给你们提供的参考建议比较有限,但还是鼓励你们能勇于尝试,不确定性在哪个方向都是有的,总是需要有人迈开第一脚。

推荐网课

  1. Java

  2. C/C++

  3. GoLang

其他

  1. 什么样的人能进部落:

      i. 我们将综合考量你们的几次考核成绩,面试表现以及个人综合素质进行考量,择优选择;

  2. 部落能提供什么:

      i. 部落里的师兄师姐会作为过来人提供一些学习路线,未来职业规划

      ii. 部落有属于自己的工作室(本部和清远都有),可以作为学习的地方

      iii. 像一些大型的比赛,比如 ACM,学校的名额都是直接给到部落

      iv. 一群志同道合的朋友

      v. ……

  3. 你能收获什么?

      i. 本次23届的招新对小白或者是有基础的都有针对性的考核方案,所以在这持续几个月的学习中,你可以收获从无到有/从了解到深入理解……

      ii. 无论是最后有没有进入部落,对你们而言都是利 > 弊,可以收获能力,毅力……

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published