⑴ 程序員的成功面試技巧
程序員的成功面試技巧
程序員的成功面試技巧,程序員在近幾年來是很熱門的一個職位,因為在很多人眼裡程序員的收入是很高的,程序員想要工資高在面試的時候也是很講究技巧的,下面分享程序員的成功面試技巧?
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、通訊行業,很多中層員工就處於一個很尷尬的地位。即便勉為其難地接受,也會面臨收入大幅度下降的心理適應問題。
如果考慮到資產配置中較高的按揭比例,當資金鏈斷掉,這就成為不可承受之重。
⑵ 如何成為一名合格的程序員
很多人想要成為程序員,在學習編程的過程中,面對各種bug和源源不斷的問題,有時會對自己是否適合編程這一問題產生困擾。
作為一名教授全棧Web開發的教育工作者,我已經帶領很多新手成為了程序員。好消息是,我發現沒有任何人是不能學習編程的。我把它看作是一種基本的人類技能,就像閱讀、寫作和算術一樣,任何人都可以做到。它是我們人類能力的一部分,只是需要學習。
在過去的幾年的教學中,我目睹了不同的學生在學習過程中的斗爭,以及在他們的掙扎中出現的一些共同問題。
下面的列表將幫助你了解你是否喜歡編程
1、缺乏好奇心
如果你對計算機是如何工作的缺乏好奇心,那麼,作為一個程序員,你將永遠不會成功。
學習的一個基本要求是對你所學的東西有積極的興趣。如果你沒有一個對技術好奇的頭腦,你就沒有精力去堅持學習要成為一個成功的程序員所需要的廣博而深入的知識。相比之下,技術的世界就像一個巨大的海洋,裡面充滿了各種有趣的領域、相互聯系的思想和各種可能,它們可以激發人們的想像力。想要潛入這片海洋並發現你所能發現的一切,需要內在的動力。
找到你的好奇心:問問你自己,編程是否真的讓你感興趣?如果沒有興趣,去找你感興趣的東西,以節省時間和精力。但是如果你的答案是感興趣,那麼就強迫自鄭襪己去發現一些你以前沒有注意到的新事物,認識到浩瀚的技術海洋,再往下潛一點。
2、缺乏自主性
如果你不培養自己解決問題的能力,你就永遠不會成為一個成功的程序員。
毫無疑問,要成為一個成功的開發人員,你必須對自己的學習能力充滿信心。這實際上是一項基本的生活技能,如果你年滿18歲,沒有人有義務教你任何東西。這就是現實。當你想學習技術所需的技能時,首先要學會的是,在谷歌中輸入你想要的任何東西並獲取你需要的信息。除此之外,所有編程語言都有文檔和規范,這些文檔和規范對語言的工作方式解釋的非常清楚,它們就像字典一樣。作為一個程序員,最快速、最可靠的學習方法就是簡單地閱讀這些文檔。
當你有問題的時候,在問別人答案和查閱官方文檔之前,強迫自己先搜索一下,節省別人的時間。
3、面對問題缺乏毅力
如果你在遇到問題時輕易放棄,作為一個程序員,你將永遠不會成功。
編程的本質是解決問題,這也是計算機產生的全部原因!每當你開始編寫一個程序時,你總是會遇到一大堆問題。一旦你解決了一個問題,那麼幾乎總是有另一個問題在後面等著你。你在進步,但總是會有新的問題要面對。
這堆問題會讓人望而生畏,令人感到沮喪。如果你覺得程序應該「能用就好」,那麼你就沒有精力堅持下去,因為問題還在繼續出現,它們會一點一點地擊潰你的情緒和決心。從字面上來說,你的工作就是找出程序為什麼不能跑起來。
從我在授課上的經驗來看,通常每個班都有一兩個學生,和其他學生相比,他們似乎更容易遇到更多的問題——通常是非常隨機和模糊的問題。我提醒學生,他們面對的問題越多,學習越深入、越徹底的可能性就越大。如果他們能通過這些問題獲得深刻的理解,他們會很快發現他們變得更加自信了,因為他們面對和解決的問題比普通學生多。
你需要認識到,問題不僅僅只是問題,它實際上也是挑戰。你所面臨和克服的每一個挑戰都能讓你更深入地理解技術,更好地面對新的挑戰,並迅速解決舊的挑戰。
4、解決問題之後沒有成就感
如果你在解決一個問題後沒有興奮感和成就感,作為一個程序員,你將永遠不會成功。
與上一個問題相關的是,你成功地解決了一個問題,卻缺乏「良好的感覺」。當修復bug和問題變成了一個永遠不會結束的事情時,你會失去與克服問題的動力。
當你解決一個問題時,你需要的是多巴胺的釋放。這類似於在電子游戲中完成了一個關卡,或者解決了一個像縱橫字謎或數獨這樣的挑戰。我們都知道,堅持通過一項挑戰,然後最終贏得比賽,一般都會有成就感和興奮感。但是如果你失去了感受這些快樂的能力,或者從一開始就沒有真正有過這些感受,你將無法體驗到編程帶來的快樂。如果你把編程看作是一種磨礪,你只想盡可能容易地得到結果,那麼你永遠不會真正成為一個成功的程序員。
無論何時,當你解決了一個一直在努力解決的問題時,無論這個問題多麼微小,你總是為你的成就感到驕傲。你需要休息一下,祝賀你自己完成了一項出色的工作,讓成功的感覺滲透進你的心裡,為你即將面臨的下一個問題注入活力。
5、無法獨立思考
如果你期望別人為你著想,並且主動看到你自己所在的處境喊純激的細節,你將永遠不會成為一個真正成功的褲脊程序員。
當你在學習新的東西時,很容易感到缺乏知識和經驗,並沒有自己的觀點。主動做事或者說錯話似乎是有風險的。對於錯誤,我們的內心都有一種恐懼感。當對錯誤的恐懼抑制了你的探索和好奇心時,你會扼殺開發真正知識、從經驗中獲得的知識和「失敗」的能力。當你需要依靠「權威」的觀點、一個受歡迎的博客、一個最佳實踐或「教科書」的答案時,那麼你就沒有真正地整合編程的知識。你需要對什麼有效,什麼無效形成自己的觀點。你需要理解為什麼你認為你的解決方案有效,以及使用這個方案有什麼好處。你需要建立一個微妙的視角,超越那些顯而易見的東西。你需要能夠「證實」你的立場。
為自己著想。通過你的經驗和批判性思維技巧,發展出你自己的思想體系。做出合理的猜測,堅定立場,並願意隨著新信息的出現而改變立場。
6、僵化、狹隘、混亂的思維
如果你的思維僵化,並且難以保持代碼的條理化,那麼你將永遠無法成為一名真正成功的程序員。
我有時在學生中看到兩個極端。第一種是僵化和狹隘的思維方式。擁有這種態度的人拒絕幫助,盡管會有反饋,但不會有改變。他們看事情只從一個角度看,別人給的建議被忽略。
我看到的第二個極端是思維混亂。學生們似乎使事情變得更加復雜,他們的代碼雜亂無章,難以理解。他們過度思考問題,寫100行代碼,而其中只有10行是有用的。
當這兩種心態結合在一起時,結果就是一種用蠻力的方法去設計程序。我們需要的是回顧解決方案,重新評估它,放棄最初的方法,並重新組織方法。
無法看到其他可能性或無法反思反饋會抑製成長的能力。思維雜亂無章會減慢你的成長速度,阻止你看到那些原本顯而易見的模式。你的工作質量也會下降。
自我反省。你需要退後一步,看看你是接觸的事物的大局是什麼樣子的。你要怎樣才能做得更好?你能做些什麼讓你的生活更輕松嗎?你需要什麼來幫助你?
7、需要「正確」的答案,而不是識別一系列「好」和「壞」的答案的方法
如果你認為編程的最終目標是找到正確的解決方案,而不是一系列解決方案,那麼作為一個程序員,你將永遠不會真正成功。
當開始學習技能或編程時,學生往往想知道他們所做的是否「正確」,而答案總是「視情況而定」。
計算機科學是一門評估權衡的科學。在不同的環境下,哪條路更好,這完全取決於所處的環境和目標。當你把編程看作是一個有正確答案或錯誤答案的測試時,你就失去了對全局的認識,放棄了你的創造力。任何答案都可以是「正確的」,前提是你能根據具體情況證明這一點。現實情況是,編程更像是寫詩或寫短篇小說(如果程序很大,則可能是小說)。在你的代碼中可以看到一種美學和美麗,這些東西有時只有你和其他程序員能夠識別出來。你決定解決方案的原因,以及你對答案的設想,比「正確的方式」或「錯誤的方式」更重要。擁有一個藝術家的頭腦可以讓你編的程序具有選擇和可能性,而不是認為只有一種處理方式。這就是編程的美——有很多方法可以解決問題,考慮不同的可能性,然後決定哪種方法最適合當前的情況。
創造性很重要。你要認識到,解決問題的方法有很多種,通過經驗和積累,你會對哪些解決方案比其他解決方案感覺更好產生細微的理解。縱觀全局,想像不同的可能性,相信你的直覺,你會得到更滿意、更好的解決方案
如果你對學習編程感興趣,我鼓勵你開始這段旅程。記住提到的七條,並開始學習、探索在線資源,這些資源可以讓你快速學習。你不會後悔的!
合格程序員,對於一種計算機程序設計語言,我們將其分為語法、語義、語用三個層面。僅僅掌握語法是不夠的,不算學好。但是很多人,在履歷上寫自己掌握(甚至精通)了某種語言,其實就是解了語法,會寫簡單的程序而已。這就是為什麼我們行業特別不喜歡「精通」這個詞的原因。
現代軟體開發,規模都比較大,不是寫個HelloWorld那麼簡單,也不可能每個項目每件事都從頭開始造輪子,我們都是站在前輩、同行們的肩膀上工作的。也就是說,語言之外,還有「庫」這個東西需要掌握,不然就寸步難行。庫有語言級別支持的BuildIn的庫,比如JAVA裡面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更豐富的還有第三方提供的庫,比如JDBC、Servlet、EJB的implementations等等。這些東西掌握了,幹活兒才可能得心應手,不然寸步難行。
比Libaray更高層一些的,是Framework。框架的作用在於,將某一方面開發的BestPractices搞到一起,給你提供一個更易用的、不關注底層的腳手架。比如做企業應用的,SpringFramework是標配了;訪問數據,Hibernate或者MyBatis也離不開,很少直接用JDBC去幹活的了;做WEB的,各種MVCFramework起碼得掌握一兩個(springmvcorstruts2?);做網路的,Netty,MINA怎麼也得掌握一個......總而言之,框架是繞不過去的一個門檻。
然後呢,就是環境、輔助工具。應用伺服器,怎麼也得會調試配置那麼兩個吧。TOMCAT是入門標配,JBOSS,WEBLOGIC之類,起碼要弄得跑得起來;針對不同應用場景,還要會選擇。開發/管理工具,ECLIPSE是標配、GIT和SVN起碼要搞熟一款;其它比如單元測試工具、Build工具、測試覆蓋率、CodeReview這些插件...也得知道怎麼用。
最後,通用的,計算機科學的基礎,不說多扎實,至少不能一竅不通。說起來就那幾大件,操作系統、數據結構&演算法、編譯原理、體系結構。要懂一點點,你才知道你編的程序是怎麼run起來的,哪兒可能存在效率問題性能瓶頸,除了問題知道怎麼debug。如果僅僅把計算機當作一個黑盒子,那也不算學好了。
最最後,還有一樣,就是你要訓練一下,快速理解領域知識的能力。你參與做一個項目,你懂的只是上面這些專業知識,但並不懂客戶的行業知識。如何盡快地理解業務,並用你手頭的工具實現業務邏輯,這點對程序員而言是非常重要的,否則你做的東西客戶總不滿意,GET不到重點,很麻煩。
我覺得這是一個合格的程序員的基本要求。你看,我並沒要求你懂需求工程、懂項目管理、懂架構設計、懂很多演算法、模式,甚至更深的專業知識。
⑶ 要做好一個程序員要具備什麼條件
1、扎實的基礎
數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握它們,很難寫出高水平的程序。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本演算法的時候可能也會束手無策。因此多讀一些計算機基礎理論方面的書籍是非常有必要的。
2、豐富的想像力
不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重要。
3、最簡單的是最好的
這也許是所有科學都遵循的一條准則,復雜的質能轉換原理在愛因斯坦眼裡不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。
4、不鑽牛角尖
當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。
5、對答案的渴求
人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最後沒有得到答案,在過程中你也會學到很多東西。
⑷ 小白如何成為程序員
學唄。想成為程序員,無非就是學習計算機編程語言,學習編程唄,現在互聯網上的編程教程一搜一大把,編程應該如何學、怎麼學和資料都不是什麼秘密,任何人只要想學的都可以馬上開始了。
如果心裡沒譜,可以參照我寫的Java學到什麼程度可以找工作。
⑸ 如何成為一個程序員
如果想做一個程序員,在沒有基礎的情況下,買書自學是一個辦法。但是大多數人會因為沒有相關的基礎知識,導致看書看得一知半解,因為有不同的語言,不同的開發環境,在你不了解的時候,買的書不一定合適。
比較速成的辦法還是去報名一個培訓班,系統的學習一下基礎知識,然後選擇一個發展方向,再具體的針對性的買點書籍來學習。
程序員是一個不停學習的崗位,你需要每天除了工作以外,花一定的時間了解新的技術或正在使用的技術的原理,這樣才能一直提高,不然,可能會被淘汰。在你了解代碼以後,你還需要了解邏輯,就等於你要熟悉你所從事的這個領域及行業。
注意事項:
不管任何行業和任何工作,概念的理解都是成功的關鍵。除非你有強大的概念基礎,否則就不可能成為一名優秀的程序員。
核心概念的理解有助於你用最佳的方式設計和實施解決方案。如果你覺得你現在還沒有好好掌握關於核心計算機科學和編程語言的特定概念,那麼現在回過頭去重新學習這些基礎知識猶未晚矣。