大家好,我是二哥呀。
新的一周,形势上有了很大的变化,所以大家应该重拾信心,把前面落下的学习给补上来。
那今天来给大家分享一个二哥编程星球里的主题:以我快 3 年的工作经验来看,很多原理性质的东西似乎没啥用,比如说 HashMap 的原理,这些原理性质的真的需要学习吗?
我相信,应该还有一些小伙伴会有类似的疑惑,那今天我们就来聊一聊,希望能给大家一些帮助和启发🤔
以下👇🏻是球友的提问内容,先来看一下。
请教二哥,一直以来就有一个问题,现在的应届生面试问的那么宽,相对也比较深,但是这些知识真的在工作中会用到吗?
比方说必考内容HashMap和ConcurrentHashMap的原理,比如JVM各种知识。以我差不多快3年的工作经验看来,基本上没有涉及到那么原理的东西,遇到不会的就网上查就行,基本上没有解决不了的问题。
多谢二哥。
工作拧螺丝,面试造火箭,就是当下最真实的写照了。
这是由多方面因素造成的。
第一,就是供需不平衡,冲着计算机高薪过来的人,太多了,放在我上大学那会,计算机专业是学校的垃圾专业,现在已经是香饽饽,各大高校的第一热门专业,不管是什么学校,经常是一票难求。
每年涌进来的毕业生越来越多,所以招聘方在筛选人才的成本上逐年提高。
以前有些大厂是不限制学历的,比如说阿里,大专都可以去,现在已经不可能了。双非想要进大厂,基本上是需要考研缓冲的。
那怎么才能招到有把握的人才呢?
多问一些 JVM,多问一些并发编程,多问一些源码,多问一些原理,就是一种切实可行的办法,也只能这样,如果问一些简单的,大家都会,就没有筛选的效果了。
问难了,即便是应聘者答不出来,但只要回答的合情合理,有自己的想法,那也可以,反正我面试的时候就这样。
第二,学生阶段,没有实际的工作经验,即便是去实习,也很可能是打杂,那在项目经历上,问多了也问不出个所以然。
于是只能多问问那些“造火箭”的知识点了。
但话又说回来,造火箭的理论知识真的就没有用吗?这要看工作的内容和造火箭的理论知识,之间有什么样的关联性。
比如说我是一个程序员,我每天用冰箱,我不需要知道冰箱的制造原理,冷冻原理,怎么才能不结霜。
但如果是一个冰箱制造业的从业者,那肯定是有用的。
参加工作后,遇到的疑难杂症,只需要团队当中一两个精英去解决就行了,其他成员靠着搜索引擎就能解决问题。
反正我工作中遇到的大多数问题,和你一样,不是靠 Stack Overflow 解决,就是靠 GitHub issue 区解决。
凭借经验,几乎很快就能定位到问题,并且经过一些尝试和调试,还没有遇到解决不了的问题。
但是,我也在补这些造火箭的知识,除了那些真的理解不了的,记不住的,大部分对工作还是有帮助的,能帮我们快速把思路打通。
所以我这里要奉劝那些想学好编程的人。
每天把输出“hello world”的程序敲上一百遍,坚持一百天,这样学编程的话,效果可想而知,是学不好的。
真的想要在编程这条路上走得更远,需要花费足够多的时间,并且要不断的寻求突破。
就拿学习 Java 来说吧,一开始可能要先学习 C 语言,打下坚实的基础,如果没有学的话,直接开始学 Java 也行,但以后有时间的话,还是要补一补内存管理、垃圾回收、类加载机制的,好处很多。从 Java 基础知识,到面向对象编程,到网络编程,到多线程并发,到 Java 虚拟机,到性能优化,都要学扎实。
这一条线下来,还不够。还要熟练使用各种开发工具工具,比如说 IDE、Git、Maven、Docker、Jenkins、ApiPost 等等;还要学习框架,比如说 Spring、MyBatis、Spring Boot、Spring Cloud 等等;还要学习关系型数据库 MySQL,缓存中间件 Redis、消息队列 Kafka、RocketMQ 等等。
除此之外,数据结构与算法、设计模式、计算机网络、计算机组成原理、操作系统等等,这些也要学,也只有这样,不断地走出舒适区,不断地突破,不断地寻求边界,然后才能真正地把编程学好。
计算机这条路是无止境的,如果你觉得你遇到了瓶颈期,那么去尝试学习原理,这会有助于你自身的能力突破。
人就是这样,有自己学不会的,有自己能轻松学会的,还有那些需要经过努力才能学会的。
轻松不会带来成长的快乐,学不会的也不会带来成长的快乐,只有那些努力过,掌握了的能让我们成长,还能快乐。
所以知识就摆在那,如果你需要,就去学,如果你觉得够用了,那么没必要看别人在学,你也要学。
这就是我的一些片面的理解和认知吧。