作者 | 梁唐
大家好,我是梁唐。
最近遇到一件让我挺难受的事,老梁在知乎的付费咨询里被人给打了差评。打了差评的原因居然是觉得老梁没有做过Java相关的工作……说实话,看到这句话的时候,我真想找出当年阿里主搜团队的offer甩在他脸上,要知道老梁当年是一年的工作经验破格录取拿到offer的……
事情的起因是前两天老梁在知乎的付费咨询收到了一条提问:
这里面几个关键字非常惊人,自学Java、转行、三个月时间、Java八股文……这里面雷点太多、槽点也太多。
其实自学Java、转行本身不是问题,只不过转行的时候面临的压力是很大的。老梁当年算是科班出身,还有阿里核心部门实习经历的加持,想要转算法都困难重重。甚至很多猎头都直接跟我说你这没可能,还是继续搞Java吧。所以转行是很难的一件事,面对这个问题的当事人会承受很大的压力。
非科班出身三个月转行就更夸张了,三个月的时间,别说自学了,即使花钱报培训班三个月也往往毕不了业。另外一个刺痛老梁的点是Java八股文的说辞,虽然Java后端工程师常常把面试中的一些问题称为八股文,但这只是一种自嘲,并不代表这些问题本身没有意义。其实所谓八股文当中的问题是非常有深度也是很考验人的,只不过问得太多了,有些成了定式。
对于一个想要转行的人,以这样的口吻和心态来称呼面试中的问题,老梁觉得是有些问题的。所以看到这样的问题,当时老梁的第一反应就是敬而远之。老梁在知乎里设置的付费咨询很便宜,只有10块钱。有时候知乎还要抽成20%多,老梁也从来没有提过现,所以完完全全是用爱发电。
但是转念想想,还是心有不忍,于是还是硬着头皮回答了。
这里面的逻辑很简单,做项目是为了提升自己的实力,也是为了加深对Java的理解,刷题、准备面经这些是面试时的准备。显然对于转行的人来说,前者更加重要。这也是程序员找工作的两个杀手锏,一个是项目经验,证明当年勇,一个是面试准备,针对一些临场的问题侃侃而谈,这两者少了谁都不行。
因为是上班时间,所以回答得比较简短。老梁以为他会针对一些细节展开追问,没想到他的回复超出了我的预期……
老梁当时就蒙了,他好像对于刷题背八股文就能找到工作这件事深信不疑。之后就此问题老梁和他产生了拉锯,为了劝他,老梁还特意去github里给他找了Java入门的项目……
然而最终这一切努力都没有卵用,还是没能劝住:
看到他最后吐槽我觉得老梁没做过Java,我真的特别生气……好心劝你还被这样吐槽,但看到他秉持着一些错误的观念坚信不疑,又有些心疼,这个样子去闯荡江湖怕是免不了挨打……
最后简单和大家复盘下这件事,其实只要稍微找几篇Java相关的面经看看就能发现,算法题真的不常见。一般也不是专门用来为难候选人,而是考察候选人编码的基本功的。所以搞Java其实没太必要和LeetCode死磕,当然老梁已经好几年没有关注校招了,这几年也许发生了一些变化也不一定。但就老梁了解到的情况,LeetCode算法题肯定不是Java后端的第一优先级。
即使退一万步讲,真的面试的时候会问算法题,靠两三百题LeetCode Easy难度的题量积累来应对肯定也是不够的。200题Easy的题量去面试基本上就是赌原题,一旦出的题目不是原题,几乎不可能做得出来。所以这种情况下刷LeetCode的easy,不能说是毫无用处,但也不会比买彩票大多少。
另外奉劝大家,刷题只是实战练习,其实是不能完全代替算法、数据结构的理论学习的。我们需要先学习完整的算法、数据结构理论体系,再去刷题练习巩固知识,提升思维能力。这两者相辅相成缺一不可,但显然要做到这一点,对于一个零基础入门,自学的同学,想要用三个月的时间做到,也同样几乎不可能。
其次来说说被八股文的事情,面试里问一些套路化的问题其实是查看你的理解。你光背下来并不理解,其实毫无卵用,面试官只要稍微深入问几个问题,一下就能看穿虚实。另外很重要的一点是,你的这些理解不是凭空来的,得有实际经验支撑。
想想看,一个人面试的时候说得天花乱坠,一会jvm,一会gc原理,一会面向切片,但面试官一问,你用这些技术做过哪些项目?回答没有,一个项目也没做过,这河里吗?
至于说什么每个公司技术都不一样,所以项目经验就没用的说辞更站不住脚。因为各个公司的技术虽然不同,但只要是Java后端,对于候选人对于Java了解程度的要求是一致的。使用的一些常用的框架、工具也是一样的,比如Maven、spring、Tomcat这些。
即使像是阿里等一些大公司,可能他们开发了自研的框架代替spring,也不用Tomcat,有自己的工具。但是这其中的知识是贯通的,也是可以迁移的。你会用spring,理解了spring,也就能理解其他的框架。这里面核心的能力是一致的。
最后说说这件事的后续,被打差评已经足够令人生气了,没想到这人还不依不饶给我发私信。气得老梁直接把钱退了,还提高了知乎付费咨询的价格,希望这样能减少一些这样糟心的体验吧……