高薪/大厂程序员要学习哪些东西?
一名合格的程序员,不但要会写代码,会实现业务需求,还应该具备扎实的基本功,了解软件的底层原理和运行细节。从整体上看,大厂/高薪程序员应该掌握/了解以下技能。
1) 计算机四大件
四大件是一个通俗的叫法,具体来说包括以下四门课程。
计算机四大件也是考研要学习的专业课程。
2) 算法(必学)
这是重点内容,一二线大厂和独角兽都会考察算法,不玩算法就不可能入职这些公司。很多算法都是基于某种数据结构的,所以它们是交叉在一起的。
常见的算法有:
动态规划
暴力搜索
贪心
分治
各种查找和排序算法
树相关算法(树的遍历、哈夫曼树/最优二叉树、回溯、红黑树、b/b-/b+树)
图相关算法(DFS/深度优先搜索、BFS/广度优先搜索、最小生成树、Prim算法、Kruskal算法、连通图、关键路径、最短路径、Dijkstra算法、Floyd算法)
先学习常见和主流算法,然后再慢慢刷题(常见的刷题平台有 LeetCode 和牛客网)。刷题没法一口吃个胖子,要保持长期刷题的习惯,这是一个痛苦和煎熬的过程。
3) 对应方向的技术栈(必学)
以上是所有程序员的基本功,只有掌握了这些,才算摸清了软件产业的脉络。不管你从事哪个方向的开发,都得学习这些基本功。学完基本功以后,还需要针对你想从事的开发方向,再学习对应的技术栈。
比如 Java 后台开发要学习的内容包括:
Java 基础:包括 Java SE、Java 集合、Java 并发/Java 多线程、JVM、设计模式 等。
Java 后台开发/网站开发:包括 Servlet、JSP/Thymeleaf、SSM(Spring + SpringMVC + MyBatis)、Spring Boot、Spring Cloud 等。
中间件技术:包括 Redis、ES/Elasticsearch、消息队列 RabbitMQ 和 Kafka 等。
Web 前端知识:包括 HTML、CSS、JavaScript、Node、Vue、React 等。当然,这不是重点,你只需要简单了解,知道它们是什么东西,并能写一点简单的 Web 前端代码,就 OK 了。
3) 数据库(必学)
其实,不管从事哪个方向的开发,都要学习一两款数据库。虽然数据库不算程序员的内功,但它是一种通用的技能,而且是考察的重点内容。
首先是基于 SQL 语言的关系型数据库,推荐学习 MySQL,知识点包括:增删改查、数据类型、事务及其四大特性、关联查询(join)、索引、存储引擎、约束、视图、存储过程、备份与恢复、性能优化。
有余力的话,再学习一种非关系型数据库(NoSQL数据库),比如 MongoDB、Redis 等。
4) 编译原理(选学)
了解程序的生成和运行过程,包括编译、链接、动态/静态链接库、标准库/运行库等。
总结
计算机四件套 + 算法 + 对应方向的技术栈 + 数据库,把这些东西都搞明白了,才是一名合格的程序员,才能拿高薪,进大厂;就算是一名专科生,掌握了这些东西也能拿 20W。
虽然工资高低不仅跟个人能力挂钩,还跟情商、机遇、市场挂钩,但是和半吊子程序员相比,功底扎实的程序员更容易找到高薪工作,更容易走得长远。
把编程当做一种科学吧,不要再仅仅把它当做一种技能了。