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