面試進行曲之技術面試(項目經驗)
在前期已經講過怎樣分析自己,對自己進行一個准確的定位,選擇一個合適的求職方向!並 結合自己的實際個人情況來寫一份針對性很強的個人簡歷! 個人簡歷就是個人的廣告! 好的 簡歷可以更受到用人需求單位青睞!好的簡歷才能讓你獲得面試的機會!我們還針對面試列出了j2ee方面的知識點!不管是筆試還是面試都是會考到這些非常重要的知識點!面試的技術內容並不會有想象中的那么難,主要注重基礎和細節!細節決定一切!所以列羅的那些知識點是需要下功夫去准備的! 當然列羅的那些知識點只是一些在面試中經常會出現的問題 集!每家企業都可能超出這些知識點的可能!自己去准備吧! 技術方面的考核通常分為筆試,技術面試;其中技術面試又分為專業知識面試和項目經驗考核。應該說來筆試和專業知識面試都是考核你對某方面(j2ee 或.net)知識的掌握和熟練程度!而項目經驗考核則是看你是不是擁有項目經驗,是不是適合企業的用人需要,是不是需要企業為你付出培養的成本,是不是你能夠馬上投入到工作中去.企業是以你的項目經驗 作為衡量你的工資標准的! 所以就是會出現有些同學可能在學校學習成績很好而企業給他開的工資並不高, 而有些同學的學習成績一般反而得到高工資的原因! 專業知識的考核只是企業了解你具有這方面的專業素養和能力! 其實有時筆試成績差一點或者你感覺在做筆試題的時候有些題目沒有做出來或答錯了並沒有關系的。 在技術面試的時候, 在回答專業知識方面的題目不夠理想, 也並不起決定性的作用! 總之筆試和專業知識面試的答題達到企業要求的 70%就可以了!當然如果你在專業知識方面表現的太差,考官對你也就沒有多大的興趣了! 但是最能決定企業下定決心錄用你的關鍵在於你的項目經驗(排除企業特別強調英文等其它方面能力外)。說了這么多好像都沒有說到正題,這是因為讓大家更清楚的了解回答好項目 經驗方面的問題是多么的重要。 而這方面又正好是剛從學校出來的學員十分薄弱的, 並且針對這方面介紹也十分少! 下面我們就來談談面試中關於項目經驗的問題及應該從哪些方面 進行回答!
問題一、請簡單的介紹一下你自己吧!
分析:這是在任何面試中都會遇到一個題目,看起來這個問題是十分簡單的,但是往往我們 並不知道考官問這個題目是希望從你的回答中獲得什么信息! 所以我們就很容易走題, 跑題, 不入正題!不能馬上就吸引考官。請記住抓住面試的每一個機會來推銷自己。但是往往我們不知道從哪里談起。所以我們得先了解考官想要獲取什么信息呢?
1. 你的從業時間
2. 你的教育背景
3. 你的工作經驗
4. 你的項目經驗
5. 你與眾不同之處
你從事相關的工作有多長了 你是否受過良好的教育 你是否有過具有一定的工作經驗 你是否有過豐富的項目經驗 你是怎么進行項目開發的,有什么特別之處,或者你在哪些項目中 取得過哪些成功,或者有哪些自己覺得驕傲的地方
6. 你最擅長的地方
7. 你的性格 你最擅長的技術是什么?
你是怎么樣的一個人
怎么回答: 我們一一來分析吧,
首先從業時間一般回答你進行軟件項目專業開發的時間.千萬不要把你以前在大街上賣過魚蛋或到夜市賣燒雞等亂七八糟的時間計算進來.工作經驗也是, 你至少有在一家公司呆過吧.不要告訴我你只學過 j2ee 或.net 半年時間,就想來我公司混飯吃. 要和你的簡歷對應起來.一般至少 1 年半以上. 教育背景:如果你上的大學及所上的專業比較對口,就說出來,非否就不要提了.總之是要揚長避短 工作經驗:也就是以前在什么公司上過班,與你簡歷上的一致就可以了.只 說與軟件開發的工作經驗,其它的就不要提了 項目經驗:你曾經做過的自認為比較好的項目,這里特別重要,先用一句話 來概括項目,然后把項目的功能及子功能全部敘述出來. 你與眾不同之處:也以說你在項目你以什么獨特的方法獲得什么不同的效 果,主要是能夠結果具體的項目或能舉例說出來. 最擅長的地方:主要告訴對方你最擅長哪方面的技術,是需求分析?編碼,或 數據庫或架構 你的性格:用一兩個詞來形容你自己,描述你的性格.
回答實例:
面試官:請簡單的介紹一下你自己吧!
令狐沖:您好,在下令狐沖.從事 j2ee 開發工作 3 年時間.20002 年至 2005 年在大宋桃花島軟件谷皇室軟件公司從事 j2ee 項目開發.其間開發過大宋俠士綜合管理平台.大宋俠士綜合 管理平台能夠自動收集大宋各路俠士,英雄好漢,隱居高人信息並對他們的個人信息及所作所 為進行跟蹤管理,實現俠士信息維護,查詢.俠義事件維護,俠士等級管理,俠士獎懲管理,俠義活 動發布,抗災募捐管理等。鄙人在項目中主要負責需求分析,架構設計和框架類代碼實現。 在項目開發中善於與客戶溝通,充分理解客戶需求。具有極強自學能力,在大宋藏經閣中通 讀了大量的軟件項目開發秘籍,具有藏文,印度文,金文的讀寫能力。
問題之二、談談你的 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 畫出時序圖。編寫詳細設計說明書。列出任務清單, 分組進行代碼編寫。 在代碼編寫階段,先統一完成所有的實體類。對於非實體類則先完成類的框架,也就是只寫 方法和注釋文字。具體方法的實現暫時為空。然后再進行代碼填寫。每完成一個類的代碼編 譯通過后都要進行重構和單元測試。每完成一個功能和模塊都由會由小組長進行集成測試。 使得完成的模塊是一個真正可以運行的,可見的功能實現。 在各個小組都完成自己的模塊后就進行模塊整合, 進行一次大規模的集成測試。 然后把產品給產品測試小組進行系統測試。
問題之四、你們是怎么保證軟件開發的質量的?
分析:這個問題其實上面的講解已經給了答案了。軟件質量是軟件實現對需求的滿足度。開發的軟件越滿足客戶的需求,說明軟件的質量越高。反之就是質量越低。盡管你開 發的軟件使用了新的技術,良好的設計,豐富的功能;但是這些功能都不是客戶需要的,客 戶需要的功能沒有實現或者是很多沒有實現。 這樣的軟件也是失敗的軟件。 為了保證軟件質 量,也就是讓開發的軟件最大程度滿足客戶的需求,只有兩個方法。一個是獲得充分完整的 需求,二是能過測試,以需求為中心編寫測試計划。來保證軟件合乎需求。
回答實例:
考官:你們是怎么來保證軟件的質量的呢?
令狐沖:要保證軟件的質量首先就要獲得完整的需求,在需求分析階段做了大量的 工作與客戶各個環節的代表性用戶進行溝通, 充分了解和熟悉客戶的業務。 並且從需求到設 計階段都保持與用戶的溝通和交流。 讓用戶的業務專家一直參與我們的需求, 分析和設計工 作。 其次我們會在需求分析后就編寫測試計划, 在開發的每個階段都進行相應的測試來保證代碼 是乎合相應需求的。在代碼編寫過程中,每完成一個類都由程序進行單元測試,每完成一個 功能點或模塊都要進行集成測試, 每一次集成測試都對上一次的已經測試通過的產品進行迭 代, 也就是以前測試成功的都會加入到本次測試中來。 使得每個完成的功能和模塊完成后都 是一個可以運行的,可以看得到的產品;同時也歡迎用戶來見證我們的集成測試結果。代碼 編寫完成后進行最后一次集成測試,然后交由獨立的測試小組對項目進行系統測試。
問題之五、你為什么離職的?(你為什么離開以前公司的?)
分析:這個問題幾乎在任何場合的面試都會有,有時是在技術面試的時候問,有時是在人事 面試的時候問,有時會在技術面試和人事面試的時候都問。其實也比較好回答,回答的抽象 一點比好。切記不要說以前公司的壞話,如果你這樣做。人家會想,你以后離職后同樣也會 說這家公司的壞話.一般都是說為了某求更好的發展空間。讓人感覺你是經過深思熟慮后才 選擇他們公司的。 回答實例:
考官:你為什么離開以前公司的?
令狐沖:以前公司對我很好,我在以前公司干得也很愉快。我因為合同到期,為了 獲得更好的發展空間及謀求對自己能持續發展的環境。 並向公司辦理了離職手續, 完成了工作交結。(后面這句也可以不談)
問題之六、談談你的職業規化
分析:企業都希望他所招聘的人是潛力股,看你是不是一個追求上勁的人,還有想看 看你能夠在企業長期干還是僅把其當着一個跳板。 總的說來, 回答這個問題要讓人覺得你是 一個可培養,有潛力人。記住要看是什么樣的人來面試你。如果是項目經理來面試你,你就
如果是項目經理來面試你,你就不要說你以后的職業規化是項目經理。 你就可以說你的職業規化是成為架構師, 或者是技術專家等。否則他可能會認為你是一個對其有威脅的人。就算他內心知道這不算什么,可能心理總會有一點點不爽。 如果是老總面試或人事問你這樣的問題, 你則可以說項目經理也無妨, 不過要給人有一種穩的感覺。
回答實例: 考官:你的職業規化是怎么樣的呢?(考官是項目經理)
令狐沖:我思維能力比較強,擅於邏輯分析。在之前的工作中積累了一定的架構經 驗,以后就想成為一名架構師和技術專家
不要說你以后的職業規化是項目經理。 你就可以說你的職業規化是成為架構師, 或者是技術 專家等。否則他可能會認為你是一個對其有威脅的人。就算他內心知道這不算什么,可能心 理總會有一點點不爽。 如果是老總面試或人事問你這樣的問題, 你則可以說項目經理也無妨, 不過要給人有一種覺穩的感覺。 回答實例: 考官:你的職業規化是怎么樣的呢?(考官是項目經理) 令狐沖:我思維能力比較強,擅於邏輯分析。在之前的工作中積累了一定的架構經 驗,以后就想成為一名架構師和技術專家 寫在最后:上面的這些問題都是面試中十分常見的的問題,比較難以回答的。有些看似簡單 卻不知從何說起。有些看似復雜卻又並不復雜。因為很多人都缺少項目經驗,對軟件開發的 過程相對陌生, 而老師講這方面的知識也比較少, 如果你沒有一定的代碼和項目積累就算老 師講你也很難去體會、 理解。 再說這方面的內容太要求實際經驗和日月積累, 老師也不好講。 現在我采用把枯燥的概念和實際的項目結合起來進行歸納, 從而形成這樣一個答題技巧。 並 且對其中的一些技術結合實際進行分析和總結。希望閱讀者能快速的知其然也知其所以然。 從而能夠提高面試的成功率。當然這僅僅是一個答題技巧,關鍵還是需要知識的積累。有道 是“不積跬步,無以至千里;不聚細流,不以成江河” 。這次完成此文也是我自己對知識的 一次梳理, 我並沒有去查閱和考證書本。 我想完全通過自己的語言來描述項目開發的過程和 一些細節。又因我實在是才疏學淺,真的希望大家能對我的不當及錯誤之處指出並加以指教, 我就涕感淚流了。不管是技術還是人生,我才剛剛上路呢!