我是从CS专业课走出来的,同时也认识了很多通过培训班走上程序员之路的同事。经过观察和比较,我认为基础课程中你需要学习的课程只有两门。
反对把一堆课程的答案列在楼上,建议学科不要被那些眼花缭乱的课程给打折扣,比如组成原理、软件工程、操作系统……如果你已经学会了所有这些,那么你就不应该工作了,因为即使是计算机专业的本科生也要花四年的时间完成所有这些课程。题目主要从这些课程中挑选出一两门最有用的课程,并下了很大的功夫……巨大的努力...深入...深入学习。
据我所知,市面上最多的培训课程应该是JavaEE和Android开发(没有现成的统计,请指正)。下面的答案都是假设主题正在研究JavaEE,所以-
0.计算机网络
如果课题从事互联网行业,从事Java后端的开发,那么肯定会接触到web服务器、数据库服务器、分布式、负载均衡等各种概念;主体在培训班上一定学过jdbc连接数据库的方法,但培训班上一定不能告诉你Java应用程序和数据库服务器之间的连接是用哪一层协议建立的;培训课程可能会告诉你负载均衡的概念,但肯定不会告诉你基于LVS架构核心原理的是哪一层网络协议;培训班可能会告诉你如何使用tomcat,但肯定不会告诉你如何实现tomcat…
这些都是您踏入高级Java后端工程师门槛所需掌握的技术,都是紧紧围绕计算机网络基础课程展开的。因此,我个人认为“计算机网络”是Java工程师最重要的基础课程,没有之一。就像向日葵宝典对东方不败`(*↓_↓*)'一样。..还记得上大学的时候,教“计算机网络”这门课的老师讲得很好,从不照本宣科,课堂上气氛活跃
从不点名,出勤率却极高,于是计算机联网成了我大学生涯中少数几门从不跳过的课程(为什么是其中之一?什么?体育课你也逃过),一本厚厚的大本子上轻盈的笔记,却不幸输在了一招一式上,偶尔在工作中记不住知识点,只能仰天长叹,对不起老师……
1.数据结构与算法当时好像学过这本书?
同样,Java培训课不会告诉你链表和数组之间的区别(如何打破面试?)我不会告诉你什么是堆和栈(我读不懂“深入理解Java虚拟机”),也不在乎什么是树(我怎么理解数据库索引)。数据结构和算法的重要性不言而喻,即使是一次普通的面试,很多工程师也会陷入这门课(《自制》的作者Max Howell再次表达了他的愤慨)。作为Java程序猿,主体可能更喜欢这本书:
我买了一本,在毕业前准备面试的时候读了一本。目前,我处于吃灰的状态。
2.结束语
不少培训班出来的学员上手很快,能做出一个成品,但在获得一定满足感后,往往会忽视基础学科的作用。作为一个非CS科班出身的程序猿,主体能意识到这个问题,给你点赞!祝愿学科主能突破自己的学习瓶颈,互相鼓励!
我做了一个公众号。请搜索微信订阅号“疯狂IT男”和公众号ID:crazy_debugger,分享IT老鸟的职场经历、观点和故事。如果您对IT职场有任何疑问,欢迎在公众号提问,我会尽力解答。欢迎关注。