① 程序員等級是怎麼劃分的
初級資格
中級資格
高級資格
② 如何辨別一個程序員水平的高低呢
有的時候單純靠一個面試很難辨別一個程序員的水平是什麼樣的。原因很簡單,因為很多面試題在網上都有,如果刻意准備那麼一般都能回答的不錯。所以想辨別一個程序員的水平需要一定的方法。
上述幾方面我們稱為應能力,還有一些軟能力也是非常重要的,比如責任心,對技術的態度,學習能力等等。當然,這些就更難考量了,本文暫不介紹。
如果上述幾方面都比較不錯,那麼這個程序員的水平應該是不錯的。即使對目前的工作的知識儲備可能還有欠缺,但經過一段時間後必然可以
③ 如何辨別一個程序員水平的高低
1.自己介紹項目,看對項目的提煉總結能力(也是抽象能力);
2.自己印象最深的bug,可以知道大概技術深度;
3.設計模式提問,看有沒有學習方法;
4.語法基礎問題,多線,分布,安全等問題,看知識面廣度;
5.智力問題,看反應能力,分析問題思路等
上述五步基本可知是否是一個好程序猿
計科專業從事軟體開發十幾年了,主要在瀏覽器內核領域研究的比較多,最近在研究伺服器後台方向,辨別程序員水平高低主要看做出了什麼產品,如同現在的程序員主要是項目經驗,簡歷上寫的一堆項目經驗都是面試的時候主要提及的問題。經常在面試中會問兩個關鍵點:一個是做過什麼項目;一個是在項目組中承擔什麼職務,畢竟參與過和做的多少程度是不一樣的,這些都是可以通過一些具體的細節檢測出來,問題越具體越是容易看出水準,具體的東西不是能夠編造出來的。
有很多技術公司直接不通過筆試,僅僅通過簡單的面試就確定工資水準了,最簡單的測試程序員水平的直接用筆試的方式,筆試可以把一些細節量化,盡量的細節化也是能測試出程序員基本功的,但這種基本用來測試初級程序員的,很多高級的程序員看到有筆試直接就抬腿走人了,因為有些程序員在一個方向做的時間太長了,很多基本功都忘得差不多了,所以筆試可能不過關,現實中很多程序員筆試不過關,面試還可以,也一樣可以做項目說的就是這類人,起碼這算是非常優秀的程序員。
有很多公司採用谷歌的方式,直接採用上機寫代碼的方式檢驗程序員水平,這種方式比較直接,但在現實中可能消耗的時間以及面試官的精力,目前只有極少數的公司用這種方式,國外的公司用這種方式比較多,這種看基本功非常有效。通過代碼可以看到編碼習慣以及演算法的設計上,都能直接看的出來。
普通的程序員直接看項目的經驗,高級的直接看做過的產品,特別是產品主要設計人員,這就是程序員內心的自豪感,畢竟作為一個程序員起碼要有自己設計開發的產品,也算是不白做一個程序員,在程序員的職業經歷中如果能經歷過一個產品從開始設計的初稿到最後推向市場,如果是完整的經歷,將是一種巨大的財富,只要經歷過一次都會對產品設計有一個比較層次的認識,這種能力需要靠直接的面試語言表達來展示出來,談下對產品的認識以及產品穩定性性能等方面的總結,能到這個層面起碼是高級軟體工程師的級別。
當然有些程序員內在的東西不是靠語言或者寫代碼看出來的,因為一個優秀的程序員不僅僅是代碼能力以及框架能力,還有幾個非常重要的能力
程序員的能力表面是可以直接展示出來,但很多內在需要是需要時間的磨合才能了解,人就才能見人心,而且很多優秀的程序員是培養出來的,能夠長時間在一起的隊友都是時間長了磨練出來的。
希望能夠幫到你。
自認為不是一個好的面試官,因為我認為在這么短的時間內,准確地衡量出來程序員水平的高低是有比較大的難度的,並且我有多次看走眼的時候,面試的時候覺得能力還不錯,但是入職工作了一段時間之後,編程能力不忍直視。
工作之後接觸一段時間,我會從這么幾個方面觀察他們,以判斷技術能力的高低和發展潛力。
能不能出活兒、能不能debug
能不能把開發任務按時按質量地完成,當然是最主要的衡量標准了:
解決問題的方法
在開發過程中,難免會遇到沒有見過的問題,有些程序員遇到問題無從下手,而優秀的程序員,自有一套解決問題的方法。
分析問題、流程設計的思路
有人會認為,程序員的主要工作就是敲代碼,上班大部分時候都是在敲代碼,其實並不是這樣:
總結問題和改進問題的能力
好的程序員,相同的問題不會犯第二次,差的程序員,總會在一個問題上栽跟頭:
我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。
不請自來,一介碼農路過,留下些看法。
程序員主要是有四種綜合能力,也就是debug 能力、 performance分析、 保護性編程和 投入產出比。
僅僅獨立完成日後必然成高手?在這里不能說一棒子打死,至少對於很多人來說,能獨立完成是沒什麼問題的,有的是因為對業務熟悉,有的是真的基礎扎實。但怎麼說呢,程序員和瀏覽器打交道是最多的,現在這個互聯網時代,遇到的大部分問題網路都是可以解決的,也就是普通程序員 + 網路 = 超級程序員。 但很多人也沒明白具體的原理,甚至都是這個項目抄抄那個項目抄抄的,久而久之雖然解決了平時的業務,但進步的空間卻很少,甚至止步不前,寫出來的代碼也可能存在很多坑,所以,僅僅能獨立完成任務的話,離高手還有比較遠的一段距離。
如何辨別高手程序員?也就是結合我們一開始列舉的那四個能力進行判斷。不同級別的程序員,在那綜合能力面前,強弱也是不同的。例如在奔潰的或者其他性能調優問題上,即使是面對大量復雜的代碼,在信息不全的時候也會一步步的分析,抽絲剝繭縮小范圍,最終定位根本原因
,並且最終給出一個好的方案。
如何成為高手程序員?
當然還有看他摘了帽子是否禿頂這樣的笑話,就再不贅述了。
第一階段(黃金):會用編程語言實現需求,比如現在的業務系統,都會找一些會搬代碼的人來拼工作量,也就是能自己獨立基於搭好的框架實現crud常規操作。
第二階段(鉑金):除了crud,還會有一些自己踩過坑的經驗,知道如何處理一些常見問題,或者可以基於搜索引擎快速解決一些異常情況。
第三階段(鑽石):能解決一些疑難雜症和會通過debug部分源碼類庫查看到這些疑難雜症是如何引發的,並通過編碼解決這些問題,還能進行一些局部的性能優化,類似某個系統介面緩慢可以單獨去優化。
第四階段(星耀):會基於整個系統進行設計和規劃,根據業務特性選擇合適的框架,從源頭控制開發遇到問題的頻率,可以自主的搭建框架並完善機制,了解各個組件工作原理。
第五階段(王者):小說裡面總是說練武功的永遠比不過創造武功的,同樣的道理,用框架的也往往不如寫框架的,所以寫框架的這類人單獨分層。
第六階段(榮耀):其實這個階段不應該列入進來,因為這類人往往不編碼的,只是給出思想;像Hadoop這種框架就是基於人家發表的一些論文(bigdata)進行編碼實現的,這類人注重的是思想和演算法,區塊鏈,大數據,雲計算等等概念的創造和理論的支撐是這類人提出來的,這些人才是真正影響行業走向的人。
程序員的水平高低,不是靠語言或外在表現就能看出來的,不是看他會多少技術、參加過多少項目、寫了多少博客,而是看他在實際業務場景中解決問題的能力,尤其是面對一些特別復雜的問題,或在高強度、高壓工作狀態下解決問題的能力與態度。
技術可以通過學習掌握,但是解決問題、定位問題的能力卻不是一蹴而就。大家可能會說,「解決問題的能力」這個太寬泛了吧,可以更具象化嗎,有具體的測量方法嗎?簡單整理了以下幾點供參考。
會寫出滿足需求的代碼,早就不是評判程序員水平的標准了。代碼編寫既要滿足業務需求,同時還要考慮後續的軟體維護,說得通俗些,既要自己爽,也要別人爽。一個優秀的程序員,會致力於寫出更簡單、更效率、可讀性強、擴展性強的程序代碼。
程序員在日常工作中,需要理解各式各樣的業務需求,所以這就需要程序員具備一定的邏輯思維能力。可以說,邏輯思維是程序員的靈魂,因為每一行代碼都是程序員邏輯的體現。
項目著急上線,發布時出現問題?
業務高峰時段,系統宕機了?
業務催、運營催、用戶催、老闆催!
各種形態的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點,是我量化判斷程序員水平的標准,僅供參考。相比水平,其實我更看重程序員的態度,執行力,時間觀念,自學力等等,也是很重要的團隊作戰能力,也可以說是程序員水平的考量吧。
謝謝大家。
④ 如何看出一個程序員的技術能力和水平
其實,評論一個程序員技術的高低,不是看他會多少技術,又懂多少技術。參加過什麼大型的項目,也不是看他有沒有自己的博客,github有多少star。
而是看他解決問題,定位問題的能力。這個很重要,真的很重要。
技術可以很快上手使用,但是解決問題定位問題的能力不是輕易就行的。特別是在高壓下解決問題的能力。
下面是師姐為大家整理的一些建議:
解決問題
1.代碼的命名要規范。
代碼是寫給人看的好嘛!代碼是寫給人看的好嘛!代碼是寫給人看的好嘛!
headImg是什麼鬼?我能以為是banner么,頭部的圖片,請原諒我蹩腳的中式英語!avatar這個呢、portrait這個呢?會不會更好些?英語不好就不能用好有道、google翻譯么?還有用中文拼音命名的,親,我們用的是英文做為腳本好么?你要用這樣的,用易語言可好?!
瘋了!
為什麼要用框架?一個很重要的原因是命名規范,目錄規范,結構規范,分層規范,有利於團隊協作,不要本末倒置!
2.架構和規劃能力很重要,模塊分層,解耦設計什麼的,文件目錄嵌幾層?
這其中又跟命名的能力能搭上點關系。命名都命不好,目錄結構怎麼建?
url不要做的漂亮些嗎?不考慮seo了?
你喜歡addGoods還是喜歡goodsAdd?
請你尊重點我的那些初高中英語語法好么?
3.協助能力、可持續能力。
最好的程序代碼是脫離其產生者的。
為自己程序處處救火的程序汪並不是一條好汪。
我記得一句話就是:別想著你的代碼以後還有機會重構!
每次說,額,這里我後面會改的,會改的,但是可惜,現實情況是根本不會給你這個時間的。
代碼寫出來,一是要爽了自己,二是也要爽了別人。
4.debug的能力、總結能力、學習能力真的很重要,代碼寫出來真的花的時間不長,但擦屁股的時間比寫代碼的時間多多了!
出了問題不記錄,寫個博文都好啊,我可沒那麼強大的記憶力,所以最討厭考記憶力。
5.不要一貫的使用各種演算法,秀演算法的你們夠了,要寫去寫底層,應用的場景比較多。
應用層面的程序,演算法的應用不是特別多,大部分都是業務代碼。以這個作為評價標準的,真心然並卵。
⑤ 程序員的技能水平如何評價
1、基礎理論知識
2、架構設計理解能力
3、工程優化意識
4、技術潛力
5、自學能力
⑥ 根據做項目的多少判斷程序員的水準是否合理
有很多技術性企業立即不通過筆試,只是經過簡潔的招聘面試就明確薪水水平了,非常簡單的檢測程序員水準的立即用筆試的方法信頌,筆試可以把一些關鍵點量化分析,盡可能的關鍵點化也是能測驗出程序員基本技能的,但這類基本上用於檢測初中級程序員的,許多高端的程序員見到有筆試立即就伸腿走人了,由於有一些程序員在一個方位做的時長太長了。
並不是看他會是多少技術性、參與過是多少新項目、寫了是多少blog,反而是看他在具體業務場景中處理問題的能力,尤其是對待一些尤其繁雜的問題,或在高韌性、髙壓運行狀態下解決困難的能力與心態。看一下他在應對很多的、繁雜的編碼,能否煞有其事,只能一點或是懂點毛皮是肯定不可以擔任程序員此項工作的。程序員會應對各式伍物各樣的狀況,只能這一不容易那一個的是不容易圓滿完成每日任務的。
⑦ 如何用5個問題考察一個java程序員的水平
可以的,但想更快地進步,在Java熟練的情況下,可以考慮掌握下面知識。
若開發基於 Web 的應用,下面這些內容應該熟練掌握:
Web 相關技術,比如 HTML、CSS、Javascript、jQuery
JSP/Servlets
Web 框架,比如 SSH 三大框架、myBatis
XML 和 JSON
Web 伺服器散明,比如 Tomcat
Web 應用伺服器,和嘩WebLogic、WebSphere
一些基本庫,喚掘行比如 Java mail、log4j 等
Java 程序員都應該掌握的資料庫技術:
SQL 查詢語句:Inner Outer Joins、Group by、Having
存儲過程
觸發器
游標
資料庫驅動(JDBC)
一些工具和思想方法:
開發工具:比如 Eclipse、MyEclipse、IntelliJ IDEA
版本管理工具,比如 SVN、Git
測試:單元測試、jUnit
需求分析
版本管理
⑧ 企業老闆如何辨別程序員的能力高低
老闆辨別程序員能力,無非通過工作效率以及客戶/用戶對項目的滿意程度來判斷。說到增加效率,其實可以用SoFlu軟體機器人來實現,通過人機協同自動完成軟體後端開發、前端悶譽皮開發、測試、運維,平常做項目也能用它∞省時還省事不少螞差,之前虛亂中石油做一個項目就用軟體機器人幫忙,45天左右就收工,老闆一看這結果,可不就是覺得你有能力嘛!
⑨ HR怎麼通過簡歷來判斷程序員是否優秀
01.簡歷中項目的參與度、貢獻度
簡歷本身的效用信息往往非常局限,看了簡歷之後,也難以形成對候選人的初步判斷。但我們其實可以通過項目經歷上的信息,來評估候選是否完整、深入參與其中。
在候選人簡歷的項目板塊,我們可以查找是否有以下關鍵信息:本人在項目中的角色?比如後台系統開發,主導搭建了頁面框架,提高代碼質量;公共組建的提取、編寫。解決了什麼樣的問題?比如通過自動化,讓代碼易於管理;統一的編碼規范,更有利於多人合作,降低了代碼出錯率;性能上帶來多少提升?比如單頁應用讓請求次數變少、頁面呈現更快,用戶體驗更好了。通過以上信息,我們基本上可以判斷候選人在項目中的角色,或者從解決的結果來看能基本評估出候選人在整個項目中的貢獻度。
另外一種是簡歷上的項目闡述,可以通過以下兩個例子對比:例子一:A:應用 xx 技術,解決了XXXB:應用 xx 技術,解決了XXX,出錯率降低了 0.1% 等。例子二:A:結合使用 xx,實現了 app 登錄和個人資料的自動填充B:結合使用 xx,實現了 app 登錄和個人資料的自動填充,提高了多少的轉化率我們可以直觀看出,有量化的結果的項目履歷更有說服力,也可以側面證明候選人是有深度參與到項目中,才能對數據結果有一定的了解。
02.候選人在技術社區的使用情況
很多優秀的技術人才都有分享的習慣,比如在GitHub、知乎等社區都會分享一些自己的技術經驗貼。通常來講,如果候選人有在社區發帖的習慣,確實會增色不少。比如全球最大的開源社區GitHub,大多數程序員都會有賬號,但這個只能算是真正的「圈內人」,如果是GitHub的重度用戶,其實非常亮眼的:如候選人在GitHub發布的項目經常能收獲很多follower和star,那正是其能力的體現,可以通過其貢獻的項目來評估;如果能長期堅持使用GitHub,也能說明的是這個人心態比較開放,對業界比較關注、律己、有耐心;GitHub上大多數代碼是經過長時間構思和反復修改重構,代碼質量可以很好反映其當前的Code水平,其中也可以窺見解決問題的能力。
經常在技術社區發帖互動,可以說是判斷是否為優秀技術程序員的加分項,但也只能是敲門磚,不能過份強調它的重要性。
03.通過代碼筆試,直擊簡歷
要看能力最終還是應該考查編碼能力。面試官或HR其實可以通過一場在線筆試,在簡歷初篩階段來進一步判斷是否為大牛。
面試官可以設置一些耗時較短,考察具體硬技能的題目,來考察候選人的基本功,將簡歷造假的同學篩掉,在ShowMeBug筆試平台,支持不同職級、不同語言、不同維度等題目,面試官可以快速發一起一場筆試,可以節省面試官大量的時間;
對於簡歷中的項目,其實可以設計一個非常真實的問題,比如你目前有獨立設計實現過一個完整的功能嗎?你研發的這個功能產生了什麼作用,你在項目中扮演一個什麼角色?ShowMeBug筆試支持音視頻題型,面試官可以量身設計,讓候選人更加真實的回答。
⑩ 怎樣快速確定程序員編程水平
想要快速確定程序員的編程水平,可以從以下四個方面考慮:
第一,知識的考察。這個是幾乎每個公司都會做的,也是很有效的手段,基本就是考試。包括問語法問標准演算法問API問一切有標准答案的問題。一個人懂得多,不一定寫得特別好,但是什麼都不懂一定寫不明白。這個方式還可以按需求選人才,比如我們就在php做前端,那我就可以問一堆關於php的,如果我是做嵌入式的,那我可以問一堆c。可以考察這個程序員在和公司需求的交集上完成的怎麼樣。這也是最最簡單和直觀的方法。
第二,對過往項目的理解。這個也是在簡歷關很常問的,說說你當時做的這個項目吧。這個問題非常有效地考察了他是否理解他之前做的東西。有的人簡歷寫的巨漂亮可是實際那項目和他沒關系,或者他就是復制粘貼的代碼,其實自己啥都沒寫。這種時候你和他聊的足夠深入之後能很明顯地發現他自己說不明白了。同時還可以考察一定的語言表達能力和邏輯能力。用我們的話說,先問到面試官不會的深度,然後讓他給面試官講明白。如果他做的東西,他蒙圈的時候比面試官還早(前提是面試官不是搞這方向的),那一般就比較悲劇了。
第三,對寫程序本身的理解。我們很喜歡問一道題,描述一下你是怎麼寫程序的。凡是說我事先design好所有的模塊、介面、功能,然後逐一實現,然後程序就work的,我們都心裡默默補上「呵呵」。因為這是不可能的,只能說明他沒寫過大程序或者沒總結過寫程序的經驗。沒有人在完成一千行以上的程序的時候在沒寫之前就做好所有模塊設計的,何況更大的程序。當然還有就是他會不會認為程序跑通一次就完成了(即寫程序有沒有test階段)之類的。
第四,動手寫程序的能力。這個說實話是面試的時候不太容易考的,因為時間有限。現在的大公司基本是45-60分鍾一輪,一輪還要問好幾個程序題,所以寫的代碼都是片段的,大概20行左右,根本沒法體現一個人會不會寫程序。所以很多人不需要會寫程序,只需要刷好leetcode之類的演算法題庫就可以進大公司(相信我我認識很多)。我們認為一個好的程序員一定要在限定時間之內完成一個完整工作,滿足要求的程序。從輸入到輸出到corner case的驗證。而不僅僅是研究明白某個基礎演算法如何用nlogn而不是n^2解決。這一關卡下去了無數看起來很美好的人。因為我們的題目是不可能在那個時間內找到最優解的,就像絕大部分工程中的編程一樣。一個較好的可用解往往比最優解要有價值的多,因為後者需要大量的時間,很可能沒有前者直白,而且提升未必很高。這是我們公司最在乎的一點。