[分享] 软件配置管理经典面试题
1你為什么要申請配置管理工程師這個職位
我們公司已經(jīng)通過了CMMI3,我在現(xiàn)在的公司就是做配置管理工程師的,我熟悉配置管理,并喜愛這份工作,希望能繼續(xù)從事該工作。
?
2你覺得自己能否勝任這個職位
能勝任,我們公司已經(jīng)通過了CMMI3,并且日常工作都是按照CMMI3的流程規(guī)范進行的,并不是為了過級而過級,是切實為了保證軟件質(zhì)量才過級的。我做配置管理已經(jīng)有一段時間了,不僅現(xiàn)有工作能夠完全勝任,還非常樂于學(xué)習(xí),如果貴公司的該職位有什么知識是我掌握的不夠好的,我能在短時間內(nèi)滿足工作要求。
?
3你覺得配置管理工程師需要掌握哪些技能
配置管理工具的使用,構(gòu)建腳本的編寫,對工件的理解,了解軟件工程,配置管理相關(guān)知識,配置管理的工作方法。
需要掌握的技能 專業(yè)技能如程序設(shè)計,??配置管理, 變更控制(版本風險控制), 發(fā)布管理, 持續(xù)集成, 配置項(包括很多, 如文檔, 源碼等)規(guī)范等; 其它技能 團隊合作能力, 與人溝通能力, 配置管理威信等.
?
4配置管理工程師的職責有哪些
職責包括 保證工作產(chǎn)品的一致性、完整性、可追溯性,管理配置項,維護配置庫,變更控制,發(fā)布管理。
?
5配置管理能給項目帶來的好處有哪些
因為配置管理保證了配置項的完整和可追溯,使團隊成員可以拿到所需工件的所需版本,不會因為某個人的習(xí)慣問題,導(dǎo)致配置項缺失(比如東西在某人本機保存,人離職了,東西就找不到了);
變更控制使團隊每個人都了解到誰改變了哪些東西,保證了所有團隊成員的信息對稱;(比如需求已變化,但測試人員不知道,還按照老需求來測試,結(jié)果當然是不符合)
配置管理給項目帶來的最大的好處:規(guī)范化的配置項管理可以使整個團隊隨時拿到需要的東西(包括備份,文件歷史等);對變更的控制可以對整個配置庫(特別是對開發(fā)項目)的發(fā)展,對產(chǎn)品的變更隨時了解;有了配置管理的支持,更大的提高公司員工的工作效率,把公司從一個手工的,有點混亂的項目管理過程中解放出來,實現(xiàn)更完美的規(guī)范化。
?
6作為一個配置管理工程師,哪些方面是工作的重點可能的難點會有哪些
工作重點:當然是對配置項的規(guī)范化的這樣一個過程,包括對配置管理工具的使用,對配置項的修改控制,對配置項的隨時備份等。 難點:如果一個公司以前沒有配置管理這樣一個理念的話,最大的難處就是使公司內(nèi)部人員熟悉并遵循配置管理這樣一套理念啦。
?
7什么是基線什么是label tag??branch他們之間有什么聯(lián)系和區(qū)別.
基線是一組被正式評審?fù)ㄟ^并經(jīng)CCB同意發(fā)布的工作產(chǎn)品集合,它作為下游開展工作的基礎(chǔ),已基線工作產(chǎn)品的變更必須受控。
結(jié)合我們公司的情況,如果使用的是vss配置庫,在里程碑處會建立基線,建立的同時,會為此基線打個label,相當于給這一系列的配置項集合貼了個標簽,表示此集合都是xxxx1.0設(shè)計基線的成員;另外就是自動構(gòu)建的時候會給參與構(gòu)建的所有文件都打label,告訴此版本的文件參與了自動構(gòu)建,將來有需要可以get到整個label;
在svn的使用中,會用到tag和branch,tag是里程碑處的一個copy;
tag是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應(yīng)該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標記。
branch,是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。
branches:分枝
當多個人合作,可能有這樣的情況出現(xiàn):John突然有個想法,跟原先的設(shè)計不太一致,可能是功能的添加或者日志格式的改進等等,總而言之,這個想法可能需 要花一段時間來完成,而這個過程中,John的一些操作可能會影響Sally的工作,John從現(xiàn)有的狀態(tài)單獨出一個project的話,又不能及時得到 Sally對已有代碼做的修正,而且獨立出來的話,John的嘗試成功時,跟原來的合并也存在困難。這時最好的實踐方法是使用branches。 John建立一個自己的branch,然后在里面實驗,必要的時候從Sally的trunk里取得更新,或者將自己的階段成果匯集到trunk中。
branch是版本樹演進的一個分支,為了不影響主枝,可以作為個人的工作位置,或者某定制開發(fā)的位置,如果將來有必要將該定制合并到主枝,可以使用配置庫提供的合并功能。
httpblog.myspace.cne406532053.htm
需求一:
有一個客戶想對產(chǎn)品做定制,但是我們并不想修改原有的svn中trunk的代碼。
方法:
用svn建立一個新的branches,從這個branche做為一個新的起點來開發(fā)
svn copy svnservertrunk svnserverbranchesep -m init ep
Tip
如果你的svn中以前沒有branches這個的目錄,只有trunk這個,你可以用
svn mkdir branches
新建個目錄
需求二:
產(chǎn)品開發(fā)已經(jīng)基本完成,并且通過很嚴格的測試,這時候我們就想發(fā)布給客戶使用,發(fā)布我們的1.0版本
svn copy svnservertrunk svnservertagsrelease-1.0 -m 1.0 released
咦,這個和branches有什么區(qū)別,好像啥區(qū)別也沒有?
是的,branches和tags是一樣的,都是目錄,只是我們不會對這個release-1.0的tag做修改了,不再提交了,如果提交那么就是branches
需求三:
有一天,突然在trunk下的core中發(fā)現(xiàn)一個致命的bug,那么所有的branches一定也一樣了,該怎么辦?
svn -r 148149 merge svnservertrunk branchesep
其中148和149是兩次修改的版本號。
?
8一個構(gòu)建(build)發(fā)布的過程是什么(請描述一下典型的發(fā)布一個build的流程)
構(gòu)建-提交測試-修改代碼-構(gòu)建-提交測試直至測試通過-配置審計-建立基線-走審批流程-發(fā)布
5 D+ K! F: z6 `4 {3 \
9release notes都應(yīng)該包括哪些內(nèi)容
一般是版本控制(臂如vss,cvs等)的說明文檔,臂如標簽,修改說明等。這個格式可以自己定義,沒有大標準。
項目簡介、發(fā)布背景、運行測試環(huán)境、與已有版本相比的新功能特性、升級方法、已知錯誤和局限性、已測試的性能、工件發(fā)布列表
10廣義上的Change Request(CR)都包括哪些內(nèi)容
項目名稱、變更原因、變更分析(影響程度、緊急程度、影響因素□范圍? ?? ? □工作量? ???□進度? ?? ? □成本? ?? ? □資源? ?? ? □質(zhì)量)、申請變更的內(nèi)容(是配置項變更還是基線變更)、受到影響的配置項,變更配置項的具體執(zhí)行人
11你一天的多長時間用來做build你一天的時間安排是個什么樣子的
寫好構(gòu)建腳本后,之后系統(tǒng)每天自動執(zhí)行自動構(gòu)建。
12簡述在一個項目周期中,配置管理工程師(CM)的主要活動(工作)有哪些
以項目計劃為輸入,做項目的配置管理計劃,計劃包含采用何種配置管理工具、備份策略、目錄的設(shè)置、權(quán)限如何分配、配置項的受控計劃、基線的建立計劃、審計計劃;按照配置管理計劃建立配置管理庫,維護配置管理庫、分配配置庫權(quán)限,管理配置項(受控工件、建立基線);進行配置審計;項目的變更控制;打部署包提交測試,進行版本發(fā)布。維護項目的配置管理工作表,按月整理事業(yè)部配置管理月報。
大家回答的時候可以從前往后敘述,這樣也不容易忘記,還顯得有條理.
13請描述一下你使用過的配置管理工具?
VSS,svn;
vss采用的是鎖定-修改-解鎖的方式,對于多人的協(xié)同開發(fā)存在一定弊端,系統(tǒng)無法自動檢測來自他人的修改,只能在局域網(wǎng)使用。
svn采用的是復(fù)制-修改-合并的策略,可以檢測到他人的修改,有較好的合并功能,還可以在外網(wǎng)使用,對于規(guī)模不太大的團隊已經(jīng)夠用了,在windows的環(huán)境下使用非常的方便,并且可以集成到eclipse中直接進行操作,現(xiàn)階段非常適合我們公司的開發(fā)環(huán)境。
14在安裝配置方面有什么需要注意的?他的擴展功能有哪些?如何實現(xiàn)?
公司采用的是apache+svn的使用方式,windows下的安裝是比較容易的,linux的話,就要注意先安裝apr apr-util berkeley db這些
26除了你使用過的軟件配置管理工具,還了解哪些工具?請說出這些工具的區(qū)別。
git分布式開發(fā)用非常好,權(quán)限控制薄弱,對windows的支持不好,需要在linux下使用.相比 svn,git 代碼庫體積小(能小 50% 多,如果 svn 里分支用本地文件拷貝 + svn add,那么 git 在體積上更占優(yōu)勢),git 工具速度很快,對合并支持非常好,探測文件重命名的做法很獨特,git-svn很好用,分支很輕量級. 如果不怎么理 Windows 平臺,代碼很龐大,對合并要求很高,不憚理解 git 的原理以及看手冊,那么 git 是很好的選擇。
cvs:文本下載是差異的,上傳是全量,不是原子性提交,如果上傳過程遇到網(wǎng)絡(luò)中斷,可能會上傳一部分文件,導(dǎo)致版本出現(xiàn)問題,目錄未納入版本控制,不能重命名,對于二進制的文件是采用獨立的冗余的存儲,建議使用svn
clearcase:沒有具體使用過,看資料都說安裝配置使用比較復(fù)雜。
svn項目不大,對權(quán)限控制很看重,應(yīng)選擇SVN
15請問你是否親手裝過windows 操作系統(tǒng)?是否使用過windows 2003 server?
格式化硬盤該怎么樣去做?
安裝使用過。我的電腦-管理里面進行操作
16請問你是否裝過linux或者unix操作系統(tǒng)?請分別說出你所知道的linux 和unix 發(fā)行版本
自己裝過redhat linux 5.2企業(yè)版
linuxUbuntu(烏班圖),Fedora,OpenSUSE,Debian(待賓),Mandriva,Mint,PCLinuxOS,Slackware,Gentoo,CentOS,FreeBSD
httpwww.cnbeta.comarticles112817.htm
unixAUX??AIX??BSD??DragonFly BSD??FreeBSD??GNU??HP-UX??IRIX??Linux??LynxOS??Mac OS X??Minix??NetBSD??NEXTSTEP??OpenBSD??QNX??SCO OpenServer??Solaris??System V??Tru64??Xenix
17你知道配置管理中基線的含義么?怎樣把項目中某個重要的時刻凍結(jié)?
基線是一組被正式評審?fù)ㄟ^并經(jīng)CCB同意發(fā)布的工作產(chǎn)品集合,它作為下游開展工作的基礎(chǔ),已基線工作產(chǎn)品的變更必須受控。
18你一般會把哪些東西納入版本控制?
項目的重要工作產(chǎn)品,過程性的文檔就不需要版本控制了。
19怎樣可以保證團隊中每個人都知道誰改變了哪些東西?
通過變更控制,每次變更結(jié)束都會郵件通知涉眾,并且維護該項目的配置管理工作表,記錄此次變更,在工件重新受控提交時會在注釋中簡要記錄。
可以通過變更控制,變更活動關(guān)聯(lián)的配置項清單和配置工具的日志信息。
20Tag和Branch的區(qū)別是什么?在什么情況下該使用tag,什么時候用branch?
Tag是標簽,Branch是分支。當項目里程碑到達了或項目發(fā)版的時候需要對項目的重要工作產(chǎn)品打一條Tag.當項目發(fā)版后主分支需要做新版本,而又有上線后的BUG需要上緊急版本修復(fù)時需以項目發(fā)版時創(chuàng)建的Tag為基準創(chuàng)建一條Branch來修改上線后的緊急BUG。
branches和tags是一樣的,都是目錄,只是我們不會對這個release-1.0的tag做修改了,不再提交了,如果提交那么就是branches
tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應(yīng)該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標記。
branch,是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。
總結(jié)
以上是生活随笔為你收集整理的[分享] 软件配置管理经典面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做了几个Firefox的主题
- 下一篇: 如何高效检索论文文献