阿里-測試開發(fā)面經(jīng)(十三)
點擊藍字關注我們,獲取更多面經(jīng)



一臺電梯:
1、功能測試:
(1)按鈕功能,開門(運行中按開門鍵不開門),關門,電梯內(nèi)按鈕功能(電梯按鍵在按下時是否點亮,按錯樓層是否可以取消);
(2)上升,下降(每一層申請是否有效,是否可以正常停靠),超載時是否會忽略其它樓層的上行和下行申請,電梯的兩邊按鈕是否都可以使用;
(3) 電梯內(nèi)電話、燈光等
2、性能測試:反應時間、關門時間、速度(是否造成人體不適)
3、壓力測試:超載,碰撞電梯壁
4、安全測試:
(1)進入電梯喊話,外面是否聽到,撥打手機是否有信號;
(2)停電(不會墜落。電梯門可以通過外力打開,緊急電話可用),報警裝置(超載),通風狀況;
(3) 停靠位置,有人扒門(不會強制關門),若有異物阻礙,會停在當前樓層;
(4) 監(jiān)控裝置
5、UI測試:標識的承重和人數(shù),僅提供可到達樓層的按鈕,美觀程度,光滑程度、形狀
6、可用性:按鍵高度、操作是否方便
7、穩(wěn)定性:長時間運行情況,
兩臺電梯聯(lián)動:
除上述功能外,與另外一部電梯是否協(xié)作良好(一部電梯故障不影響另一部):
(1)2部均空閑時,采取就近原則
(2)有一部運行時,以同行方向且順路電梯優(yōu)先運行,否則安排空閑電梯
(3) 2部均運行時,以方向同行且順路的優(yōu)先運行
(4) 電梯在上行或下行時若滿載,遇到有人等待電梯,是否停靠
例如,(2)電梯本來在一樓,若有人按18樓,上到5樓時,有人按10樓,是否會在10層停下


棧、隊列是一種特殊(操作受限)的線性表
區(qū)別:
僅在于運算規(guī)則不同,鏈表和數(shù)組是常用的兩種數(shù)據(jù)存儲結構,都能用來保存特定類型的數(shù)據(jù)。兩者存在著一些差異:
占用的內(nèi)存空間
鏈表存放的內(nèi)存空間可以是連續(xù)的,也可以是不連續(xù)的,數(shù)組則是連續(xù)的一段內(nèi)存空間。一般情況下存放相同多的數(shù)據(jù)數(shù)組占用較小的內(nèi)存,而鏈表還需要存放其前驅和后繼的空間。
長度的可變性
鏈表的長度是按實際需要可以伸縮的,而數(shù)組的長度是在定義時要給定的,如果存放的數(shù)據(jù)個數(shù)超過了數(shù)組的初始大小,則會出現(xiàn)溢出現(xiàn)象。
對數(shù)據(jù)的訪問
鏈表方便數(shù)據(jù)的移動而訪問數(shù)據(jù)比較麻煩;數(shù)組訪問數(shù)據(jù)很快捷而移動數(shù)據(jù)比較麻煩
鏈表和數(shù)組的差異決定了它們的不同使用場景,如果需要很多對數(shù)據(jù)的訪問,則適合使用數(shù)組;如果需要對數(shù)據(jù)進行很多移位操作,則設和使用鏈表。
鏈表
邏輯結構:一對一
存儲結構:順序表、鏈表
運算規(guī)則:隨機、順序存取
棧
邏輯結構:一對一
存儲結構:順序棧、鏈棧
運算規(guī)則:后進先出
隊列
邏輯結構:一對一
存儲結構:順序隊、鏈隊
運算規(guī)則:先進先出


問題描述
假設你有一個數(shù)組,其中第i 個元素是第i天給定股票的價格。設計算法以找到最大利潤。你可以根據(jù)需要完成盡可能多的交易(即,多次買入并賣出一股股票)。
注意:您不能同時進行多筆交易(即,您必須在再次購買之前賣出股票)
貪心算法
什么是貪心算法?
顧名思義,貪心算法總是做出在當前看來是最好的選擇。也就是說,貪心算法并不從整體最優(yōu)上加以考慮,所做的選擇只是在某種意義上的局部最優(yōu)解。當然,我們希望貪心算法得到的最終結果也是整體最優(yōu)的。
貪心算法的性質
所求問題的整體最優(yōu)解可以通過一系列局部最優(yōu)解的選擇,即貪心選擇來達到。
問題分析
假如給定以下一組股票價格:2,8,1,6,3,9。
判斷第一天是否買入,可以看第二天股票價格是否高于第一天的買入價格,若高,則買入并第二天賣出,否則不買。

可知獲得的最大利潤為17。
代碼實現(xiàn)
以下為完整代碼:
using namespace std;int MaxProfit(vector<int>&profit,int n){int max=0;for (int i=0;i<n-1;i++)if (profit[i]<profit[i + 1]) //每兩天相比較判斷是否買入賣出max+=profit[i+1]-profit[i];return max;}int main(){int n;scanf("%d",&n);vector<int> nums; //定義向量用來存儲股票價格int x;for(int i=0;i<n;i++){scanf("%d",&x);nums.push_back(x);}int a=MaxProfit(nums,n);cout<<"獲得的最大利潤為:";cout<<a<<endl;return 0;}


1、連接方面區(qū)別
TCP面向連接(如打電話要先撥號建立連接)。
UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。
2、安全方面的區(qū)別
TCP提供可靠的服務,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達。
UDP盡最大努力交付,即不保證可靠交付。
3、傳輸效率的區(qū)別
TCP傳輸效率相對較低。
UDP傳輸效率高,適用于對高速傳輸和實時性有較高的通信或廣播通信。
4、連接對象數(shù)量的區(qū)別
TCP連接只能是點到點、一對一的。
UDP支持一對一,一對多,多對一和多對多的交互通信。


軟鏈接: 類似于windows的快捷方式,—>文本文件,但是包含了真實文件的地址
源文件刪除,則軟連接也刪除
軟鏈接可以放在任何文件系統(tǒng)
目錄可以創(chuàng)建軟連接 --> 和源文件不同的文件,因為軟連接目錄可以放在任何地方
命令:[root@localhost omc]# ln -s ftl/ ftl.soft (第一個參數(shù)表示源文件,inittab.soft表示快捷方式)
查看:[root@localhost omc]# readlink ftl.soft (目標文件不能事先存在,需要ln命令創(chuàng)建)
刪除軟連接::[root@localhost omc]# rm -f oldboy_soft_link<br><br>
硬鏈接:硬鏈接(Inode一致)與真實文件的大小和創(chuàng)建日期完全相同(相同inode號),類似于copy,同步更新。
通過inode索引鏈接,硬鏈接多個文件名指向同一個索引,相當于文件的入口,硬鏈接一個文件有多個入口,相當于文件備份
原理:通過命令ls –i ,發(fā)現(xiàn)硬鏈接文件和源文件的i結點數(shù)字相同,而內(nèi)核是根據(jù)文件的i結點來標識文件的,這兩個文件的i結點相同,所有被認為是一個文件,所有同時寫入和修改數(shù)據(jù)。
硬鏈接不能跨文件系統(tǒng),即不能跨分區(qū),類似于windows內(nèi)不能將C盤的硬鏈接放在D盤。
與拷貝區(qū)別:拷貝與真實文件的創(chuàng)建日期不同
硬鏈接屬于復制,源文件刪除不影響硬鏈接
當所有的硬鏈接和源文件被刪除之后,再放入新的數(shù)據(jù)占用此空間、磁盤檢測,刪除的數(shù)據(jù)會被回收
可以通過設置硬鏈接,防止文件被誤刪除
注意目錄不做硬鏈接
命令:ln /etc/inittab /test/inittab.hard
查看:ls -l /etc/inittab /test/inittab.hard
查看所有文件的inode:find / -type f | xargs ls -lhi | more
文件鏈接
文件鏈接的小結:
-1.ln 默認不帶參數(shù)到的情況下,創(chuàng)建硬鏈接, -s 表示創(chuàng)建軟連接
0.軟連接可以通過readlink 查看其指向
1.刪除軟連接對原文件和硬鏈接文件無影響
2.刪除硬鏈接對源文件和軟連接文件無影響
3.刪除原文件,對硬鏈接沒影響,但是會導致軟連接失效
4.同時刪除源文件,硬鏈接,會導致整個文件被刪除(沒有后臺進程調用的話)
5.硬件設備的拍照功能就是應用了硬鏈接的原理
6.硬鏈接和源文件有相同的inode,可以認為是同一個文件或者是同一個文件的多個入口
7.同時刪除硬鏈接以及源文件,整個文件才會被刪除
8.軟連接和源文件有不同的inode,是因為創(chuàng)建了2個不同的文件,相當于快捷方式,還有源文件的位置指向
9.軟連接是一個新文件,里面記錄了原文件的路徑,軟連接的名稱必須由ln創(chuàng)建,不能事先存在
更多面經(jīng)
掃描二維碼
獲取更多面經(jīng)
扶搖就業(yè)
