Ⅰ 程序員 面試 如何回答
做一份工作,實際就是追尋夢想的過程,而為了完成夢想,必須有一個長期規劃,從而指導我們選擇工作。它是擇業過程中最本質和最原始的參考借鑒。下載鏈接
為此,小雲為你精選一份程序員面試書單,分為職業規劃、編程技能兩部分,適合剛畢業的大學生、正准備換工作的程序員們,涵蓋演算法工程師、Java工程師、測試等多個領域。
軟技能 代碼之外的生存指南約翰 Z.森梅茲 著
這是一本真正從「人」(而非技術也非管理)的角度關注軟體開發人員自身發展的書。書中論述的內容既涉及生活習慣,又包括思維方式,凸顯技術中「人」的因素,全面講解軟體行業從業人員所需知道的所有「軟技能」。
本書聚焦於軟體開發人員生活的方方面面,從揭秘面試的流程到精耕細作出一份殺手級簡歷,從創建大受歡迎的博客到打造你,從提高自己工作效率到與如何與「拖延症」做斗爭,甚至包括如何投資不動產,如何關注自己的健康。
編程珠璣(第2版)喬恩·本特利(Jon Bentley) 著
作者雖然沒有給出解決這些問題的具體代碼,但始終非常富有洞察力和創造力地圍繞著這些折磨程序員的實際問題展開討論,從而引導讀者理解問題並學會解決問題的技能,這些都是程序員實際編程生涯中的基本技能。
為此,本書給出了一些精心設計的有趣而且頗具指導意義的程序,這些程序能夠為那些復雜的編程問題提供清晰而且完備的解決思路,書中還充滿了對實用程序設計技巧及基本設計原則的清晰而睿智的描述。
PS:本書在第一版的基礎上增加了3個方面的新內容:測試、調試和計量,集合表示,字元串問題,並對第一版的所有程序都進行了改寫,生成了等量的新代碼。
重構 改善既有代碼的設計馬丁·福勒(Martin Fowler) 著
軟體開發的不朽經典,生動闡述重構原理和具體做法,普通程序員進階到編程高手必須修煉的秘笈。
重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是《重構:改善既有代碼的設計》原版的出版,使重構終於從編程高手們的小圈子走出,成為眾多普通程序員日常開發工作中不可或缺的一部分。《重構:改善既有代碼的設計》也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界范圍內暢銷不衰。
《重構:改善既有代碼的設計》凝聚了軟體開發社區專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支持力度,都與《重構:改善既有代碼的設計》最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反復咀嚼,而且往往能夠常讀常新。
C和C++程序員面試秘籍董山海 著
眾多高級語言都從C/C++有所借鑒,所以說C/C++的語言基礎對從事軟體開發的人員來說非常重要。
本書是一本解析C/C++面試題的書,可以幫助求職者更好地准備面試。《C和C++程序員面試秘笈》共包含12章,囊括了目前企業中常見的面試題類型和考點,包括C/C++程序基礎,預處理、const、static與sizeof,引用和指針,字元串,位運算與嵌入式編程,C++面向對象,C++繼承和多態,數據結構,排序,泛型編程,STL,演算法和邏輯思維等最常見的面試題。《C和C++程序員面試秘笈》通過技術點解析、代碼輔佐的方式讓讀者能深刻領會每個考點背後的技術。
本書緊扣面試精髓,對各種技術的剖析一針見血,是目前想找工作的C/C++程序員和剛畢業的大學生的面試寶典。
Java程序員面試寶典楊磊 著
本書對程序設計面試中Java常見的題型和常用解答技巧進行了介紹,對現代職業人如何有效求職、面試考官如何關注求職者動態等做了詳細解說。本書將為您揭開知名IT企業面試、筆試的核心機密;傳授程序員崗位求職的關鍵技巧。
編程之法:面試和演算法心得July 著
本書涉及面試、演算法、機器學習三個主題。書中的每道編程題目都給出了多種思路、多種解法,不斷優化、逐層遞進。本書第1章至第6章分別闡述字元串、數組、樹、查找、動態規劃、海量數據處理等相關的編程面試題和演算法,第7章介紹機器學習的兩個演算法—K近鄰和SVM。此外,每一章都有「舉一反三」和「習題」,以便讀者及時運用所學的方法解決相似的問題,且在附錄中收錄了語言、鏈表、概率等其他題型。
書中的每一道題都是面試的高頻題目,反復出現在最近5年各大公司的筆試和面試中,對面試備考有著極強的參考價值。全書邏輯清晰、通俗易懂,適合熱愛編程、演算法、機器學習,以及准備IT筆試和面試,即將求職、找工作的讀者閱讀。
C#與.NET程序員面試秘笈靳華 著
《C#與.NET程序員面試寶典》取材於各大IT公司的歷年面試題252個(包括研發類筆試及口試題目、情商及智商類題目),詳細分析了應聘C#與.NET程序員職位的常見考點。《C#與.NET程序員面試寶典》主要內容包括:面試流程、基礎語法和技術框架、數據訪問及XML應用、高級特性及應用進階、測試及質量保證、跨國公司經典面試題等。
軟體測試工程師面試指導蔡為東 著
對於想要得到一份軟體測試工程師職位的朋友來說,可能會有一些疑問,如軟體測試這個行業究竟怎麼樣?什麼樣的人適合做軟體測試?面試當中要注意什麼?軟體測試的基本知識點都有哪些?筆試都會涉及哪些內容?等等。本書將解答以上所有的疑問。
本書共6章內容,主要包括軟體測試行業概貌、軟體測試從業人員的基本要求、如何找工作、軟體測試技術基礎、典型的測試工程師筆試題等。本書內容豐富,講解深入淺出,能讓讀者朋友在短時間內掌握基本的測試技術,了解求職過程的各個環節,熟悉各種類型的筆試題,領會面試技巧。本書後附有一些實用的附錄,例如簡歷模板、新人工作指南等,尤其是「我在微軟做軟體測試外包」這一部分內容,寓故事性和知識性於一體,講述了作者在國際軟體巨頭——微軟公司做軟體測試外包的親身經歷,相信對於廣大的讀者朋友有閱讀和參考的價值。
本書適合想要從事軟體測試工作的朋友,也可供初級軟體測試工程師學習之用,另外也可作為大專院校軟體測試培訓的教材之一。
Android高薪之路李寧 著
《Android高薪之路:Android程序員面試寶典》取材於各大IT公司面試真題,所給出的試題盡可能地覆蓋了Android應用開發的各個方面,而且大多數試題都有解析部分,讀者可以通過這部分更深入地理解試題中所包含的技術內容,希望真正做到由點成線,舉一反三。
《Android高薪之路:Android程序員面試寶典》中還將Android中涉及的各個常用技術問題進行篩選、分類。這樣讀者可以有的放矢,對自己還沒有掌握的Android技術進行重點攻破,從而起到事半功倍的效果。除了對每道題目都有詳細的解析和回答外,對相關知識點還有擴展說明。
《Android高薪之路:Android程序員面試寶典》對面試中Android常見的題型和常用解答技巧進行了介紹,它不僅能幫助求職者快速復習相關知識點,也對現代職業人如何有效求職做了詳細解說。《Android高薪之路:Android程序員面試寶典》對於讀者從求職就業到提升計算機專業知識都有顯著的幫助。
編程之美《編程之美小組》
《編程之美—— 微軟 技術面試心得》收集了約60道演算法和 程序設計題目,這些題目大部分在近年的筆試,面試中出現過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。
書中絕大部分題目都提供了詳細的解說。 每道題目後面還有一至兩道擴展問題,供讀者進一步鑽研。
書中還講述了面試的各種小故事,告訴讀者微軟需要什麼樣的技術人才,重視什麼樣的能力,如何甄別人才。回答讀者關於IT業面試,招聘, 職業發展的疑問。 這本書的很多題目會出現在IT 行業的各種筆試,面試中。但本書更深層的意義在於引導讀者思考,和讀者共享思考之樂,編程之美。
Ⅱ 程序員有哪些交流社區或者論壇
作為一名低代碼平台領域的廠商,經常去的一些國內社區網站及論壇,關於程序員的交流社區或者論壇,這里收集一些比較好的開發者社區供大家參考,具體如下:
1、CSDN -專業開發者社區 IT技術交流平台
2、IT圈,圈圈精彩 - 原軟媒論壇、IT之家,國內最人氣的科技社交圈層,繼軟媒論壇、IT之家社區演變而來。
3、51CTO技術論壇-中國領先的IT技術社區 國內主流IT技術社區,論壇擁有大批IT技術人/IT專家
4、快速開發平台社區 -天翎論壇低代碼平台技術社區,主要是以低代碼開發平台為主的技術性論壇社區
Ⅲ 程序員問答類的平台,區別都有什麼啊
問啊,直接一對一解答,回答比較快,並且回答的人都要經過測試,專業性就會高很多。csdn,SF,大的網站,有問題可以先去搜索下可能已經有人答完了,但是做不到及時的解決,比較耽誤工作。qq群的話,就是回答的專業性無法保證。
Ⅳ JAVA程序員回答:請描述一下你的生活狀態,要真實!
其實程序員的生活沒有你們想像的那麼枯燥,程序員的本職工作就是在那編寫所謂的代碼,不過,當一個團隊集體開發一個項目,各司其職,協力合作,一起探討項目的開發過程,遇到困難,解決困難。當項目完成時,這確實是一個激動人心的時刻,我們可享受著團隊合作的快樂,我們彼此都享受著這種生活!
Ⅳ 1.問答題
一、什麼是系統分析
在具體的研究需求分析之前,我們先了解一下軟體工程這個概念。軟體工程分為三個層次,過程層、方法層、工具層。在最基礎的過程層,最重要的就是一組被稱為關鍵過程區域(KPAs)的框架(KPA的概念在討論CMM的書中有詳細的概念說明)。關鍵過程區域構成了軟體項目的管理控制的基礎,並且確立了上下文各區域的關系,其中規定了技術方法的採用、工程產品的,模型、文檔、數據、報告、表格等,等的產生、里程碑的建立、質量的保證及變化的適當管理。方法層主要是過程在技術上的實現。它解決的問題是如何做。軟體工程方法涵蓋了一系列的任務:需求分析、設計、編程、測試、維護。同時他還包括了一組基本原則,控制了每一個的關鍵過程區域。工具層就很好理解了,他對過程層和方法層提供了自動和半自動的支持。這些輔助工具就稱為CASE。事實上需求分析是跨越了軟體工程的三個層次的。這一點是和其他的過程是一樣的。
可以看到需求分析的位置,它是我們軟體開發的第一步。是對用戶需求的定義,對軟體系統的描述。系統分析的任務:將用戶的業務邏輯轉化為程序邏輯,計算時間和成本。根據開發人員的理論知識和實際的經驗,人們會採用各種滿足實際情況的系統分析、開發方
法、步驟以及文檔等等。一般情況下,在系統分析書中應該有以下內容(視項目而定):
1、 系統需求說明 說明系統是一個什麼樣的系統,用市場上現有的系統來類比,
用客戶(或是我們自己)需要一個什麼樣的系統進行說明,力求完整。並對系統的發展
可擴充性進行描述(現在沒有哪個系統是一次OK的)。說明與現有的系統有什麼相同什
么不同,說明未來系統的發展方面以及可移值性等能預見的事情。
2、 系統資源說明 對系統所需要的軟體、硬體資源進行說明。描述系統所需要的
所有的TCO成本。包括人員、時間、設備、系統、一次性投入資金、持續性投入資金這樣
的所有資源。
3、 系統可行性分析 對系統的實施中的資源進行分析,說明投入的合理性和必然
性,對其中的所有不可預見性的投入進行合理的量化說明,來說明系統的實施的可行性
。
二、系統分析員與程序員
大家應該對這兩個詞很熟悉了,但是對詞里包含的意義可能並不是特別清楚。首先必須說明的是,程序員和系統分析員不存在誰高級誰低級的分別,他們是兩種職業,對職業技能的要求完全不同。所以厲害的程序員就是系統分析員的說法是不對的。當然,系統分析員的技能要求他必須要懂得如何寫程序,但是他的重心在於如何把一個很大的項目切割成適合個人的小塊,然後將這些小塊組織起來。程序員的職責就是如何更好更快的實現這些小塊。
三、系統分析的方法和工具
UML全稱:Unified Modeling Language,統一建模語言,是面向對象的建模語言,主要用於軟體系統的面向對象建模。
UML是以面向對象圖的方式來描述任何類型的系統,具有很廣泛的應用領域。特別是在建立軟體系統模型中,它支持從系統需求、系統分析到系統設計的整個建模過程。由於UML建模是一門專門的科學,而我們這門課程的任務是資料庫系統開發,所以對於UML我們將有限的注意力集中在認識UML各種圖示上。
可以使用Rational Rose 2003來建立UML模型
1) 建立角色
2) 創建用例
3) 創建角色用例關系圖
4) 創建時序圖
5) 創建協作圖
四、系統分析員思想
全局觀念是系統分析員必須具備的觀念。
如果系統分析員設計時太注重細節,往往會陷入在某個問題上糾纏不清的泥潭。(93年,我論文指導老師的一席話影響了我隨後幾年對軟體開發的理解——今後計算機會越來越快,多寫幾行代碼少寫代碼無關緊要,最重要的是整體;一開始就錯了,某個部份編得再好,也是沒有用的) 系統分析員要有面向用戶的思想。系統分析員應當有能力將自己扮演成用戶,來了解要交付的項目看起來想什麼樣式,感覺想什麼,從而了解用戶的想法並挑選出合理部份去開發。從這個意義上說,系統分析員才能獲得有意義的見解去引導他的開發組成員。系統分析員頭腦中要對項目結局有一個清楚的認識,並保證項目不偏離方向。系統分析員要有根植於技術,高於技術思考問題的
思想。純粹的程序員通常對最終結果考慮的不是很多,當一種新的技術在市場上出現時,他們對能否按時交付的考慮就比較少,而強烈希望他們的計劃能夠建立在新的技術之上。因此,系統分析員的想法和行動要象一個用戶,又要能夠站在技術的高度,成為真正的用戶、程序員之間的代言人。
任務難度的預測能力
系統分析員要具備快速的任務難度預測能力以及具備快速確定開發小組人員構成和任務劃分的能力。(我將這條歸為思想,而不是能力)昆蟲自然會長出翅膀,而思想卻需要長期的浸潤。要做到這點,需要大量的思考、學習。設計遠比編程重要。當今軟體業的發展,各種開發工具的出現,編程已經不是什麼問題,程序員的工作某種程度上講是將別人現成的東西拼湊堆砌起來。系統分析員要清楚的認識到,現在大多數程序員沒有學會怎麼去整體的了解一個系統,有些甚至不了解編程(這不是說他們不會寫代碼)。可視化的開發工具加五花八門的控制項,程序員可以偷點懶了。(這可不是誇大,我好幾年的管理工作,接觸過大量的程序員)基於技術,跳出框架。基於現有技術結合用戶需求思考問題,設計時跳出
框架。
系統分析員的關鍵
獲得信任。系統分析員最重要的素質是獲得信任,這是成為優秀系統分析員的關鍵。成熟最為關鍵。成熟可以為整個項目組提供正確的支持,能夠理解技術怎樣才能解決用戶的需求。
系統分析員的准備工作
統一的各種文檔模式,這其中包括今後軟體變數、欄位命名規則。我推薦用pb制定的規則做基礎,通過改造成為適合自身實用的標准。統一的文檔管理。統一的分析軟體。比如說rose(uml 太規范,國內的軟體管理水平根本用不上,只不過盡量應用,你自己對系統分析的理解有好處)方法是思想的放映,在具體方法上就不多說了。我託人從u$a 弄到幾本書,用於面向對象系統開發的使用》、《面向對象的分析》、《項目管理》等都是很不錯的,推薦大家看看。
我在拙作" 在中國沒有人懂計算機" 里發了點牢騷,聽說挨了部份人(習慣性的)罵。其實,bbs 本來就是發泄的地方,在這里從來就罕有有內容的文章。
自從" 維納斯" 登陸深圳後,大家更著眼於從宏觀看中國的it業了。中國it這棵小樹,說實在的,長到今天實在是不容易。一些人提出了" 反對微軟霸權"的口號,不少人呼喚中國" 矽谷" 的出現。微軟的成功不是技術的成功,更多的是商業運作的成功。中國it這棵樹能長多高,取決於他所植根於的土壤。而現在
的事實是,這片土壤實在是太貧瘠了!如果按我們現在的思路和搞法,是長不成大樹,更別指望能結?quot;微軟" ," 矽谷" 這樣豐碩的果實。如果說,我們的軟體技術落後美國十年,我們的硬體製造技術則落後美國二十年,我們的管理水平落後美國至少三十年。而最終決定發展速率的恰恰是我們的死穴——低劣的管理水平。低劣的管理水平的形成的原因有著深厚的背景和多方面的原因。
系統分析工作是解決一個問題的工作,目標是將一個對計算機應用系統的需求轉化成實際的物理實現,其中復雜就復雜在實際的面太多。在系統分析過程之中注意問以下的問題,可能會所進行的系統分析設計工作有幫助
1 )您所完成的系統目的是什麼?注意不是功能要求,而是目的。也就是為什麼要建設、為什麼要現代建設。在考慮系統目的時,我更多的側重於系統的最終目標考慮,因為一個系統不可能一下子完美,為系統留些餘地。
2 )您所完成的系統有哪些方面參與,各方面的初衷是什麼?那些人可能在系統建設中起重要作用,他們會採取什麼樣的態度?你對他們有多少影響力?中國it行業的失敗之一就是人" 太年輕" ,一定要有領導的支持,否則完蛋。不要認為自己對他們會有多少影響力,即便有,也要盡可能的認為是決策者再影響他們。在中國,一個技術員,你算老幾?說到這里我很悲哀。哪些人在系統中起重要作用並弄清楚他們的態度,這點十分關鍵。
3 )您的系統是否有一個明確的評價標准?最好從參與的各方面都進行考慮。
不知道這樣說對不對,在系統建設之前,對你的程序員、對你的領導要有至少不同的兩種評價。
4 )你的系統設計思想是什麼?是否能夠得到各方面的認可。如果高明,對領導、對程序員都採用引導,得到認可的最好辦法,就是讓他們認可他們自己的想法。(我力圖這樣做,但做得不好,系統分析員有一點要學會韜光養晦,忍)
5 )你對參與系統設計開發的人員了解嗎?他們的特長在哪裡,是否願意與你合作,為什麼?你對他們有足夠的影響力嗎?軟體發展到一定的程度,不是編程,不是數學,而是管理。
6 )你的系統開發計劃是否完善?你的計劃表有明確的階段嗎?任何一階段都應該怎樣完成?如何對這一階段完成的情況進行評價?
7 )你對所採用的系統開發方法以及工具是否熟悉?你的夥伴是否熟悉?事實上,不是每種好的工具都要使用,也並不一定都要他們熟練掌握。提醒諸位一句,當你將方案做得可以不依賴某個程序員,你在程序員面前就無信任可言,因為從此程序員將受到更大的生存壓力。我堅決不在公司使用rose.
8 )你所完成的系統是否有原型?計算機的或者物理的。
系統分析員基本功
以上的幾個問題都是在系統分析以及系統規劃時涉及到的,供各位參考。
這文章很好,我的話是:" 需求分析實際應該是問題分析".含義是系統要解決的是問題。而不是用戶提出的需求。經常發現系統完成後,客戶說" 我的問題還沒有解決".可是,需求分析稿上的目標都搞定了。
既然是問題分析,所以,熟悉目標系統的知識就是必要的。甚至,可以說,一個好的系統分析員也應該是好的業務專家。
我很高興在這里遇到許多分析高手,可以交流分析中的問題。我贊同從來的觀點。在中國作分析重要的是人氣,因為中國的企業級信息系統的建設在很大程度上可以說並非確有需求,而是迫於某種壓力。用戶在很多時候考慮的不是系統的長遠發展,而只是短期的成果,要求開發單位在很短的時間內完成一個很大的系統的開發,沒有時間對系統進行周密的分析,在這種情況下,很多開發商就會粗分析,粗設計,盡快進入編碼階段,這樣的系統的生命周期肯定不會很長。說了這么多,只是想說,系統分析員確實應是業務和管理專家,並且需要有很好的語言組織能力,他需要根據問題域中存在的問題去盡力說服用戶,引導用戶需求,畢竟,我們是專家,如果讓用戶牽著鼻子走,系統不會是成功的系統。(當然了,這要建立在用戶是可引導的前提下)本人拙見。
在理解和分析用戶的需求時,應說服用戶明白:建立計算機應用系統並不是簡單地用計算機代替手工勞作,它更應該是管理思想的一次革命,是現用戶模式的一次升華和提高。如果系統不能高於現實,開發的系統將長期陷入需求的反復修改,其軟體的生命周期也短了。
參考資料:http://www.chinaitpower.net/A200508/2005-08-07/183576.html