阿里巴巴笔试(公共题 2008-10-10)学习篇
生活随笔
收集整理的這篇文章主要介紹了
阿里巴巴笔试(公共题 2008-10-10)学习篇
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
公共題也想寫寫,主要是由我最差的智力題。呵呵,其實(shí)智力題很多是需要細(xì)心的,諸如邏輯推理之類的題目就不去深究了,畢竟這個(gè)是積累啊!看來,智力題中的數(shù)組序列、三個(gè)水桶問題最容易考了,好多的類似的題目,諸如DOS攻擊系統(tǒng)漏洞就是純網(wǎng)絡(luò)的了:Synflood、Smurf、.Land-based、Ping of Death、Teardrop、PingSweep、Pingflood。緩沖區(qū)溢出攻擊向緩沖區(qū)發(fā)送大量數(shù)據(jù),使部分?jǐn)?shù)據(jù)溢出到相鄰的內(nèi)存緩沖區(qū),從而破壞緩沖區(qū)或者重寫邏輯。這樣就能夠造成拒絕服務(wù)、破壞數(shù)據(jù)或者在遠(yuǎn)程服務(wù)器上執(zhí)行惡意代碼。防止緩沖區(qū)溢出攻擊的惟一方法是檢查所有用戶輸入的長度。至于輸入法漏洞的3389端更是每天聽說過快了,什么玩意!前兩條沒有寫完呢,繼續(xù)吧!公共題中有考到軟件測試方面的知識(shí),涉及測試用例個(gè)數(shù),這個(gè)需要鞏固軟件工程的知識(shí)了,個(gè)人覺得軟考軟件設(shè)計(jì)師的書重要的!其實(shí)無論是語句覆蓋還是條件覆蓋。此外,還考到了oracle中admin下的幾個(gè)目錄:udump,用戶轉(zhuǎn)儲(chǔ)文件存放位置[存放用戶信息];bdump,后臺(tái)進(jìn)程的一些調(diào)試、日志信息[后臺(tái)進(jìn)程和ALRET.LOG文件];cdump,主要是oracle的內(nèi)核轉(zhuǎn)儲(chǔ)記錄存放位置[存放系統(tǒng)文件]。有一個(gè)很好的軟件,TureCrypt,源磁盤加密軟件,免費(fèi)軟件,加密方法不像普通的加密大師什么的,一下子就能破解。WinwebMail、SendMail都是典型的郵件服務(wù)器,呵呵,這個(gè)不知道哦,可以自己假設(shè)這樣一個(gè)郵件服務(wù)器的!至于使普通用戶可執(zhí)行超級(jí)用戶文件的就是s權(quán)限了,unix-center是個(gè)學(xué)習(xí)unix的好網(wǎng)站哦!chmod +s,創(chuàng)建s與t權(quán)限,是為了讓一般用戶在執(zhí)行某些程序的時(shí)候,能夠暫時(shí)具有該程序擁有者的權(quán)限。當(dāng)s權(quán)限在user的x時(shí),也就是類似 -r-s--x--x,稱為Set UID,簡稱為SUID,這個(gè)UID表示User的ID,而User表示這個(gè)程序(/usr/bin/passwd)的擁有者(root)。那么,我們就可以知道,當(dāng)dmtsai用戶執(zhí)行 /usr/bin/passwd時(shí),它就會(huì)“暫時(shí)”得到文件擁有者root的權(quán)限。 軟件測試并不等于程序測試,軟件測試應(yīng)該貫穿整個(gè)軟件定義與開發(fā)整個(gè)期間。因此需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說明、概要設(shè)計(jì)規(guī)格說明、詳細(xì)設(shè)計(jì)規(guī)格說明以及源程序,都應(yīng)該是軟件測試的對象。 OPenAPI我覺得單元測試、安全測試和性能測試至少是要的吧,而
驗(yàn)收測試是部署軟件之前的最后一個(gè)測試操作,其目的是確保軟件準(zhǔn)備就緒,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)。它主要是針對項(xiàng)目型的測試系統(tǒng),α測試和β測試主要是針對產(chǎn)品型的測試系統(tǒng),而不能說驗(yàn)收測試包括α測試和β測試,驗(yàn)收測試也是UAT-User Acceptance Testing即用戶可接收性測試,它是以用戶為主的測試。項(xiàng)目最重要的特性應(yīng)該是可管理性和可預(yù)測性吧。 Web應(yīng)用安全漏洞最突出的有:Cross Site Scripting、SQL injection等。Cross Site Scripting是一種存在于Web應(yīng)用中,允許黑客向Web應(yīng)用注入惡意腳本,以獲取其他用戶重要數(shù)據(jù)和隱私信息為母的一種工具形式。最后一題也得說一說了,有兩個(gè)有序的整數(shù)集合啊,b。請寫一個(gè)函數(shù),實(shí)現(xiàn)找出a,b集合中的交集,并打印出來。這個(gè)題倒是不難,我想多了,硬是把第一個(gè)數(shù)組的值與第二個(gè)數(shù)組的值循環(huán)比較,算法時(shí)間復(fù)雜確實(shí)不敢恭維啊!實(shí)際上只需要從左到右比較就ok了。
附錄:
一、IPSec協(xié)議
IPSec 協(xié)議不是一個(gè)單獨(dú)的協(xié)議,它給出了應(yīng)用于IP層上網(wǎng)絡(luò)數(shù)據(jù)安全的一整套體系結(jié)構(gòu),包括網(wǎng)絡(luò)認(rèn)證協(xié)議 Authentication Header(AH)、封裝安全載荷協(xié)議Encapsulating Security Payload(ESP)、密鑰管理協(xié)議Internet Key Exchange (IKE)和用于網(wǎng)絡(luò)認(rèn)證及加密的一些算法等。IPSec 規(guī)定了如何在對等層之間選擇安全協(xié)議、確定安全算法和密鑰交換,向上提供了訪問控制、數(shù)據(jù)源認(rèn)證、數(shù)據(jù)加密等網(wǎng)絡(luò)安全服務(wù)。
IPSec協(xié)議是一個(gè)范圍廣泛、開放的VPN安全協(xié)議,工作在OSI模型中的第三層——網(wǎng)絡(luò)層。
???? IPSec協(xié)議實(shí)際上是一套協(xié)議而不是一個(gè)單個(gè)的協(xié)議。 二、隧道技術(shù)(Tunneling)?
???? ?隧道技術(shù)的基本過程是在源局域網(wǎng)與公網(wǎng)的接口處將數(shù)據(jù)(可以是ISO 七層模型中的數(shù)據(jù)鏈路層或網(wǎng)絡(luò)層數(shù)據(jù))作為負(fù)載封裝在一種可以在公網(wǎng)上傳輸?shù)臄?shù)據(jù)格式中,在目的局域網(wǎng)與公網(wǎng)的接口處將數(shù)據(jù)解封裝,取出負(fù)載。被封裝的數(shù)據(jù)包在互聯(lián)網(wǎng)上傳遞時(shí)所經(jīng)過的邏輯路徑被稱為“隧道”。
要使數(shù)據(jù)順利地被封裝、傳送及解封裝,通信協(xié)議是保證的核心。目前VPN隧道協(xié)議主要有4種:點(diǎn)到點(diǎn)隧道協(xié)議PPTP、第二層隧道協(xié)議L2TP、網(wǎng)絡(luò)層隧道協(xié)議IPSec以及SOCKS v5協(xié)議。其中,PPTP和L2TP工作在數(shù)據(jù)鏈路層,IPSec工作在網(wǎng)絡(luò)層,SOCK v5工作在會(huì)話層。各協(xié)議工作在不同層次,我們應(yīng)該注意,不同的網(wǎng)絡(luò)環(huán)境適合不同的協(xié)議,在選擇VPN產(chǎn)品時(shí),應(yīng)該注意選擇。 三、SSL和HTTPS SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持;SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務(wù)主要有:認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變。 https是由Netscape開發(fā)并內(nèi)置于其瀏覽器中,用于對數(shù)據(jù)進(jìn)行壓縮和解壓操作,并返回網(wǎng)絡(luò)上傳送回的結(jié)果。HTTPS實(shí)際上應(yīng)用了Netscape的完全套接字層(SSL)作為HTTP應(yīng)用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進(jìn)行通信。)SSL使用40 位關(guān)鍵字作為RC4流加密算法,這對于商業(yè)信息的加密是合適的。HTTPS和SSL支持使用X.509數(shù)字認(rèn)證,如果需要的話用戶可以確認(rèn)發(fā)送者是誰。。https是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,https的安全基礎(chǔ)是SSL。 四、GnuPG ?????? 電子郵件和數(shù)據(jù)加密領(lǐng)域,PGP(Pretty Good Privacy)是最為有名的加密工具之一。從9.0版開始,PGP已經(jīng)發(fā)展成為個(gè)人計(jì)算機(jī)數(shù)據(jù)保護(hù)的一個(gè)全面的解決方案。你也不一定非要花上大價(jià)錢才能保護(hù)郵件內(nèi)容。GnuPG以實(shí)際行動(dòng)證實(shí)了它是開源軟件中最好的解決方式之一。它能與絕大多數(shù)電子郵件客戶程序結(jié)合,為其提供強(qiáng)大的加密技術(shù)。 ????? GnuPG進(jìn)行加密要通過叫作公共密鑰基礎(chǔ)設(shè)施(PKI)的簡單原理。每個(gè)GnuPG用戶都擁有由一個(gè)公共密鑰和一個(gè)私有密鑰組成的密鑰對。使用公共密鑰進(jìn)行加密的電子郵件只能用對應(yīng)的私有密鑰解碼。公共密鑰及其對應(yīng)的電子郵件地址集中儲(chǔ)存在GnuPG密鑰服務(wù)器上的數(shù)據(jù)庫中;私有密鑰只有它的主人才知道,且在每次使用時(shí)都必須輸入密碼。要想對一條信息進(jìn)行加密必須從密鑰服務(wù)器上獲得接收人的公共密鑰。 五、linux中怎么查找權(quán)限位為S的文件 ????? 兩種特殊的文件訪問權(quán)限分別是SUID(八進(jìn)制為4000)和SGID(八進(jìn)制為2000)。設(shè)置這兩種權(quán)限的文件,將使其它用戶在執(zhí)行它們時(shí)擁有所有者的權(quán)限。也就是說,如果一個(gè)設(shè)置為SUID的程序,即使是普通用戶使用也是作為root來運(yùn)行的。因此,SUID/SGID文件是安全的隱患。?
????? find / -type f -perm +6000 -ls | less
????? find / -type f -perm +6000 > Suid-Sgid.txt 六、軟件缺陷生命周期
????? 軟件缺陷是指系統(tǒng)或系統(tǒng)部件中那些導(dǎo)致系統(tǒng)或部件不能實(shí)現(xiàn)其功能的缺陷。軟件缺陷的起源:需求、構(gòu)架、設(shè)計(jì)、編碼、測試、用戶。對于每一個(gè)軟件缺陷都規(guī)定了6個(gè)生命狀態(tài):Open、Working、Verify、Cancel、Close、Defer,它們的基本定義是:
??????? Open態(tài)---缺陷初試狀態(tài),軟件測試員報(bào)告一個(gè)缺陷,缺陷生命周期開始;
??????? Working態(tài)---缺陷修改狀態(tài),程序員接收缺陷,正在修改中;
??????? Verify態(tài)---缺陷驗(yàn)證狀態(tài),程序員修改完畢,等待軟件測試員驗(yàn)證;
??????? Close態(tài)---缺陷關(guān)閉狀態(tài),軟件測試員確認(rèn)缺陷被改正,將缺陷關(guān)閉;
??????? Cancel態(tài)---缺陷刪除狀態(tài),軟件測試員確認(rèn)不是缺陷,將缺陷置為刪除狀態(tài) (不做物理刪除);
??????? Defer態(tài)---缺陷延期狀態(tài),管理者確認(rèn)缺陷需要延期修改或追蹤,將缺陷置為延期狀態(tài);
??????? 上述Open態(tài)、Working態(tài)、Verify態(tài),稱為缺陷的活動(dòng)態(tài);
??????? Close態(tài)、Cancel態(tài)、Defer態(tài),稱為缺陷的終結(jié)態(tài)。 七、項(xiàng)目最重要的特性 http://topic.csdn.net/t/20020923/10/1045180.html 我提一點(diǎn),根據(jù)客戶的水平采用不同的過程模型。 ?
??? ?例如: ?
?? ?1、客戶如果有一定的項(xiàng)目經(jīng)驗(yàn),對計(jì)算機(jī)比較了解,能給出比較明確的需求,可以采用瀑布模型。 ?
??? 2、客戶如果對計(jì)算機(jī)不是太了解,但有過類似項(xiàng)目的經(jīng)驗(yàn),并且能積極的給出需求。需求基本正確,可以采用演化式原型開發(fā)方法。 ?
? ? 3、如果客戶對計(jì)算機(jī)能為他做什么沒有概念的話。這時(shí)就比較適合用廢棄式原形開發(fā)方法。 ?
? ? 4、如果客戶的主要需求基本穩(wěn)定,但需求的增長速度和變動(dòng)頻率都比較高,這時(shí)就應(yīng)該用螺旋模型做開發(fā)過程模型。 八、HMM 隱馬爾科夫模型(hidden Markov model,縮寫為HMM)的提出最初是在語音處理領(lǐng)域。HMM是在Markov鏈的基礎(chǔ)上發(fā)展起來的一種統(tǒng)計(jì)模型。由于實(shí)際問題比Markov鏈模型所描述的更為復(fù)雜,因此在HMM中觀察到的事件與狀態(tài)并不是一一對應(yīng),而是與每個(gè)狀態(tài)的一組概率分布相聯(lián)系。它是一個(gè)雙重隨機(jī)過程,其中之一是Markov鏈,描述狀態(tài)的轉(zhuǎn)移;另一個(gè)描述每個(gè)狀態(tài)和觀察值之間的統(tǒng)計(jì)對應(yīng)關(guān)系。這樣,HMM以概率模型描述觀察值序列,具有很好的數(shù)學(xué)結(jié)構(gòu),能夠比較完整地表達(dá)觀察值序列的特征。 ???評(píng)估問題:對于給定模型,求某個(gè)觀察值序列的概率p(σ|λ) ;?
???解碼問題:對于給定模型和觀察值序列,求可能性最大的狀態(tài)序列;?
???學(xué)習(xí)問題:對于給定的一個(gè)觀察值序列,調(diào)整參數(shù)λ,使得觀察值出現(xiàn)的概率p(σ|λ)最大。 ??? HMM的狀態(tài)是不確定或不可見的,只有通過觀測序列的隨機(jī)過程才能表現(xiàn)出來;觀察到的事件與狀態(tài)并不是一一對應(yīng),而是通過一組概率分布相聯(lián)系;HMM是一個(gè)雙重隨機(jī)過程。? 九、兩個(gè)有序數(shù)組求交集的C++實(shí)現(xiàn) #include <stdio.h>
#include <memory.h>
const int M = 5;
const int N = 6;
void intersect(int a[], int b[]) {
???? if ((a[M - 1] < b[0]) || (a[0] > b[N - 1]))
?????? ?return;
???? int n = M > N ? M: N;
???? int *p = new int[n];
???? memset(p, 0, n);
???? int i = 0;
???? int j = 0;
???? int k = 0;?
??? while (i < M && j < N) {
???????? if (a[i] < b[j])
????????????? i++;
???????? else if (a[i] > b[j])
???????????? j++;
???????? else {
??????????? p[k] = a[i];
?????????? while (a[++i] == p[k]);
?????????? while (a[++j] == p[k]);?
????????????k++;
??????? }
?? }
?? for (i = 0; i < k; i++)?
?????? printf("%4d", p[i]);
?? delete [] p;
}
void main() {
???? int a[M] = {1, 2, 2, 5, 7};
???? int b[N] = {2, 2, 2, 2, 2, 2};
???? intersect(a, b);
}
???? IPSec協(xié)議實(shí)際上是一套協(xié)議而不是一個(gè)單個(gè)的協(xié)議。 二、隧道技術(shù)(Tunneling)?
???? ?隧道技術(shù)的基本過程是在源局域網(wǎng)與公網(wǎng)的接口處將數(shù)據(jù)(可以是ISO 七層模型中的數(shù)據(jù)鏈路層或網(wǎng)絡(luò)層數(shù)據(jù))作為負(fù)載封裝在一種可以在公網(wǎng)上傳輸?shù)臄?shù)據(jù)格式中,在目的局域網(wǎng)與公網(wǎng)的接口處將數(shù)據(jù)解封裝,取出負(fù)載。被封裝的數(shù)據(jù)包在互聯(lián)網(wǎng)上傳遞時(shí)所經(jīng)過的邏輯路徑被稱為“隧道”。
要使數(shù)據(jù)順利地被封裝、傳送及解封裝,通信協(xié)議是保證的核心。目前VPN隧道協(xié)議主要有4種:點(diǎn)到點(diǎn)隧道協(xié)議PPTP、第二層隧道協(xié)議L2TP、網(wǎng)絡(luò)層隧道協(xié)議IPSec以及SOCKS v5協(xié)議。其中,PPTP和L2TP工作在數(shù)據(jù)鏈路層,IPSec工作在網(wǎng)絡(luò)層,SOCK v5工作在會(huì)話層。各協(xié)議工作在不同層次,我們應(yīng)該注意,不同的網(wǎng)絡(luò)環(huán)境適合不同的協(xié)議,在選擇VPN產(chǎn)品時(shí),應(yīng)該注意選擇。 三、SSL和HTTPS SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持;SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務(wù)主要有:認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變。 https是由Netscape開發(fā)并內(nèi)置于其瀏覽器中,用于對數(shù)據(jù)進(jìn)行壓縮和解壓操作,并返回網(wǎng)絡(luò)上傳送回的結(jié)果。HTTPS實(shí)際上應(yīng)用了Netscape的完全套接字層(SSL)作為HTTP應(yīng)用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進(jìn)行通信。)SSL使用40 位關(guān)鍵字作為RC4流加密算法,這對于商業(yè)信息的加密是合適的。HTTPS和SSL支持使用X.509數(shù)字認(rèn)證,如果需要的話用戶可以確認(rèn)發(fā)送者是誰。。https是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,https的安全基礎(chǔ)是SSL。 四、GnuPG ?????? 電子郵件和數(shù)據(jù)加密領(lǐng)域,PGP(Pretty Good Privacy)是最為有名的加密工具之一。從9.0版開始,PGP已經(jīng)發(fā)展成為個(gè)人計(jì)算機(jī)數(shù)據(jù)保護(hù)的一個(gè)全面的解決方案。你也不一定非要花上大價(jià)錢才能保護(hù)郵件內(nèi)容。GnuPG以實(shí)際行動(dòng)證實(shí)了它是開源軟件中最好的解決方式之一。它能與絕大多數(shù)電子郵件客戶程序結(jié)合,為其提供強(qiáng)大的加密技術(shù)。 ????? GnuPG進(jìn)行加密要通過叫作公共密鑰基礎(chǔ)設(shè)施(PKI)的簡單原理。每個(gè)GnuPG用戶都擁有由一個(gè)公共密鑰和一個(gè)私有密鑰組成的密鑰對。使用公共密鑰進(jìn)行加密的電子郵件只能用對應(yīng)的私有密鑰解碼。公共密鑰及其對應(yīng)的電子郵件地址集中儲(chǔ)存在GnuPG密鑰服務(wù)器上的數(shù)據(jù)庫中;私有密鑰只有它的主人才知道,且在每次使用時(shí)都必須輸入密碼。要想對一條信息進(jìn)行加密必須從密鑰服務(wù)器上獲得接收人的公共密鑰。 五、linux中怎么查找權(quán)限位為S的文件 ????? 兩種特殊的文件訪問權(quán)限分別是SUID(八進(jìn)制為4000)和SGID(八進(jìn)制為2000)。設(shè)置這兩種權(quán)限的文件,將使其它用戶在執(zhí)行它們時(shí)擁有所有者的權(quán)限。也就是說,如果一個(gè)設(shè)置為SUID的程序,即使是普通用戶使用也是作為root來運(yùn)行的。因此,SUID/SGID文件是安全的隱患。?
????? find / -type f -perm +6000 -ls | less
????? find / -type f -perm +6000 > Suid-Sgid.txt 六、軟件缺陷生命周期
????? 軟件缺陷是指系統(tǒng)或系統(tǒng)部件中那些導(dǎo)致系統(tǒng)或部件不能實(shí)現(xiàn)其功能的缺陷。軟件缺陷的起源:需求、構(gòu)架、設(shè)計(jì)、編碼、測試、用戶。對于每一個(gè)軟件缺陷都規(guī)定了6個(gè)生命狀態(tài):Open、Working、Verify、Cancel、Close、Defer,它們的基本定義是:
??????? Open態(tài)---缺陷初試狀態(tài),軟件測試員報(bào)告一個(gè)缺陷,缺陷生命周期開始;
??????? Working態(tài)---缺陷修改狀態(tài),程序員接收缺陷,正在修改中;
??????? Verify態(tài)---缺陷驗(yàn)證狀態(tài),程序員修改完畢,等待軟件測試員驗(yàn)證;
??????? Close態(tài)---缺陷關(guān)閉狀態(tài),軟件測試員確認(rèn)缺陷被改正,將缺陷關(guān)閉;
??????? Cancel態(tài)---缺陷刪除狀態(tài),軟件測試員確認(rèn)不是缺陷,將缺陷置為刪除狀態(tài) (不做物理刪除);
??????? Defer態(tài)---缺陷延期狀態(tài),管理者確認(rèn)缺陷需要延期修改或追蹤,將缺陷置為延期狀態(tài);
??????? 上述Open態(tài)、Working態(tài)、Verify態(tài),稱為缺陷的活動(dòng)態(tài);
??????? Close態(tài)、Cancel態(tài)、Defer態(tài),稱為缺陷的終結(jié)態(tài)。 七、項(xiàng)目最重要的特性 http://topic.csdn.net/t/20020923/10/1045180.html 我提一點(diǎn),根據(jù)客戶的水平采用不同的過程模型。 ?
??? ?例如: ?
?? ?1、客戶如果有一定的項(xiàng)目經(jīng)驗(yàn),對計(jì)算機(jī)比較了解,能給出比較明確的需求,可以采用瀑布模型。 ?
??? 2、客戶如果對計(jì)算機(jī)不是太了解,但有過類似項(xiàng)目的經(jīng)驗(yàn),并且能積極的給出需求。需求基本正確,可以采用演化式原型開發(fā)方法。 ?
? ? 3、如果客戶對計(jì)算機(jī)能為他做什么沒有概念的話。這時(shí)就比較適合用廢棄式原形開發(fā)方法。 ?
? ? 4、如果客戶的主要需求基本穩(wěn)定,但需求的增長速度和變動(dòng)頻率都比較高,這時(shí)就應(yīng)該用螺旋模型做開發(fā)過程模型。 八、HMM 隱馬爾科夫模型(hidden Markov model,縮寫為HMM)的提出最初是在語音處理領(lǐng)域。HMM是在Markov鏈的基礎(chǔ)上發(fā)展起來的一種統(tǒng)計(jì)模型。由于實(shí)際問題比Markov鏈模型所描述的更為復(fù)雜,因此在HMM中觀察到的事件與狀態(tài)并不是一一對應(yīng),而是與每個(gè)狀態(tài)的一組概率分布相聯(lián)系。它是一個(gè)雙重隨機(jī)過程,其中之一是Markov鏈,描述狀態(tài)的轉(zhuǎn)移;另一個(gè)描述每個(gè)狀態(tài)和觀察值之間的統(tǒng)計(jì)對應(yīng)關(guān)系。這樣,HMM以概率模型描述觀察值序列,具有很好的數(shù)學(xué)結(jié)構(gòu),能夠比較完整地表達(dá)觀察值序列的特征。 ???評(píng)估問題:對于給定模型,求某個(gè)觀察值序列的概率p(σ|λ) ;?
???解碼問題:對于給定模型和觀察值序列,求可能性最大的狀態(tài)序列;?
???學(xué)習(xí)問題:對于給定的一個(gè)觀察值序列,調(diào)整參數(shù)λ,使得觀察值出現(xiàn)的概率p(σ|λ)最大。 ??? HMM的狀態(tài)是不確定或不可見的,只有通過觀測序列的隨機(jī)過程才能表現(xiàn)出來;觀察到的事件與狀態(tài)并不是一一對應(yīng),而是通過一組概率分布相聯(lián)系;HMM是一個(gè)雙重隨機(jī)過程。? 九、兩個(gè)有序數(shù)組求交集的C++實(shí)現(xiàn) #include <stdio.h>
#include <memory.h>
const int M = 5;
const int N = 6;
void intersect(int a[], int b[]) {
???? if ((a[M - 1] < b[0]) || (a[0] > b[N - 1]))
?????? ?return;
???? int n = M > N ? M: N;
???? int *p = new int[n];
???? memset(p, 0, n);
???? int i = 0;
???? int j = 0;
???? int k = 0;?
??? while (i < M && j < N) {
???????? if (a[i] < b[j])
????????????? i++;
???????? else if (a[i] > b[j])
???????????? j++;
???????? else {
??????????? p[k] = a[i];
?????????? while (a[++i] == p[k]);
?????????? while (a[++j] == p[k]);?
????????????k++;
??????? }
?? }
?? for (i = 0; i < k; i++)?
?????? printf("%4d", p[i]);
?? delete [] p;
}
void main() {
???? int a[M] = {1, 2, 2, 5, 7};
???? int b[N] = {2, 2, 2, 2, 2, 2};
???? intersect(a, b);
}
總結(jié)
以上是生活随笔為你收集整理的阿里巴巴笔试(公共题 2008-10-10)学习篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UML介绍(2)—— 用例图(use c
- 下一篇: Istio架构详解