Java專案經驗面試總結
目錄
前言
在前期已經講過怎樣分析自己,對自己進行一個準確的定位,選擇一個合適的求職方向!並結合自己的實際個人情況來寫一份針對性很強的個人簡歷!個人簡歷就是個人的廣告!好的簡歷可以更受到用人需求單位青睞!好的簡歷才能讓你獲得面試的機會!我們還針對面試列出了j2ee方面的知識點!不管是筆試還是面試都是會考到這些非常重要的知識點!面試的技術內容並不會有想象中的那麼難,主要注重基礎和細節!細節決定一切!所以列羅的那些知識點是需要下功夫去準備的!當然列羅的那些知識點只是一些在面試中經常會出現的問題集!每家企業都可能超出這些知識點的可能(就不要罵我了)!自己去準備吧!
技術方面的考核通常分為筆試,技術面試;其中技術面試又分為專業知識面試和專案經驗考核。
應該說來筆試和專業知識面試都是考核你對某方面(j2ee)知識的掌握和熟練程度!而專案經驗考核則是看你是不是擁有專案經驗,是不是適合企業的用人需要,是不是需要企業為你付出培養的成本,是不是你能夠馬上投入到工作中去。企業是以你的專案經驗作為衡量你的工資標準的!所以就是會出現有些同學可能在學校學習成績很好而企業給他開的工資並不高,而有些同學的學習成績一般反而得到高工資的原因!專業知識的考核只是企業瞭解你具有這方面的專業素養和能力!其實有時筆試成績差一點或者你感覺在做筆試題的時候有些題目沒有做出來或答錯了並沒有關係的。在技術面試的時候,在回答專業知識方面的題目不夠理想,也並不起決定性的作用!總之筆試和專業知識面試的答題達到企業要求的70%就可以了!當然如果你在專業知識方面表現的太差,考官對你也就沒有多大的興趣了!但是最能決定企業下定決心錄用你的關鍵在於你的專案經驗(排除企業特別強調英文等其它方面能力外)。說了這麼多好像都沒有說到正題,這是因為讓大家更清楚的瞭解回答好專案經驗方面的問題是多麼的重要。而這方面又正好是剛從學校出來的學員十分薄弱的,並且針對這方面介紹也十分少! 下面我們就來談談面試中關於專案經驗的問題及應該從哪些方面進行回答!
以下問題基本每家公司都會問,請死記硬背也要掌握。
問題總結
問題一、請簡單的介紹一下你自己吧!
分析:
這是在任何面試中都會遇到一個題目,看起來這個問題是十分簡單的,但是往往我們並不知道考官問這個題目是希望從你的回答中獲得什麼資訊!所以我們就很容易走題,跑題,不入正題!不能馬上就吸引考官。請記住抓住面試的每一個機會來推銷自己。但是往往我們不知道從哪裡談起。所以我們得先了解考官想要獲取什麼資訊呢?
- 你的從業時間 你從事相關的工作有多長了
- 你的教育背景 你是否受過良好的教育
- 你的工作經驗 你是否有過具有一定的工作經驗
- 你的專案經驗 你是否有過豐富的專案經驗
- 你與眾不同之處 你是怎麼進行專案開發的,有什麼特別之處,或者你在哪些專案中取得過哪些成功,或者有哪些自己覺得驕傲的地方
- 你最擅長的地方 你最擅長的技術是什麼
- 你的性格 你是怎麼樣的一個人
怎麼回答:
我們一一來分析吧,首先從業時間一般回答你進行軟體專案專業開發的時間.千萬不要把你以前在大街上賣過魚蛋或到夜市賣燒雞等亂七八糟的時間計算進來.工作經驗也是,你至少有在一家公司呆過吧.不要告訴我你只學過j2ee或.net半年時間,就想來我公司混飯吃.要和你的簡歷對應起來.一般至少1年半以上.
- 教育背景:如果你上的大學及所上的專業比較對口,就說出來,非否就不要提了,總之是要揚長避短
- 工作經驗:也就是以前在什麼公司上過班,與你簡歷上的一致就可以了.只說與軟體開發的工作經驗,其它的就不要提了
- 專案經驗:你曾經做過的自認為比較好的專案,這裡特別重要,先用一句話來概括專案,然後把專案的功能及子功能全部敘述出來.
- 你與眾不同之處:也以說你在專案你以什麼獨特的方法獲得什麼不同的效果,主要是能夠結果具體的專案或能舉例說出來.
- 最擅長的地方:主要告訴對方你最擅長哪方面的技術,是需求分析?編碼,或資料庫或架構
- 你的性格:用一兩個詞來形容你自己,描述你的性格.
回答例項:
面試官:請簡單的介紹一下你自己吧!
令狐沖:您好,在下令狐沖.從事j2ee開發工作3年時間.2002年至2005年在大宋桃花島軟體谷皇室軟體公司從事j2ee專案開發.其間開發過大宋俠士綜合管理平臺.大宋俠士綜合管理平臺能夠自動收集大宋各路俠士,英雄好漢,隱居高人資訊並對他們的個人資訊及所作所為進行跟蹤管理,實現俠士資訊維護,查詢.俠義事件維護,俠士等級管理,俠士獎懲管理,俠義活動釋出,抗災募捐管理等。鄙人在專案中主要負責需求分析,架構設計和框架類程式碼實現。在專案開發中善於與客戶溝通,充分理解客戶需求。具有極強自學能力,在大宋藏經閣中通讀了大量的軟體專案開發祕籍,具有藏文,印度文,金文的讀寫能力。
問題二、談談你的XXX專案吧!
分析:
考官通過看你的簡歷或者你的介紹來了解你所做的專案,那麼考官肯定想更詳細的瞭解您的專案,看是不是與你的簡歷寫的專案經驗一致。也就是考核你是否具有真實的專案經驗。一般來說,在你的簡歷至少有一個重點專案,放在簡歷專案經驗欄的第一位。把專案的業務功能描述清楚。在這裡你就是重點談一個專案就可以了。
從下面幾個方面來進行陳述
- 用一句話簡述專案
- 詳細的列出專案實現的功能
- 說出專案實現的技術和架構,能說出專案的不尋常之處,比如採用了某項新技術,採用了良好的架框等
- 能讓別人感覺出專案的規模
- 說出你在專案中的責任
通過這些來證明你是的確開發過了這個專案,並且這個專案是一個真實的。還有就是你是真正具有專案經驗的。符合企業的用人需要。
特別注意要把專案所實現的功能描述得越詳細越好。當然用詞要簡潔,表達要流利。其次要儘可能採用專業術語,顯得你的專業。不要犯低階錯誤。
請記住,你要描述的是整個專案而不僅僅是你做的那一個模組。有些專案你只參與了其中一個模組,但是你要把整個專案描述出來,不要僅僅描述你參與的那一個模組。
說出你專案採用的技術及架構,還要能說明你在專案中的責任。
回答例項:
面試官:令狐沖,能介紹一下你做的大宋俠士綜合管理平臺吧!
令狐沖:好的,大宋俠士綜合管理平臺是為大宋武林聯盟開發的,實現武林聯盟管理的自動化。大宋俠士綜合管理平臺能夠自動收集大宋各路俠士,英雄好漢,隱居高人資訊並對他們的個人資訊及所作所為進行跟蹤管理,實現俠士資訊維護,查詢.俠義事件維護,俠士等級管理,俠士獎懲管理,俠義活動釋出,抗災募捐管理等。
系統基於B/S三層架構,採用spring + hibernate + Spring MVC框架.使用Oracle 資料庫.
本專案只投入15個人,開發週期為6個月。本人在專案中進行了前期的需求分析,系統架構實現,資料庫建模,及部分編碼工作。
問題三、談談你們是怎麼對這個專案進行開發的?(談談你們是怎麼進行專案開發的?)
分析:
這個問題是考核你是否熟悉軟體開發的流程,同時也是考核你的專案經驗,你的專業素養,從這裡可以判斷出你參與過多少專案,可以判斷你對軟體工程的理解和熟悉程度。這個問題是十分關鍵的,你需要準備的知識點有:軟件專案的生命週期、軟體專案的開發模型、面向物件的分析和設計、軟體質量保證等。
軟體專案的生命週期:
- 專案計劃
- 需求分析
- 設計(概要設計和詳細設計)
- 編碼
- 測試
- 釋出
- 維護
專案計劃
專案計劃階段:
走訪客戶,進行交流溝通,獲得客戶原始需求。
對客戶的需求和市場等進行調研,分析,編寫可行性分析報告。
通過不斷的與客戶溝通,找客戶不同環節的使用者進行交流來獲取需求。召開評審會議,報告可行性分析,報告使用者原始需求,報告專案遠景規化。
需求分析
需求分析階段:
在客戶原始需求的基礎上不斷與客戶溝通,充分的熟悉和深入客戶業務,獲得充分的業務需求,完善使用者需求和功能性需求,瞭解客戶的相關約束而獲得非功能性需求。最終編寫《需求規格說明書》;召開需求評審會議,客戶確定需求,並簽定合同;編寫專案計劃說明書;編寫測試計劃;召開專案啟動會議,專案正式啟動。
設計
概要設計階段:
根據《需求分析說明書》,進行用例分析,獲得充分而有效的用例。編寫介面原型,編寫編碼規範和介面風格規範,資料庫設計規範。用uml工具畫用例圖,編寫有效的用例規約文件。劃分專案功能模組,評審用例及用例規約文件。
詳細設計階段:
根據完整的用例及需求進行分析,獲得資料庫所需的相關資訊,畫資料庫E-R圖,編寫資料設計說明書。進行資料庫建模。進行詳細的分析,用uml工具畫類圖,確定每個功能模組的子功能,抽取專案的公共部分成為一個公共模組。確定專案的架構基礎。確定需要用到的類及類成員和方法。確定一些輔助類及方法。對每一個用例都用uml工具畫出順序圖。編寫詳細設計說明書,評審詳細設計說明書, 進行基礎框架搭建。列出任務清單,進行任務分配。
編碼
編碼階段:
以小組的形式進行程式碼編寫,編寫單元測試用例,每完成一個類都要進行單元測試。每完成一個功能點和模組都要進行整合測試。確保每一個功能點和模組完成後都是一個可以看得見、摸得著的產品。而不是等到最後才進行統一的除錯和搭配。每天都要對程式碼進行檢查和優化,也就是所謂的重構。
測試
測試階段:
根據測試計劃對專案進行系統測試,以及使用者的驗收測試
釋出
產品釋出:
交付完整的產品和設計文件。把產品佈署到客戶的計算機上,確保產品的正常執行。客戶簽收。
維護
維護階段:
為客戶提供技術保障,對產品進行相應的維護和升級工作
軟體常見開發模型
瀑布模型:最經典的過程模型,適用於需求明確,規模較小的專案
噴泉模型:迭代,無間隙特點,適用於面向物件的軟體開發過程
螺旋模型:採用一種週期性的方法來進行系統開發
MSF模型:微軟解決方案過程模型
什麼是極限(XP)程式設計:
極限程式設計是對敏捷軟體開發方法的一種實現。它強調測試先行,也就是在編寫程式碼的時候先編寫測試用例;迴圈迭代,每一次迭代都是一個可用的產品;重構,不斷的對程式碼進行優化;結對程式設計,兩個人為一對共同進行程式碼編寫;它強調團隊之間的知識傳播,讓團隊的每個人都能熟悉軟體開發的各種技術。如:支援熟悉資料庫的人去做介面,做介面的人去做資料庫等,通過不定期的角色轉換來增強團隊的能力。要求客戶參與到軟體開發中來,開發出最適合客戶需求的產品。
單元測試:
單元測試一般是在編碼的時候同步進行的,一般是以類為單位進行測試,當一個類完成了編碼,並編譯正確後才進行的測試,測試這個類是否已經能夠實現指定的功能。一個類能夠正常的編譯成功並不意味著這個類就已經完成了,還要通過測試,設定斷言來確定他是否已經達到了預期的效果,實現了特定的功能。除錯,編譯通過只能證明程式碼的語法沒有錯誤。
單元測試由程式設計師自己來進行,也可以在專案小組內互動進行。單元測試是採用白盒測試
整合測試:
整合測試一般指實現了一個功能點或一個模組後,為了測試這個模組是否已經實現了需求要求的功能。整合測試可能需要對多個類進行組裝,也可能需要與以前已經測試通過的模組進行組裝,是對產品元件的系統整合和執行。整合測試可以根據模組的大小分不同的級別,在現行的軟體開發中,每完成一個功能模組都必須要進行一次整合測試,使得你完成的模組是一個可以執行的產品。整合測試一般可以由專案小組的負責人(或指定一個小組成員)來完成。整合測試採用白盒式測試和黑盒測試。
系統測試:
系統測試一般指項完程式碼已經全部完成,交給測試小組來進行測試。進行系統測試的人員獨立於開發小組,系統測試人員把完成的產品佈署在相應的計算機環境中,按照測試計劃進行測試,驗證系統是否滿足了指定的需求。系統測試除了測試產品應滿足基本的功能需求外,還要對產品的效能,使用者介面,安全性,壓力,可靠性,安裝和反安裝等幾個方面進行測試
系統測試採用黑盒測試。
驗收測試:
驗收測試一般指產品交付給客戶,負責把產品佈署在指定的計算機環境中。由使用者根據需求文件,進行的總體測試。驗收測試的內容和系統測試一樣,只是執行者不同。都是除了測試系統完成基本功能外還要對效能,安全性,可靠性等進行測試。驗收測試也是採用黑盒測試
為什麼需要測試?測試是對軟體質量的保證,只能通過嚴格測試的軟體才是合格的軟體,測試並不是說讓軟體能夠編譯通過,測試是讓軟體產品最大程度的滿足客戶的需求度。
回答例項:
考官:令狐沖,能談談你們是怎麼樣對這個專案開發的嗎?
令狐沖:首先,我們這個專案已經有了一個基本的使用者原始需求。但這是不夠的,我們都知道需求分析是十分重要的,所以我們在使用者原始需求文件的基礎上,再次進行了分析,通過不斷的與客戶溝通,充分的瞭解和熟悉使用者的業務,完善了業務需求和功能需求。還對使用者業務需求和功能需求分析完善為實現軟體的必須的非功能性需求。得出專案需求規格說明書,經過評審會議確認通過。
根據需求規格說明書進行用例分析,通過分析和討論找出充分的有效用例,並用Rose畫用例圖。對每一個用例進行詳細的分析,完成每個用例的用例規約文件,並編寫介面原型。劃分專案模組。最後對用例及用例規約文件進行評審驗證。編寫”程式碼編寫規範”及介面風格規範,資料庫設計規範,編寫概要設計說明書。
根據需求規格說明書和分析各個用例規約文件,獲得資料庫的基本資訊原型。也可以說是資料庫表的草稿,根據資料庫表草搞進行分析,進行資料庫設計和優化。編寫資料庫設計說明書。採用PowerDesigner進行資料庫建模,並生成SQL指令碼。確定專案框架,設計公共模組和輔助類。根據對資料庫模型和用例規約文件的分析,列出物件清單和理清物件關係。用Rose來畫類圖。對每一個用例都用rose畫出時序圖。編寫詳細設計說明書。列出任務清單,分組進行程式碼編寫。
在程式碼編寫階段,先統一完成所有的實體類。對於非實體類則先完成類的框架,也就是隻寫方法和註釋文字。具體方法的實現暫時為空。然後再進行程式碼填寫。每完成一個類的程式碼編譯通過後都要進行重構和單元測試。每完成一個功能和模組都由會由小組長進行整合測試。使得完成的模組是一個真正可以執行的,可見的功能實現。
在各個小組都完成自己的模組後就進行模組整合,進行一次大規模的整合測試。然後把產品產給產品測試小組進行系統測試。
問題四、你們是怎麼保證軟體開發的質量的?
分析:
這個問題其實上面的講解已經給了答案了。軟體質量是軟體實現對需求的滿足度。開發的軟體越滿足客戶的需求,說明軟體的質量越高。反之就是質量越低。儘管你開發的軟體使用了新的技術,良好的設計,豐富的功能;但是這些功能都不是客戶需要的,客戶需要的功能沒有實現或者是很多沒有實現。這樣的軟體也是失敗的軟體。為了保證軟體質量,也就是讓開發的軟體最大程度滿足客戶的需求,只有兩個方法。
一個是獲得充分完整的需求,二是能過測試,以需求為中心編寫測試計劃。來保證軟體合乎需求。
回答例項:
考官:你們是怎麼來保證軟體的質量的呢?
令狐沖:要保證軟體的質量首先就要獲得完整的需求,在需求分析階段做了大量的工作與客戶各個環節的代表性使用者進行溝通,充分了解和熟悉客戶的業務。並且從需求到設計階段都保持與使用者的溝通和交流。讓使用者的業務專家一直參與我們的需求,分析和設計工作。
其次我們會在需求分析後就編寫測試計劃,在開發的每個階段都進行相應的測試來保證程式碼是乎合相應需求的。在程式碼編寫過程中,每完成一個類都由程式進行單元測試,每完成一個功能點或模組都要進行整合測試,每一次整合測試都對上一次的已經測試通過的產品進行迭代,,也就是以前測試成功的都會加入到本次測試中來。使得每個完成的功能和模組完成後都是一個可以執行的,可以看得到的產品;同時也歡迎使用者來見證我們的整合測試結果。程式碼編寫完成後進行最後一次整合測試,然後交由獨立的測試小組對專案進行系統測試。
問題五、你為什麼離職的?(你為什麼離開以前公司的?)
分析:
這個問題幾乎在任何場合的面試都會有,有時是在技術面試的時候問,有時是在人事面試的時候問,有時會在技術面試和人事面試的時候都問。其實也比較好回答,回答的抽象一點比好。切記不要說以前公司的壞話,如果你這樣做。人家會想,你以後離職後同樣也會說這家公司的壞話.一般都是說為了某求更好的發展空間。讓人感覺你是經過深思熟慮後才選擇他們公司的。
回答例項:
考官:你為什麼離開以前公司的?
令狐沖:以前公司對我很好,我在以前公司幹得也很愉快。我因為合同到期,為了獲得更好的發展空間及謀求對自己能持續發展的環境。並向公司辦理了離職手續,完成了工作交結。(後面這句也可以不談)
問題六、談談你的職業規化
分析:
企業都希望他所招聘的人是潛力股,看你是不是一個追求上勁的人,還有想看看你能夠在企業長期幹還是僅把其當著一個跳板。總的說來,回答這個問題要讓人覺得你是一個可培養,有潛力人。記住要看是什麼樣的人來面試你。如果是專案經理來面試你,你就不要說你以後的職業規化是專案經理。你就可以說你的職業規化是成為架構師,或者是技術專家等。否則他可能會認為你是一個對其有威脅的人。就算他內心知道這不算什麼,可能心理總會有一點點不爽。如果是老總面試或人事問你這樣的問題,你則可以說專案經理也無妨,不過要給人有一種覺穩的感覺。
回答例項:
考官:你的職業規化是怎麼樣的呢?(考官是專案經理)
令狐沖:我思維能力比較強,擅於邏輯分析。在之前的工作中積累了一定的架構經驗,以後就想成為一名架構師和技術專家。
寫在最後
上面的這些問題都是面試中十分常見的的問題,比較難以回答的。有些看似簡單卻不知從何說起。有些看似複雜卻又並不複雜。因為很多人都缺少專案經驗,對軟體開發的過程相對陌生,如果你沒有一定的程式碼和專案積累也很難去體會、理解。再說這方面的內容太要求實際經驗和日月積累,沒有人能幫助你。
現在我採用把枯燥的概念和實際的專案結合起來進行歸納,從而形成這樣一個答題技巧。並且對其中的一些技術結合實際進行分析和總結。希望閱讀者能快速的知其然也知其所以然。從而能夠提高面試的成功率。當然這僅僅是一個答題技巧,關鍵還是需要知識的積累。有道是“不積跬步,無以至千里;不聚細流,不以成江河”。這次完成此文也是我自己對知識的一次梳理,我並沒有去查閱和考證書本。我想完全通過自己的語言來描述專案開發的過程和一些細節。又因我實在是才疏學淺,真的希望大家能對我的不當及錯誤之處指出並加以指教,我就涕感淚流了。不管是技術還是人生,我才剛剛上路呢!
希望它能夠對未就業的你工作能有所幫助!