❶ 程序員的成功面試技巧
程序員的成功面試技巧
程序員的成功面試技巧,程序員在近幾年來是很熱門的一個職位,因為在很多人眼裡程序員的收入是很高的,程序員想要工資高在面試的時候也是很講究技巧的,下面分享程序員的成功面試技巧?
1、給自己寫一份非常專業的簡歷
我的建議是,如果你想增加自己的入選機會,那最好還是花點錢製作遲凳一份專業的簡歷。相較於你將來可能得到的巨大收獲,這真的只是一個小小的投資。
2、研究面試官
當我聯系程序員來面試的時候,我總是會事先發電子郵件給他,並附上我的名字和博客地址。但是讓我驚訝的是,當我給他面試的時候,他竟然對我還是一無所知。
再舉個正面的例子,我在面試時也碰到過這類開發人員,甚至能對我以前寫的一篇博客或者做的教學視頻上面的內容侃侃而談。
你說我會推薦哪個?
面試官也是人,也會有人性的弱點和特點。Dale Carnegie曾說過,要讓別人對你感興趣,最簡單的方法就是你先表達出對對方的興趣。
不管這種方法是否有欠公正,但是如果你想面試成功,那麼我建議你事先最好先好好研究一下你應聘的這家公司和面試官(如果知道的話)。
當今社會的信息是如此的發達,我們完全可以在Facebook、Twitter、微博、博客上找到任何人的資料。即使你只是大致瀏覽一番,也會讓你受益良多。
3、獲得內部推薦
知道找工作最簡單的方法是什麼嗎?那就是獲得內部推薦。
這不但可以增加面試機會,還能提升40%的錄用幾率。
前陣子,我找到了一家心儀的公司。然後直接投簡歷?NONO,猜猜我是怎麼做的吧?
首先我找到一名和我有共同想法和意見的開發人員,然後開始關注他的博客。
接著我在他的博客中留言、發表建議,並且表現出對他的工作和公司非常感興趣的想法。最後我成功拿到了這個寶貴的內部推薦資格。
很多程序員會說,「可是,某某某公司裡面的人我一個也不認識啊」。如果你想就此放棄,那當我什麼也沒說,如果你願意試試,我敢打賭,你總能想出一種方法達到你的目的。
不過這有個秘訣,那就是首先你得在網上創建自己的「名片」——讓別人有了解你的機會,所以do it now吧。
4、 學會解決演算法問題
這是每一個開發人員都應該具備的重要技能,而且真要掌握起來也並非那麼難。
在很多面試中,都會有這樣的問題,要求你在白板或者電腦上解決編程問題,但是許多程序員,即使是那些非常優秀的程序員,都會一下子大腦一片空白,完全理不出思路來。
如果你能花時間學會如何解決這種類型的面試問題,那麼下次再碰到這種場景,就不會這么緊張了。
我們會緊張其實和怯場無關,主要是因為我們不熟悉這些問題,也沒有自信能解決這種問題。
在這方面建立起自信之後,你就再也不會緊張了。
5、活力洋溢地回答問題
只用一個字或者一句話,照本宣科平平無奇地回答問題,或許在技術上是正確的,但是你忘了應該藉此機會好好展示自己的激情——這才是一個開發人員能帶給團隊的最大正能量。
舉個例子說,如果我問你什麼是多態性,我不是要你按照課本中的定義重復給我聽,我希望你能就這個主題闡述一下,然後我們可以更深入地聊一聊。
6、小心「陷阱」問題
你為什麼換工作?
說說你最大的優點和缺點。
最近一次你是如何解決和同事之間發生的技術分歧的?
在回答問題之前,你最好明白面試官問這些問題的目的,掌握如何回答這類問題的技巧。
就先說說第一個問題吧「你為什麼換工作?」
侍坦在大多數情況下,面試官想知道的是你是否是一個愛說三道四、慣於誹謗抨擊僱主的人。所以千萬不要上當。
7、永遠不要撒謊
最糟糕的事就是在面試的時候撒謊。
知之為知之,不知為不知,如果你確實不知道,千萬不要自作聰明來編造問題的答案。
相反,你應該誠實地說,你不知道或者你並不是100%肯定,但是你願意嘗試一下,然後再講講自己的想法。碼談旅講完之後也可以問面試官正確答案是什麼,以顯示你對此非常感興趣。
實話告訴你,大多數面試官問的問題都是他們知道的問題,不然如果你濫竽充數給你通過的話就會顯得他們像個傻瓜。所以千萬不要抱著僥幸心理,一旦發現你在撒謊,面試官馬上就會質疑你的人品。
8、不要太誠實
很多程序員會過多地透露自己的信息,不要以為誠實和完全透明就是最好的政策,殊不知過猶不及。
第7條所說的不可撒謊誠然不錯,但是我們也沒必要將自己所有生活的細節和所有缺點都告訴給面試官。
有個性是好的,但是如果暴露了性格缺陷就壞事了。
試想一下,要是你說自己喜歡賭博或者沉迷於魔獸世界,我敢打賭,面試官肯定會重新審視你。所以在說自己信息的時候一定要慎重,因為這不但會暴露你的缺陷,還會顯得你缺乏應有的.判斷力。
9、掌握計算機科學的基礎知識
是的,很多程序員在面試的時候,甚至理直氣壯地說,他們不知道鏈表和堆棧,因為他們沒有受到正規教育或者早就還給老師了。
我也承認我們在工作的時候是用不到那些深層次的計算機科學概念的,但是作為一個專業的軟體開發人員,你至少應該知道一些基本知識。
舉個例子說吧,你請電工來重新給你家的房子布線,但是這電工一點也不知道任何電氣工程的基本知識,你還請他干不?同理,我們也是如此。
10、關於經驗
這是最後一點,但並非最不重要的,很多開發人員,特別是剛進入這一行的新手,往往缺乏相關的經驗,也不知道如何增加所謂的工作經驗。
這有點像是雞和蛋哪個先出現的問題。
那麼又該如何增加經驗呢?
關鍵是要用創造性的方式。有很多方法都可以獲得工作經驗,但是卻不必真正去一家公司上班。
給你點提示:
參加開源項目
啟動開源項目
做一個移動app,放到App Store里
寫一個小型的Web應用程序
參與代碼交流和用戶組
這些方式都可以作為工作經驗寫到簡歷中去,只要自己有想法,不愁沒經驗。
希望這些技巧能對各位有所裨益。如有不同想法,也請不吝賜教。
程序員的中年危機是什麼
中年程序員危機
近日,中興網信員工歐某打開26樓辦公室窗戶縱身躍下,結束了42歲的生命。
目前有多種說法,有說因股份轉讓價過低和人事部產生分歧,有說疑因內部宮斗被離職,甚至還有消息說歐有精神方面的問題。
盡管具體原因仍待進一步的核實,但卻由此引發網上一波關於中年職場危機,特別是中年程序員危機的討論。
一般來說,一個行業的收縮導致人員數量與結構的調整,大致可以用一個簡單的模型來描述:行業規模縮減,行業人員減少,公司數量減少或規模縮減,進而導致管理層崗位變少,原本的管理層,被迫降至轉入下一級崗位。
這種降崗機制層層傳遞,高層降為中層,中層降為基礎管理崗,基礎管理崗降為一線員工。與此同時,由於行業規模的縮減,一線員工數量也在減少。
於是,一線員工失業,同時,停止招收該行業的新畢業生。在這個模型中,一般來說,即便行業收縮,中層也不用愁就業,仍可留在本行業中,最壞也不過是降崗。
中年人學習能力下降明顯
不過,在程序員行業中,有一些特別的因素,導致了其不同於一般行業的現象。
35-45歲的中年人,學習能力下降明顯。與此同時,這是一個新技術不斷涌現的時代。
一個人進入職場初期的技能、概念,過了20年後,已經完全不一樣了。程序員這個行業,更是把這個特點發揮到極致。
此外,精力明顯下降,不能熬夜,加之家務瑣事纏身,高強度工作即便有意願也很難付諸行動。
如果說其他行業的中層人員降級後仍可游刃有餘的話,這個行業的中層降崗後,會不如自己新崗位上的同事。
所以,程序員密集的IT、通訊行業,很多中層員工就處於一個很尷尬的地位。即便勉為其難地接受,也會面臨收入大幅度下降的心理適應問題。
如果考慮到資產配置中較高的按揭比例,當資金鏈斷掉,這就成為不可承受之重。
❷ 如何招到一個靠譜的程序員
1. 簡歷看人
閱讀簡歷永遠是面試的第一步。好的簡歷一定是正確、清晰並且能夠體現候選人最有價值一面的。我首先會過濾掉那些包含錯別字,文句不通或沒有邏輯性的簡歷,因為如果一個程序員連自己的簡歷都不願意去仔細檢查並完善的話,很難想像他寫出來的代碼質量會如何。接著,我便會重點閱讀簡歷中的項目經驗部分,在這里我能夠看到面試者的開發經驗,技能棧,並且判斷他們熟悉的技術框架、工具是否與目前公司要求相匹配。
這里,我還會特別關注面試者是如何來寫這部分項目經驗的,你需要用盡可能簡練的文字來描述項目的背景,你在項目中承擔的角色、參與項目的時長,你用到的技術、以及你在項目中的亮點等信息。優秀的程序員們往往有一個共同的特質,那就是善於歸納,並能夠一針見血的發現問題或把一個問題說清楚。我經常看到面試者在簡歷中像寫故事一般地描述他們的項目經歷,光這一個章節就有好幾頁,其實這反而會給你減分,因為這會讓面試官判斷你缺乏必要的歸納能力。
最後你的一些與編程有關的社會化活動,如:你在GitHub上的開源項目,在知乎、V2EX中給他人的解答以及你的個人技術博客等等都會給你加分,因為這說明你對所從事的工作有著極大的熱情,並願意在業余時間去學習和提高自己,就像在我之前的 「給職場新人的10點職業建議」 一文中提到的,如果你要成為一個領域的專家,那你必須花費超過10,000小時,而這光靠工作時間是遠遠不夠的。
2. 給面試者10分鍾介紹自己最擅長的
當面試者通過了筆試和HR面試之後,你就需要面對面地對候選人進行面試。我遠不是什麼面試專家,但我有一些自己的獨特方法。我討厭問一些很個人的問題,比如你的職業規劃是什麼?你為什麼想換工作?等等。我更願意給面試者10分鍾時間,讓他介紹自己最擅長和最感興趣的領域。這往往能幫助我很快作出下面的判斷:
這個人對他所做的事情是否充滿激情
他們是否能在團隊中很有效地進行溝通
他們是否在專業領域足夠擅長
你的團隊是否會樂於和這個人一起工作
這一招我在面試中用得很多,而實踐證明也確實非常有效。
3. 基礎打牢了嗎?
一般,有一定規模的公司都會為面試者安排機考或筆試,從而能首先篩掉一批未能通過的面試者。另一些規模較小的或初創公司則會讓面試官直接進行技術面試。其實,我覺得這兩者的差別不大,有經驗的面試官往往能夠通過幾個最簡單的技術問題,判斷出面試者的技術基礎是否牢固,這不是為了證明他有多優秀,而是用來判斷他是否是一名合格的程序員。對於我來說,並不看重機考的成績,因為機試的考題很多能夠在網上得到,特別對於一些外包公司,他們總是能夠通過各種途徑得到考題,從而使得他們推送的外包能夠順利通過筆試。
下面是我經常會問的幾個問題(JAVA):
HashTable與HashMap有什麼區別?
Servlet是線程安全的嗎?
JSP中 @include跟jsp:include的區別
HTTP的response code 403和500分別代表什麼
......
這些問題都很簡單,但一些基礎不牢的程序員往往會在這個時候露餡。當然,根據面試崗位的不同,你還可以有針對性地問一些問題,例如,你需要找一個能寫核心演算法的程序員(比如 銀行的總賬計算,或者保險公司的保費計算),那麼你可以問一些演算法相關的問題。
4. 技術深度夠嗎?
具備牢固的技術基礎,一般就可以滿足項目中普通程序員的要求了,但如果你需要找的是一個資深程序員,那麼你還需要對面試者的技術深度進行考察。我們現在做項目時都會大量使用框架,這能使我們的開發效率和質量都得到提升和保障,但同時也降低了對於程序員開發技能的要求。因此我一般會詢問面試者下面的問題,來考察他對所使用框架的掌握程度。
請你描述一下,在這個項目中,從一個HTTP請求發起,到最終的Response返回,它在你的系統和框架內部是如何流轉的?
這個問題往往能夠判斷出面試者對於相關技術掌握的深度。較初級的開發人員描述的層級往往比較淺,比如使用Spring MVC框架的,只能說到實現一個Controller繼承BaseCommandController(甚至很多開發人員只知道繼承了一個公司內部框架的基類),至於再往下Spring框架是如何進行內部流轉的,就再也說不清楚了。而更資深的開發人員,往往能說出框架內部的實現機制,以及如何調用和處理的。在面試者描述的過程中,你還可以穿插詢問一些比較有深度的問題,比如框架中某個類這樣設計是哪一種設計模式的體現,採用這樣的設計有什麼好處等等。這比讓面試者默寫一個設計模式代碼要有效、自然得多。
除了技術層面上的考察之外,對於資深開發人員,還需要考察他們的設計能力。說到軟體設計,大部分面試者都能熟練地背出面向對象的三個基本特性:繼承、封裝、多態,也能把它們的概念描述清楚。但我一般會問下面的這個問題來考察他們的面向對象設計能力。
請用一段程序代碼描述我們所在的這間房間。
我驚訝地發現至少有一半的面試者都很難准確使用Interface和Class來給房間建模,也有一些人會將最基本的代碼語法或關鍵字寫錯。
5. 選擇適合所在企業文化的人
這一點也曾是我經歷的一個誤區,我總是希望能為團隊招到技術能力最強的人,而忽略了他是否與整個公司和團隊的文化相匹配。這往往會造成,雖然招到了人,但沒過多久就因為理念不同不歡而散的結果,反而給公司帶來了損失。讓我們看看GitHub的負責人是怎麼說的。
我們很嚴肅地看待我們自己關於招聘流程的哲學。我們希望每一個GitHub員工都了解他們所要面對的環境,並保證他們是能夠很好適應的。這包括我們所創造的文化、哲學、計劃、錯誤甚至是晚餐。比起他們的技能是否滿足要求,我們更看重他們的潛力以及是否能夠適應我們的企業文化。
我曾在具有鮮明文化差異的不同公司或團隊工作,看到許多崇尚開放、開源的程序員在一個相對封閉,具有很多流程以及規范限制的公司中很難發揮,最終選擇離開。因此在招聘程序員時,選擇合適的往往比選擇最優秀的更重要。
6. 行為面試法
行為面試法可能是我在整個面試過程中唯一用到的教科書面試方法。一個程序員是否能夠很好地工作,不僅取決於他能否順利地完成開發任務,更重要的是在遇到一些特殊場景或問題時,他能否合理有效地處理和解決。行為面試法能夠幫助我們從面試者描述的過去某一具體事件中,預測未來他在工作中可能的表現。下面便是一個我經常用到的問題。
請談談你在這個項目中遇到的最大困難或挑戰是什麼,你是如何解決的。
從面試者對上面這個問題的回答中,我能夠很好地判斷他是否有較強的獨立解決問題的能力,而我認為這是除技術能力之外,程序員最應具備的能力。
7. 給他們一個虛擬任務
經過上面的這些環節,你可能對面試者的整體情況已經比較滿意,但先別急著下結論。我曾見過能夠順利通過上面所有面試步驟,並且被僱傭的程序員,當他們進入實際工作後卻沒能把事情做好。
在你確定是否錄用他們之前,可以給他們一個虛擬任務。我不是說一個抽象的程序問題,而是指一個真實的,可能就存在於你當前項目中,並且需要在一兩個小時之內完成的一個開發任務。我曾經出過這樣的考題:
寫一個小程序將一個以特定格式(如CSV)存儲的文本文件轉換為XML格式,並存儲為另一個文件。
你可以給他一台已經配置好開發環境以及IDE的電腦,讓他當場編寫代碼。當然如果時間有限,你也可以直接詢問面試者的實現思路,並簡單用偽代碼來描述處理過程。通過這個測試,你能夠看到很多細節,比如面試者是否有良好的編碼習慣,異常處理是否規范,代碼邏輯是否縝密高效,以及他的開發效率是否足夠高。如果面試者給出了非常優秀的解答,那麼你就應該能夠判斷他確實是一個優秀的候選人了,因為我從沒碰到過能夠通過上面的測試,卻在實際工作中無法做好的人。
❸ 做程序員要什麼學歷和條件
學歷越高,競爭力越強。
實際上無論是哪個行業,學歷都很重要。但在互聯網行業學歷並非唯一重要的,後期來說技術和項目經驗更重要。
如今互聯網行業作為高薪行業,吸引了一大批人前往就業,其中不乏本科生。對於一個不了解你的個人、團隊或者是公司老闆來說,學歷是他們了解你的第一手材料,學歷告訴了他們你曾經的學習經歷,側面反應了你其他方面的綜合情況。
雖然學歷很重要,但不代表一切。以hua為裁員為例,人家裁的都是工作十來年,考評普通職級一般,收入和股票都偏低的一群人。也就是說:這部分人的工作具有可替代性。
hua為裁員是為了優化結構,不是為了斷臂求生。核心員工,不僅不可能被裁,而且會被重點關照,停止流失!!!
而低學歷的人一點機會也沒有?並非如此,實際上在許多互聯網大廠不乏一些大專學歷的同學。學歷很重要,但不是全部,只要有足夠證明優秀的技術及成果,是金子終會發光。
想要系統深度學習,你可以考察對比一下開設有IT專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,建議實地考察對比一下。
祝你學有所成,望採納。
❹ 如何面試一名程序員
如何面試程序員
一、提問之前的准備
首先,最重要的是,你自己一開始就應該想清楚:
1. 需要新員工完成什麼樣的任務?
2. 怎樣的人能完成這樣的任務?
3. 哪些途徑和方法可以發現這樣的人?
只有明確這些根本性的問題,才能正確高效地完成面試。
二、提問的原則
假定你對上一節的三個問題,已經有了清晰的想法,那麼接下來就可以設計如何提問了。
有一些提問的原則,是你應該遵循的:
每一個面試問題都有明確的目的。你不僅自己了解,還能向其他面試官解釋清楚。
多提一些開放性(Open-ended)的問題,而不是那種用Yes/No就可以回答的問題。這樣做使你有機會與面試者展開討論,並且提出後續的問題,盡可能多地了解對方。
不要問宗教、家庭、健康、個人隱私等方面的問題。
不要問太復雜的問題。因為面試者沒有太多思考時間,所以無法周全地回答,你也就無從判斷他的能力了。
三、考察專業能力
為了確認面試者是勝任的,你可以問一些與職位相關的專業方面的問題。(不過通常來說,一次面試不足以看出一個人的專業能力。)
比如,你的招聘職位是系統管理員,你可以問"如何快速地在50台機器上部署Linux?"(提示:正確答案不是刻錄50張安裝光碟。)
另外,你還應該向面試者了解他的過去,因為過去是未來的最好預測依據。不過,提問的重點不要僅僅是他過去的成果,更要關注在當時的環境中,他是如何決策和實施的。
四、考察綜合素質
因為人是會發展的,所以某種程度上,面試者的綜合素質要比他的專業能力更重要。
所以,具體的技術問題(如何調用API、什麼是設計模式、編程語言的語法等等)可以少問一些,更應該關注面試者的事業心、對工作的熱情、進取心、自律能力、毅力等方面。
下面是一些典型問題:
Why did you get into development?
你為什麼開發軟體?
How many technical books did you read in the past year?
去年你讀了幾本技術書籍?
What was your favorite technical book in the past year? What did you learn from it?
去年你最喜歡的技術書籍是哪本?你從中學到了什麼?
What websites do you read regularly, related to development?
平時你經常訪問哪些編程類網站?
Do you maintain any open-source projects?
你有自己的開源項目嗎?
Do you code in your spare-time?
業余時間你編程嗎?
Do you love programming, or do you do it for the money?
對於你來說,編程是一種愛好,還是一種謀生手段?
Have you accomplished anything important in your career yet? Do you want to?
你的職業生涯之中有什麼重要的成就?它是你主導的嗎?
What would make you feel that you have done something important?
什麼事情會讓你很有成就感?
五、考察理性思維
某些情況下,你可能需要了解面試者的分析判斷能力,看他能否全面地思考問題、客觀地評價自己。
那麼,你可以依次提出這樣三個問題:
What's your favorite programming language? Why?
你最喜歡的編程語言是哪種?為什麼?
If you could add one feature to your favorite language, what would it be? Why?
如果允許你為這種語言加一種功能,你會加什麼功能?為什麼?
If you could remove one feature from it, what would it be? Why?
如果允許你取消一種功能,會是什麼功能?為什麼?
這里的重點是,讓面試者從正反兩方面評價一件自己熟悉的東西,看看他的思維是否片面。答案無所謂對錯,只要面試者有一個明確的立場,能夠從正反兩方面說出令人信服的理由,就可以了。比如,某個軟體的口碑不好,但是面試者說他很喜歡,而且說得出一大堆理由,清楚地解釋了這種軟體的優點和缺點在哪裡,這樣就很好。
你還可以把這些問題,套用在其他東西上面,比如操作系統、文字編輯器等等。