天天看點

面試進行曲之技術面試(項目經驗)

面試進行曲之技術面試(項目經驗)

        在前期已經講過怎樣分析自己,對自己進行一個準确的定位,選擇一個合适的求職方向!并結合自己的實際個人情況來寫一份針對性很強的個人履歷!個人履歷就是個人的廣告!好的履歷可以更受到用人需求機關青睐!好的履歷才能讓你獲得面試的機會!(點選履歷,擷取100份履歷模闆下載下傳方式)

        我們還針對面試列出了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畫出時序圖。編寫詳細設計說明書。列出任務清單,分組進行代碼編寫。

        在代碼編寫階段,先統一完成所有的實體類。對于非實體類則先完成類的架構,也就是隻寫方法和注釋文字。具體方法的實作暫時為空。然後再進行代碼填寫。每完成一個類的代碼編譯通過後都要進行重構和單元測試。

        每完成一個功能和子產品都由會由小組長進行內建測試。使得完成的子產品是一個真正可以運作的,可見的功能實作。

        在各個小組都完成自己的子產品後就進行子產品整合,進行一次大規模的內建測試。然後把産品産給産品測試小組進行系統測試。

問題之四、你們是怎麼保證軟體開發的品質的?

        這個問題其實上面的講解已經給了答案了。軟體品質是軟體實作對需求的滿足度。開發的軟體越滿足客戶的需求,說明軟體的品質越高。反之就是品質越低。盡管你開發的軟體使用了新的技術,良好的設計,豐富的功能;

        但是這些功能都不是客戶需要的,客戶需要的功能沒有實作或者是很多沒有實作。這樣的軟體也是失敗的軟體。為了保證軟體品質,也就是讓開發的軟體最大程度滿足客戶的需求,隻有兩個方法。

        一個是獲得充分完整的需求,二是能過測試,以需求為中心編寫測試計劃。來保證軟體合乎需求。

       考官:你們是怎麼來保證軟體的品質的呢?

       令狐沖:要保證軟體的品質首先就要獲得完整的需求,在需求分析階段做了大量的工作與客戶各個環節的代表性使用者進行溝通,充分了解和熟悉客戶的業務。并且從需求到設計階段都保持與使用者的溝通和交流。讓使用者的業務專家一直參與我們的需求,分析和設計工作。

        其次我們會在需求分析後就編寫測試計劃,在開發的每個階段都進行相應的測試來保證代碼是乎合相應需求的。在代碼編寫過程中,每完成一個類都由程式進行單元測試,每完成一個功能點或子產品都要進行內建測試,每一次內建測試都對上一次的已經測試通過的産品進行疊代, 也就是以前測試成功的都會加入到本次測試中來。使得每個完成的功能和子產品完成後都是一個可以運作的,可以看得到的産品;

        同時也歡迎使用者來見證我們的內建測試結果。代碼編寫完成後進行最後一次內建測試,然後交由獨立的測試小組對項目進行系統測試。

問題之五、你為什麼離職的?(你為什麼離開以前公司的?)

        這個問題幾乎在任何場合的面試都會有,有時是在技術面試的時候問,有時是在人事面試的時候問,有時會在技術面試和人事面試的時候都問。其實也比較好回答,回答的抽象一點比好。切記不要說以前公司的壞話,如果你這樣做。人家會想,你以後離職後同樣也會說這家公司的壞話.一般都是說為了某求更好的發展空間。讓人感覺你是經過深思熟慮後才選擇他們公司的。

       考官:你為什麼離開以前公司的?

       令狐沖:以前公司對我很好,我在以前公司幹得也很愉快。我因為合同到期,為了獲得更好的發展空間及謀求對自己能持續發展的環境。并向公司辦理了離職手續,完成了工作交結。(後面這句也可以不談)

問題之六、談談你的職業規化

        企業都希望他所招聘的人是潛力股,看你是不是一個追求上勁的人,還有想看看你能夠在企業長期幹還是僅把其當着一個跳闆。

        總的說來,回答這個問題要讓人覺得你是一個可培養,有潛力人。記住要看是什麼樣的人來面試你。如果是項目經理來面試你,你就不要說你以後的職業規化是項目經理。你就可以說你的職業規化是成為架構師,或者是技術專家等。否則他可能會認為你是一個對其有威脅的人。就算他内心知道這不算什麼,可能心理總會有一點點不爽。如果是老總面試或人事問你這樣的問題,你則可以說項目經理也無妨,不過要給人有一種覺穩的感覺。

       考官:你的職業規化是怎麼樣的呢?(考官是項目經理)

       令狐沖:我思維能力比較強,擅于邏輯分析。在之前的工作中積累了一定的架構經驗,以後就想成為一名架構師和技術專家。

寫在最後

        上面的這些問題都是面試中十分常見的的問題,比較難以回答的。有些看似簡單卻不知從何說起。有些看似複雜卻又并不複雜。

        因為很多人都缺少項目經驗,對軟體開發的過程相對陌生,而老師講這方面的知識也比較少,如果你沒有一定的代碼和項目積累就算老師講你也很難去體會、了解。再說這方面的内容太要求實際經驗和日月積累,老師也不好講。

        現在我采用把枯燥的概念和實際的項目結合起來進行歸納,進而形成這樣一個答題技巧。并且對其中的一些技術結合實際進行分析和總結。希望閱讀者能快速的知其然也知其是以然。進而能夠提高面試的成功率。當然這僅僅是一個答題技巧,關鍵還是需要知識的積累。有道是“不積跬步,無以至千裡;不聚細流,不以成江河”。

        這次完成此文也是我自己對知識的一次梳理,我并沒有去查閱和考證書本。我想完全通過自己的語言來描述項目開發的過程和一些細節。又因我實在是才疏學淺,真的希望大家能對我的不當及錯誤之處指出并加以指教,我就涕感淚流了。不管是技術還是人生,我才剛剛上路呢!

        希望它能夠對未就業的學員的就業及對張老師的工作能有所幫助!

        在此,特别對陳培源,龔芳海,宋文宏老師表示感謝之情!

面試進行曲之技術面試(項目經驗)

繼續閱讀