項目面試題
1.描述最熟悉的或者(最近)的一個項目 ?
目的:檢測技術和項目的熟悉程度+工作職責
回答:項目名稱,項目的甲方,背景,實現的目的和意義,該項目主要是為了解決什么問題,具體的實際功能(盡可能詳細清晰)。
項目分為兩期完成,我在項目中負責的一期中XX模塊,二期項目中負責XX模塊開發。負責對技術文檔的編寫,負責對項目上線后BUG修復等工作。
2.描述在開發項目中遇到了哪些問題 ?怎么解決的 ?
目的:檢驗你對項目的需求了解,參與程度,解決問題的方式。
回答:從需求問題和技術問題兩個方面回答。
需求問題:和產品經理或者甲方的客戶進行充分地討論項目的實際應用場景,反復閱讀需求文檔(3遍或5遍)。
技術問題:比如Redis問題:如何把Redis內存中的數據跟mysql數據庫中的數據保持同步。先百度(為什么、是什么、怎么用),閱讀官方文檔,利用晚上私下時間解決。
3.描述在開發項目中有哪些亮點 ?
目的:項目的獨特之處和優點。
回答:項目的應用場景,項目規范(文檔規范,編碼規范)比如之前項目編碼沒有那么規范,現在換了項目經理,他按照一些上市公司的標準來規范項目,所以我認為規范是項目中最大的亮點。還比如項目承受的并發量等。
注意:亮點切不可一樣,要回自己獨立思考。
需求亮點/技術亮點:比如為了解決高并發做了哪些事情,項目用到了Redis緩存技術,之前沒用到過這個技術。
4.看你簡歷上項目里用到的技術、框架、Redis、數據庫等,針對這些技術問問題 ?
就是簡歷上寫的技術,都要做好復習的充分準備。
5.你參與的功能模塊深入細節 ?(用到了哪些表、表名叫什么、有哪些字段)?
1、XX功能(要描述清楚)
2、數據庫用到了哪些表;具體的表名稱是什么;表里面有哪些字段(提前都寫出來):先說公共字段(主鍵ID)、狀態字段(status)、排序字段(sortnum)、時間字段(create_date/update_date)、 用戶字段(create_user/update_user)表示數據的完整性,用于以后做數據統計等。
6.線目上線部署過程 ?
如果服務器CPU達到100%了,你該怎么解決?
解決:趕緊上報領導,不要自己去操作,自己做不了主,搞砸了會有被開除的風險。
人員參與:開發人員先自己測試,然后交付測試組進行測試,修復BUG,回歸測試等一系列完成以后,需要先進行領導報備(驗收),驗收完成確認無誤后,由領導通知所有相關人員準備上線。
描述詳細步驟(目的:看你對項目部署過程的熟悉程度):研發工程師收到許可上線通知(郵件或者口頭形式)后,進行線上的準備工作。第一步:把自己開發的模塊制定上線的策略,若是多個系統,需要確定上線的順序,細節 :比如(注冊中心,Config…);第二步: 數據配置(確認)上線后,同步更新數據庫數據和表結構,確保數據庫正式環境和測試環境完全一致;第三步:項目部署(要清理緩存,把測試數據清理掉);第四步:測試,開發人員要把業務流程完整走一遍(緩存預熱),測試人員采用灰度測試(只需要少量數據或者測試數據進行項目測試)+ 走一遍完整的業務流程,確保無誤后通知產品相關人員進行二次測試;第五步:數據監控(監控報警)。
7.單元測試或開發規范 ?
單元測試:測試準則:滿足AIR原則,A(自動化),I(獨立性),R(可重復)。
開發規范:按照需求文檔來完成業務開發;目錄結構規范、部署規范、文件命名規范、編碼規范、數據設計規范等。
8.如何在線上修復BUG ?
1、通過打包編譯文件工具進行代碼替換。
2、自動化部署:Jenkins+Docker+Git+GitLab。
3、負載均衡(Nginx)把新的項目權重weight調大一點,用戶就到這個替換的項目訪問了。
9.如果你的項目出現線上問題,你怎么解決 ?
定位問題:1、結合線上日志思考問題出現的最大可能原因,找到以后要進行驗證,然后及時解決。
2、如果找不到BUG,要想辦法盡可能做到本地重現(重現需要哪些條件),若無法重現,就仔細觀察線上日志,對各種日志進行排查,確定好優先級。若還不行,那就是日志做的不好。
3、如果本地做了重新+精細的日志,就把本地正常能運行的JAR包替換線上的JAR包,看問題是否解決或者是否發生變化。
注意:Linux如何查看日志命令。
10.項目增加新功能,你怎么和之前的功能同步運行使用 ?
1、發布公告通知維護/更新時間。(這個工作是開發人員操作的)
2、將本地更新好的項目(或JAR包)打包替換服務器上的項目。
3、運行。
11.項目的并發量是多少 ?
目的:你有沒有高并發的實戰經驗。
回答:并發概念:指同一個應用在同一時間多個進行訪問,人數越多,并發量越高,服務器帶寬要求很高。服務器并發量分為:系統用戶數、最大并發訪問數、同時在線用戶數、業務并發用戶數。
系統用戶數:比如某個APP用戶數有萬人。
最大并發訪問數==同時在線用戶數:比如最高峰同時有5000人。
12.如何來測試項目的高并發 ?
測試相關:使用JMeter進行項目的并發量測試。
13.高并發的解決方案 ?
1、負載均衡。
2、動靜分離。
3、文件服務器(圖片、視頻)。
4、頁面HTML靜態化。
5、熱點數據緩存(Redis)單獨部署,搭建Redis Cluster集群。
6、數據庫分表分庫,冷熱數據分離,SQL語句優化,合理的表設計。
7、提高服務器的性能CPU,高性能的服務器,高性能的數據庫(主從復制、讀寫分離、Redis緩存)。
14.面能試中如何給自己加分 ?
人與人之間的溝通交流最重要的是:情商。
情商:說話/溝通能夠讓對方舒服(快樂是可以分享的),不露痕跡地說出面試官愛聽的話 。
1、能考慮到代碼的擴展性、安全性、有意識的參與框架的設計,需求分析。
2、有調優意識,有優化意識,通過監控和日志發現問題,然后解決。
3、綜合素質: 學習能力強、動手能力強、認真努力、抗壓能力強、團隊合作好。有積極的心態,通過不斷的學習來提高自己的技能,除了完成自己的任務外,還積極幫助同事,共同進步,共同成長。
4、有主見:團隊中遇到問題,敢于主動出擊解決問題。
5、需求方面:在需求開發中,除了能夠按時按質的完成任務,還會在保證項目進度的前提下和項目經理及時溝通交流,以便完成更加高效的代碼。