怎麼看待程式設計師普遍缺乏資料結構和演算法的知識?

時間 2021-05-11 00:24:28

1樓:關明

我們公司的程式設計師應該不會,因為作為乙個面試官,我不太想以後跟同事交流技術的時候,還得解釋什麼是鍊錶、什麼是堆、什麼是時間複雜度,等等等等

2樓:23號新秀

因為工作中真的用不到啊

我舉個誇張的例子,你說hashmap查詢速度快,但是公司的資料歷來都是用list存的,就你小子乙個新來的知道hashmap快?萬一業務崩了,今年的325你還不自覺點?

3樓:

其實得看什麼水平的程式設計師,現在程式設計師從業人數也很廣,人員素質也符合乙個金字塔模型的人。可能屬於「底層」的程式設計師(請不要誤會,沒有惡意),確實不用太在意這種基礎、做個掉包俠也何嘗不是個選擇。

程式設計師這個職業也跟其他任何職業一樣,乙個飯碗而已。找準自己在金字塔中的定位即可。

從一道面試題談談一線大廠碼農應該具備的基本能力

4樓:

演算法是基礎沒錯,但是我乙個砌牆的工人為什麼要知道磚多少度燒,怎麼配比的磚更硬?

開發面對的妥妥的是工程問題。我手頭有無數的磚,不同公司的不一樣,乙個公司出的不同批次的磚還不太一樣。

產品經理過來說客戶喜歡橢圓形的牆,我得找哪塊磚比較硬適合放底下,哪塊比較輕適合放上面,邊角怎麼糊弄讓它看起來不那麼方,當中缺一塊我還得搗水泥湊合堵上。

最離譜的到了工地一看赫然一座倒立的金字塔搖搖欲墜,老闆說我們要在上面的平面蓋乙個體育場。

當淹沒在api,doc,bug還有屎山里的時候演算法早就忘了。

5樓:函谷關剛剛好

這些人不能算程式設計師。

1. 資料結構+演算法

2. 網路

3. 作業系統

這三方面是程式設計師最基礎的知識。

任何乙個這三方面知識不全的人都不應該被稱為程式設計師,頂多是API呼叫師。任何乙個大學,計算機方面的專業都必定會開設這三方面課程。

連我乙個數學+控制出身的人都學過……

6樓:漁子長

因為演算法證明不了乙個人的能力。

看了一堆吹演算法的,實在看不下去了。

演算法是知識點,只考察知識點,是完全看不出乙個人的能力來的,因為知識點是很容易補齊的。有太多比知識點更重要的能力,比如思維、韌性、學習能力、理解能力、攻堅能力、創造力、領導力等等,這些能力的培養往往是需要數十年以上的積累,不是靠短暫的突擊能補齊的,這些也才是拉開庸人與牛人差距的東西,決定了你以後能做成什麼樣的事兒。

演算法的考察,過程是比較簡單的,不需要對面試官有過高的要求;而其他能力的考察,是比較困難的。那些能做到全面考察候選人能力的人,自己的能力也一定是較全面的,不然是沒有辦法做出判斷的;能達到這個要求的面試官,比例並不高,而面試問演算法,更像是乙個偷懶的做法。

我很欣慰看到國內的很多大廠在嘗試多面演算法以後,最近幾年都逐步降低了演算法的佔比。

BTW:

前些天跟乙個前端大佬聊,他喜歡招什麼樣的下屬,他只說了一點:能成事的人。

這一句話讓我想了好久,是第一次聽到這個答案,也應該是最match我想法的答案。

那些把學到的知識當做能力的人,一般都是沒做成過什麼事兒的

7樓:陳隨易

造航母嗎?

進公司還不是增刪改查一把梭。

說實話,有時候,這還真不能怪公司。

只能說,某些程式設計師戲太足。

沒辦法,誰叫人家是面試官呢。

沒辦法,誰叫人家昨晚臨時補充了兩個演算法題呢。

沒辦法,誰叫人家是做題家呢。

做人呢,最重要的是,開心。

我才不管你什麼面試官,我又不是非得進你們公司。

所以,大家可以看看我的簡歷是怎麼寫的。陳隨易

8樓:

因為程式設計師分很多種。

搞資料結構和演算法的初級崗位在今天通常被稱為演算法工程師。他們其實某種意義上並不是程式設計師,程式寫得爛點兒並不重要。

剩下的佔至少80%以上的,包括很多,比如寫UI的,比如寫CRUD的,比如對接平台SDK的,比如寫業務邏輯的,很多時候並不需要多少資料結構和演算法方面的知識。

當然,上面說的都是初級崗位。到了中高階,開始講究效能穩定性什麼的了,也就是開始追求NFR(非功能需求)了,那麼遲早都會遇到這兩個坎。

但是即便這樣,大部分時候也只是以理解人家研究出來的演算法和資料結構,並在自己的專案當中化用為主。除了一些強R&D崗位,從零開始創造的機會並不多。

9樓:伯約

面試需要追求效率。

如果希望通過專案挖掘面試者潛質,並能根據應聘者的反應,隨機應變,準確地抓住要點追問。這堆大多數面試官 ,尤其是一二面的面試官來說,太困難了。這不僅需要經驗積累,還需要業務與技術上的思考沉澱。

所以,為了追求效率,引入標準化的演算法測試是最簡單快捷的方案。(是不是有點兒高考的感覺了?)

10樓:大狐狸

程式設計師也分不同工種。

問什麼看崗位需求。

作底層開發、效能敏感模組的程式設計師,

演算法題肯定是必要的。

作業系統、硬體原理之類的題也應該安排上。

但業務邏輯、維護、平台對接之類崗位,

演算法題就不那麼必要。

還不如出點邏輯題。

11樓:chenc

「所問的問題都很基礎」?其實應該是所問的問題都很脫離實際。就我的經驗,絕大多數程式設計師日常工作中並不需要這些知識,這也是為什麼工齡越長,越是不會這些東西的主要原因吧。

面試時問什麼主要還是看你們招什麼樣的程式設計師,什麼等級,日常做哪些工作。建議直接上機做乙個小功能,根據完成情況應該可以看出很多東西。我面試喜歡聽對方說說他的過往工作情況,做過什麼,專案中什麼角色,有什麼心得體會之類的。

12樓:

敏捷交付模式是程式設計師的夢魘,只需要快,不需要你思考。老闆上午提的需求,你最好下午上線。神馬?你還要思考演算法,搞錯沒有,公司不是學校,不需要你思考。

13樓:辛必果

因為不需要,搬磚完全不需要演算法,就好像你2023年吐槽農民工怎麼不會從頭生產錘子和水泥,只會買來用一樣

事實就是根本不需要那麼多演算法人才,大部分滿嘴O開頭的也不是人才,只是想用乙個高大上的方式實現鄙視鏈而已

演算法的優化是有系統的規律可以遵循的,最簡單叫做空間換時間,從來不是所謂的演算法大神拍腦袋瞬間就想出來的

最常見的幾種排序演算法的提出時間間隔都是論月論年的,不斷的優化和計算和證明,面試考結論就是考你背過題沒,做題家不希望乙個學歷低但是會谷歌的人進來跟他們一樣工資,僅此而已

軟體工程不是電腦科學,軟工講究work,correct,最後才是fast

你們演算法大佬捫心自問一下現在的算力我花100w配個機器好還是花100w招個演算法大佬好

這個事情本質是內捲和鄙視鏈,就算你算法學了,後面又會問億級MySQL怎麼優化,手寫autograd之類的問題

人家就是想卡下工資順便體現一下優越感,以我個人經歷來說,就算你都回答上來了,最後還是可以用氣場不合來壓你

14樓:

怎麼看待中國的女人普遍很少的問題?

作為乙個理科生,後來變成了碼農,在辦公室裡根本看不到幾個女的,為什麼中國的男女比例如此失衡?中中國人普遍不生女孩嗎?

15樓:

因為很多程式設計師是半路出家,為了滿足移動網際網路這幾年的快速發展,社會輸出了很多程式設計師,而演算法和資料結構一般在大學才會系統學,屬於基礎科目,需要反覆的練習才能掌握。

培訓機構或者自學是為了找工作,需要的能力是快速實現業務,掌握框架和程式語言API的用法,所以大部分程式設計師都不會學的,費時費力沒有收益。

不過要想在未來程式設計師這條道路上越走越遠,你就要提高警惕了,現在開始學習演算法,不斷刷題,這玩意不需要太高智商,我們大部分普通人通過刻意練習是可以掌握這個能力的,不需要害怕。

國外大公司面試幾乎全都是面演算法的,所以國內隨著制度和商業的不斷發展,以後大廠招人會越來越傾向於面演算法的,不管你是否認同和接受,這就是事實。

16樓:

我覺得這可能是倖存者偏差。你以為是你在拒掉不懂演算法的老碼農,事實上是你的公司被懂演算法的老碼農拒掉了。

所以真正有意義的問題可能是,這個行業為什麼還能養活那麼多不懂資料結構和演算法的老碼農。那你撫心自問,如果其他要素不變,你堅持一直在面試裡問資料結構和演算法,你最後能用合理的招聘成本如期招到人嗎?如果一直招不到怎麼辦?

17樓:沉得很

因為大部分程式設計師工作不需要高深的演算法知識和資料結構.

會這個, 遠不如會做漂亮的介面, 會搭高可靠性, 高吞吐量的系統需求大.

18樓:

資料結構是非常有用的...這兩天還寫了個樹來著(還在debug...),因為最近有個dataset的標頭是json物件轉的,2000多列。

每一列都是類似於json路徑這樣的東西,有的還是陣列而且不知道陣列有多少項,直接用pandas是不太好處理的...

演算法課裡那種演算法來說,業務裡遇到的最複雜的也就是搜尋和樹遍歷這種東西(e.g. 後端寫個aspect依據配置把指定類下的一種id轉成另一種id); leetcode裡的medium和hard很多都是dp,但是這種需要確定解的最優化問題業務裡好像遇到的並不多(或者只有我沒怎麼遇到過)...

做機器學習深度學習相關的話當然需要跑模型,這種非確定性演算法和題目裡講的演算法關係不大(當然也不絕對啦序列問題的解很有可能也要用dp)...但我感覺我現在幹了4個月一直在配環境+寫pandas/spark/sql...前期花在模型調研和選擇的時間大概只有2周,啥時候能用上模型還不知道...

總的來說,演算法和資料結構這種東西是平時大多數時候看起來沒有什麼用,但是關鍵時候如果不知道它,你可能沒有辦法恰當的解決問題。能夠解決問題是工程師的價值所在。

至於為什麼大部分"工程師"不會,我覺得工程師對知識的掌握程度只是另外乙個人類社會服從冪律分布的變數。

19樓:

我說你們到底還要騙自己多久,承認演算法就是行測2.0、絕大多數演算法在工作中毫無卵用,有那麼困難嗎?

經逼友提醒,行測包含數學、歷史、法律、物理等,那這麼看來,還是行測更有用。

20樓:zhebaoer

很正常啊,工齡長的以為你會問工作經驗專案相關的,說白了面試之前就沒準備刷題。

當然還有乙個可能,人家也沒太把你公司當回事,就是去看看而已。

不過既然你不在一線城市,那也有可能,畢竟有追求的都去北上廣深杭了。

21樓:

面向搜尋引擎程式設計足矣,只要你能清楚的知道你遇到了什麼問題,並能清晰的將問題描述出來就夠了。

但很多人往往可能卡在,不知道這是什麼問題,以及不知道怎麼去找解決問題的方法。

比如字串匹配,你知道bm,kmp比暴力查詢快就行,細節根本不用詳細去記。

所以呢,在同乙個演算法別人已經實現了成千上萬遍的時代,你只需要構建乙個技術棧索引就好,剩下的交給搜尋引擎和ctrl c v。

程式設計師記憶力不好,記不住資料結構中的成員,還適合幹這行麼?

作為一名C程式設計師,經常記不住自己定義的巨集和函式名。所以命名規範很重要,這樣大多數時候可以根據命名規範推理出來名字,哈哈。 燃冰飛雪之魂 資料成員不是靠記下來的,而是當提出乙個資料物件,你覺得它應該有什麼屬性,按照這個直覺去找,總能找到差不多的東西。所以你只是不得要領,用了適合自己的方法,也會寫...

怎麼看待「程式設計師很多,但是優秀的程式設計師很少」這樣乙個說法?

心海魚 其實我想說,大部分行業都是如此吧。所有的行業,都需要你去付出踏踏實實地努力並且具有一定的天賦,才能脫穎而出。畢竟每個行業對於優秀的概念雖然不同,但三六九等業內人士應該很清楚。努力去成為那別人眼裡優秀的那一部分人吧。 楊天航 第乙個問題,怎樣看待 程式設計師很多,但是優秀的程式設計師很少 我覺...

怎麼看待打字看鍵盤的程式設計師?

coltfoal 打字看鍵盤不能說明他的水平,但是,絕對是會被別人鄙視的,只是他們沒說出來而已。但被鄙視和水平差是兩回事。打字看鍵盤意味著什麼?意味著你打乙個字母都需要在鍵盤上尋找對應的位置,這是很影響編碼思路的。一定的編碼經驗肯定能讓不會盲打的Coder熟悉大部分的單詞,但是如果配合上標點符號 變...