導航:首頁 > 軟體知識 > 如何驗證一個程序碼是不是坑

如何驗證一個程序碼是不是坑

發布時間:2023-07-13 05:07:34

⑴ 如何辨別一個程序員水平的高低

1.自己介紹項目,看對項目的提煉總結能力(也是抽象能力);
2.自己印象最深的bug,可以知道大概技術深度;
3.設計模式提問,看有沒有學習方法;
4.語法基礎問題,多線,分布,安全等問題,看知識面廣度;
5.智力問題,看反應能力,分析問題思路等
上述五步基本可知是否是一個好程序猿

計科專業從事軟體開發十幾年了,主要在瀏覽器內核領域研究的比較多,最近在研究伺服器後台方向,辨別程序員水平高低主要看做出了什麼產品,如同現在的程序員主要是項目經驗,簡歷上寫的一堆項目經驗都是面試的時候主要提及的問題。經常在面試中會問兩個關鍵點:一個是做過什麼項目;一個是在項目組中承擔什麼職務,畢竟參與過和做的多少程度是不一樣的,這些都是可以通過一些具體的細節檢測出來,問題越具體越是容易看出水準,具體的東西不是能夠編造出來的。

有很多技術公司直接不通過筆試,僅僅通過簡單的面試就確定工資水準了,最簡單的測試程序員水平的直接用筆試的方式,筆試可以把一些細節量化,盡量的細節化也是能測試出程序員基本功的,但這種基本用來測試初級程序員的,很多高級的程序員看到有筆試直接就抬腿走人了,因為有些程序員在一個方向做的時間太長了,很多基本功都忘得差不多了,所以筆試可能不過關,現實中很多程序員筆試不過關,面試還可以,也一樣可以做項目說的就是這類人,起碼這算是非常優秀的程序員。

有很多公司採用谷歌的方式,直接採用上機寫代碼的方式檢驗程序員水平,這種方式比較直接,但在現實中可能消耗的時間以及面試官的精力,目前只有極少數的公司用這種方式,國外的公司用這種方式比較多,這種看基本功非常有效。通過代碼可以看到編碼習慣以及演算法的設計上,都能直接看的出來。

普通的程序員直接看項目的經驗,高級的直接看做過的產品,特別是產品主要設計人員,這就是程序員內心的自豪感,畢竟作為一個程序員起碼要有自己設計開發的產品,也算是不白做一個程序員,在程序員的職業經歷中如果能經歷過一個產品從開始設計的初稿到最後推向市場,如果是完整的經歷,將是一種巨大的財富,只要經歷過一次都會對產品設計有一個比較層次的認識,這種能力需要靠直接的面試語言表達來展示出來,談下對產品的認識以及產品穩定性性能等方面的總結,能到這個層面起碼是高級軟體工程師的級別。

當然有些程序員內在的東西不是靠語言或者寫代碼看出來的,因為一個優秀的程序員不僅僅是代碼能力以及框架能力,還有幾個非常重要的能力

程序員的能力表面是可以直接展示出來,但很多內在需要是需要時間的磨合才能了解,人就才能見人心,而且很多優秀的程序員是培養出來的,能夠長時間在一起的隊友都是時間長了磨練出來的。

希望能夠幫到你。

自認為不是一個好的面試官,因為我認為在這么短的時間內,准確地衡量出來程序員水平的高低是有比較大的難度的,並且我有多次看走眼的時候,面試的時候覺得能力還不錯,但是入職工作了一段時間之後,編程能力不忍直視。

工作之後接觸一段時間,我會從這么幾個方面觀察他們,以判斷技術能力的高低和發展潛力。


能不能出活兒、能不能debug

能不能把開發任務按時按質量地完成,當然是最主要的衡量標准了:

解決問題的方法

在開發過程中,難免會遇到沒有見過的問題,有些程序員遇到問題無從下手,而優秀的程序員,自有一套解決問題的方法。

分析問題、流程設計的思路

有人會認為,程序員的主要工作就是敲代碼,上班大部分時候都是在敲代碼,其實並不是這樣:

總結問題和改進問題的能力

好的程序員,相同的問題不會犯第二次,差的程序員,總會在一個問題上栽跟頭:

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。

不請自來,一介碼農路過,留下些看法。

程序員主要是有四種綜合能力,也就是debug 能力、 performance分析、 保護性編程和 投入產出比。

僅僅獨立完成日後必然成高手?

在這里不能說一棒子打死,至少對於很多人來說,能獨立完成是沒什麼問題的,有的是因為對業務熟悉,有的是真的基礎扎實。但怎麼說呢,程序員和瀏覽器打交道是最多的,現在這個互聯網時代,遇到的大部分問題網路都是可以解決的,也就是普通程序員 + 網路 = 超級程序員。 但很多人也沒明白具體的原理,甚至都是這個項目抄抄那個項目抄抄的,久而久之雖然解決了平時的業務,但進步的空間卻很少,甚至止步不前,寫出來的代碼也可能存在很多坑,所以,僅僅能獨立完成任務的話,離高手還有比較遠的一段距離。

如何辨別高手程序員?

也就是結合我們一開始列舉的那四個能力進行判斷。不同級別的程序員,在那綜合能力面前,強弱也是不同的。例如在奔潰的或者其他性能調優問題上,即使是面對大量復雜的代碼,在信息不全的時候也會一步步的分析,抽絲剝繭縮小范圍,最終定位根本原因

,並且最終給出一個好的方案。

如何成為高手程序員?

當然還有看他摘了帽子是否禿頂這樣的笑話,就再不贅述了。

第一階段(黃金):會用編程語言實現需求,比如現在的業務系統,都會找一些會搬代碼的人來拼工作量,也就是能自己獨立基於搭好的框架實現crud常規操作。

第二階段(鉑金):除了crud,還會有一些自己踩過坑的經驗,知道如何處理一些常見問題,或者可以基於搜索引擎快速解決一些異常情況。

第三階段(鑽石):能解決一些疑難雜症和會通過debug部分源碼類庫查看到這些疑難雜症是如何引發的,並通過編碼解決這些問題,還能進行一些局部的性能優化,類似某個系統介面緩慢可以單獨去優化。

第四階段(星耀):會基於整個系統進行設計和規劃,根據業務特性選擇合適的框架,從源頭控制開發遇到問題的頻率,可以自主的搭建框架並完善機制,了解各個組件工作原理。

第五階段(王者):小說裡面總是說練武功的永遠比不過創造武功的,同樣的道理,用框架的也往往不如寫框架的,所以寫框架的這類人單獨分層。

第六階段(榮耀):其實這個階段不應該列入進來,因為這類人往往不編碼的,只是給出思想;像Hadoop這種框架就是基於人家發表的一些論文(bigdata)進行編碼實現的,這類人注重的是思想和演算法,區塊鏈,大數據,雲計算等等概念的創造和理論的支撐是這類人提出來的,這些人才是真正影響行業走向的人。

程序員的水平高低,不是靠語言或外在表現就能看出來的,不是看他會多少技術、參加過多少項目、寫了多少博客,而是看他在實際業務場景中解決問題的能力,尤其是面對一些特別復雜的問題,或在高強度、高壓工作狀態下解決問題的能力與態度。


技術可以通過學習掌握,但是解決問題、定位問題的能力卻不是一蹴而就。大家可能會說,「解決問題的能力」這個太寬泛了吧,可以更具象化嗎,有具體的測量方法嗎?簡單整理了以下幾點供參考。


優秀的代碼能力

會寫出滿足需求的代碼,早就不是評判程序員水平的標准了。代碼編寫既要滿足業務需求,同時還要考慮後續的軟體維護,說得通俗些,既要自己爽,也要別人爽。一個優秀的程序員,會致力於寫出更簡單、更效率、可讀性強、擴展性強的程序代碼。


邏輯思維

程序員在日常工作中,需要理解各式各樣的業務需求,所以這就需要程序員具備一定的邏輯思維能力。可以說,邏輯思維是程序員的靈魂,因為每一行代碼都是程序員邏輯的體現。


debug能力

項目著急上線,發布時出現問題?

業務高峰時段,系統宕機了?

業務催、運營催、用戶催、老闆催!

各種形態的bug,各種著急的心情,背後無數支眼睛盯得內心慌慌......

這些都是一位合格程序員所需要面對的日常。不同的程序員,在解決問題的方法、效率、質量等方面,都各有千秋。一個經驗豐富的程序員,能夠扛住各方壓力,在復雜條件下找到核心問題,通過抽絲剝繭的分析來找到產生問題的原因,並快速進行應對處理,事後及時復盤總結,減少同類問題出現的概率。


學習能力

隨之互聯網的發展,越來越多的人湧入程序員這個賽道,競爭日益激烈,加之新技術層出不窮,更新迭代快,程序員所使用的語言、框架、模式都會發生天翻地覆的變化。如果不主動學習,你很快就會被落伍淘汰。



溝通能力

這種其實在面試過程中能體現出來,溝通主要是技術溝通,以及和客戶之間的溝通,所有技術都不是閉門造車就能搞定的,溝通能讓事情推進起來更加順暢,包括和產品經理之間的流暢的溝通也顯得非常重要。程序員的能力表面是可以直接展示出來,但很多內在需要是需要時間的磨合才能了解,人就才能見人心,而且很多優秀的程序員是培養出來的,能夠長時間在一起的隊友都是時間長了磨練出來的。


責任心

線上出bug了,第一時間響應、處理;

團隊項目進度緊張、人手緊缺,主動補位;

又或者,在項目推進過程中如果只是關心自己模塊內容,對於整個項目置之不理,只守著自己的一畝三分地。

隨著時間軸的拉長,你會發現,有此f技術能力不是最好的,甚至不如你的小夥伴,最後做到了技術主管或經理、甚至更高職位,這裡面除了技術實力,還有一個叫「責任心」的東西。


結束語

判斷一個程序員的水平高低,核心是其解決問題的能力,而解決問題的能力養成,需要扎實的底層基礎來支撐,要綜合其代碼質量、項目經驗、框架能力、邏輯思維等等多方面,不能單看某一方面。


而對於1-6歲的程序員來說,想要成為一個高級程序員,變得越來越優秀,唯有持之以恆去學習、積累、實踐、修煉。



----end----


一:50歲的時候,頭發還是黑色的濃密的。

二:賺到的錢能保證家人快樂的生活。

三:當公司不要你的時候能成功轉型。

其他的例如編程經驗、寫代碼厲害啊什麼的根本不值一提。

這就是程序員的面試嘛 :-)

(1)是否能熟練使用所用編程語言的主要功能;

(2)是否知道用合適的數據結構解決問題;

(3)是否知道基本的演算法,並且用這些演算法解決問題;

(4)只看少量代碼的話,從變數命名和程序結構一般能夠判斷是否是新手;

(5)給出具體問題,能夠用程序解決,能考慮到所有的邊界條件;

(6)考慮程序的可擴展性,可維護性;

再往高一點走,就需要

(7)面對模糊的問題能夠分析並且找到細節和具體的需求;

(8)知道利用已有的庫,架構和工具等來解決新的問題,而不是什麼都自己實現;

(9)能發現並改進已有程序中的瓶頸;

(10)對整個大項目的程序架構有很清晰的了解,知道相互之間的依賴,以及知道為什麼採用這樣就架構;

(11)給一個大的項目,能夠對整個項目的程序架構和組件進行合理的設計,考慮並行性,低延遲,大數據量等各種需求和應對方式。

帶領團隊已多年,項目數十個,對判別程序員水平的高低,我有自己的看法,歡迎大家一起交流。



1.代碼質量。

優質的代碼,首先是經得起考驗。靜態分析工具過一遍,無錯誤,無警告。當然警告部分需要人工重審,因為靜態分析工具不一定完全正確。過了這一關,重要的還須過測試關,少Bug或無Bug的代碼,才是好代碼。優質的代碼帶有技術氣質和藝術氣質。閱讀起來,有一種賞心悅目的快感,即工整美觀,干凈利落,又蘊含著理論常識,運用技巧,精準到位。



2.表達能力。



3.文檔能力。

文檔形式包括但不限於PPT,文字,圖表,音視頻。文檔內容包括但不限於API說明,工具手冊,項目事項,技術論述,陷阱總結,方案展示,指導手冊。文檔要求必須是滿足公司或部門的規范和格式,否則五花八門的,不利於交流和傳承。



以上3點,是我量化判斷程序員水平的標准,僅供參考。相比水平,其實我更看重程序員的態度,執行力,時間觀念,自學力等等,也是很重要的團隊作戰能力,也可以說是程序員水平的考量吧。

謝謝大家。

閱讀全文

與如何驗證一個程序碼是不是坑相關的資料

熱點內容
技術類的學習記錄文檔怎麼寫 瀏覽:85
怎麼申請建畜牧交易市場 瀏覽:50
滬指什麼時候交易 瀏覽:295
課程銷售如何給客戶發信息打廣告 瀏覽:977
超市推頭賣哪些產品 瀏覽:180
大愛無私愛你深似海怎麼回信息 瀏覽:820
神威氣動代理什麼牌子 瀏覽:509
總代理有哪些地方 瀏覽:85
洗發水代理怎麼做 瀏覽:971
感測器中檢測技術的含義是什麼 瀏覽:944
掛單交易軟體哪個好 瀏覽:295
代理融資租賃公司需要什麼材料 瀏覽:128
租賃市場在積聚著什麼 瀏覽:301
如何拍產品立體照片 瀏覽:125
微信所在盤符變了如何找回數據 瀏覽:122
如何寫推銷產品計劃 瀏覽:478
賣房需提供給客戶哪些信息 瀏覽:17
如何打市場價格戰 瀏覽:402
公司購買商辦房後多久能上市交易 瀏覽:301
農產品免稅需要辦什麼業務 瀏覽:43