因為學算法和數據結構并不能直接帶來什么,不能馬上開發應用,不能馬上產生數據。
那算法和數據結構的意義是什么呢?
寫這個招聘的這家公司算是好公司,金融領域,有穩定業務穩定需求,產品質量非常高,切實解決了用戶需求。也就意味著,對于應聘者來說,這家公司會是議價強勢的一方。
所以因為這個公司還不錯,所以想招聘水平還不錯的人去解決問題,這樣才能保持公司的水平嘛。
雖然現場面試才是最重要的,但招聘信息還是多少能反映一點,最抽象的層面你需要具備什么,那算法和數據結構是一個比較抽象的層面,也就是說用人方普遍認為,有較高水平的應聘者,算法和數據結構是過關的。
其實直接看結論,這就是廢話。但是,認真想想,這個結論,掌握數據結構和算法真的被應聘者重視過嗎?
或者掌握數據結構和算法也是表象,背后更深的原因是什么呢?是掌握基礎知識的水平?是解決問題的能力?我覺得把這個想清楚很重要。
因為稍不留神,只是說:
哦,數據結構算法重要,那就瘋狂刷教科書,教學視頻。
再換成其他的:
哦,編程工資高,就趕快報培訓班。
哦,金融有意思,貌似股票比較容易接觸,直接買股票。
哦,房子過去瘋漲,房子就是一切,其他的都是屎。
最后的結論,對于應聘者來說,學數據結構和算法的意義就只是應付別人的要求。
然而,可惜的是,招聘方的出發點卻不是這樣。他們的出發點更可能是一個抽象的標準,表達什么意思呢?可能意思是:
哦,你看你掌握了數據結構和算法,說明你或多或少理解了計算機編程的一些精髓,只有在這個基礎上,才更可能高水平地解決實際問題。
當然這都是概率上的,并不絕對。
其實最終要達到的目標是什么呢?當然是能高水平地解決各種問題了,要盡量明確,我去解決你的問題,解決了給我回報,解決得好,給更多,如果解決不了,走人。
那么,在這個原則下,倒推掌握算法和數據結構對于應聘者的意義是什么:
重要的不是具體的知識點,什么鏈表,二叉樹,怎么反轉鏈表,怎么用前序,中序,后序遞歸地遍歷二叉樹。
重要的是用不斷在累加的知識,形成了什么技能,我自己或者和多少人一起,完成了什么作品,解決了啥問題,進一步這個問題可不可以普適更大更多的問題。
然后,此時此刻,招聘方你是什么性質的公司,你的需求是什么,我應聘方,我的大致可以帶給你什么,又有什么是需要之后進一步和公司一起去挑戰解決的。
或者說,學習算法和數據結構也好,學其他的也好,學習的意義不在于學習本身,在于實際問題的倒推出來的需求,因此要去學習些什么。
在這個結論下,我覺得最最重要的,就是學習本身其實只占50%的時間,剩下50%,還有很多重要的要做,理解對方的問題和需求,還有更多看似不那么有“思考含量”的工作,比如整理,復盤。
只可惜這樣的話,工作量就更多了,因為不單純了,要分心要串聯的事更多了。如果只是單純學習就行了,那多好啊。
這是一道坎。