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