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