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