測試開發面試干貨
收集了各大公司的面試經驗,現整理出來,希望能給正在找工作的志同道合的小伙伴一些指引,本文會持續更新的哦。
1、 CPU 和 GPU的區別
一個是通用計算,一個是專用計算。
CPU主要負責操作系統和應用程序,GPU主要負責跟顯示相關的數據處理,GPU的活CPU一般都可以干,但是效率低下。CPU和GPU之所以大不相同,是由於其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理。這些都使得CPU的內部結構異常復雜。而GPU面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。
2、 推薦的算法有哪些
推薦應該說分為兩類:個性化推薦和非個性化推薦,“讓全局優秀的內容被大家看到”應該算是非個性化推薦,熱門榜單/最多觀看這類方法可以簡單解決這個問題;不同的人對於“好”的理解不一樣,換句話說也就是偏好不同,所以推薦新加入的好內容我認為是個性化推薦問題。
個性化推薦的兩個主要思想八個字概括之:物以類聚、人以群分。主要的方法及變種應該有很多,像協同過濾、基於內容的推薦、基於標簽的推薦等等。
3、 協同過濾是怎么實現的
http://blog.csdn.net/czp11210/article/details/51161541
4、 熟悉的Linux命令,查看磁盤空間的命令,如何找到一個文件中含有aaa 和 bbb和行
查看磁盤空間命令:df –lh
grep -rn "aaa"&& "bbb" *
* : 表示當前目錄所有文件,也可以是某個文件名
-r 是遞歸查找
-n 是顯示行號
-R 查找所有文件包含子目錄
-i 忽略大小寫
5、白盒和黑盒測試的方法有哪些
白盒測試:語句覆蓋、條件覆蓋、判定覆蓋、判定條件覆蓋、條件組合覆蓋
黑盒測試:等價划分法、邊界值法、因果圖法、猜錯法、隨機數法
6、如何測試一個三角形是否是一個等腰三角形,寫出測試用例
5、 三角形測試用例類別 |
||
輸入條件 |
有效等價類 |
無效等價類 |
是否是三角形 |
(A>0) (1) (B>0) (2) (C>0) (3) (A+B>C) (4) (B+C>A) (5) (C+A>B) (6) |
(A<=0) (7) (B<=0) (8) (C<=0) (9) (A+B<=C) (10) (B+C<=A) (11) (C+A<=B) (12) |
是否是等腰三角形 |
(A=B) (13) (B=C) (14) (C=A) (15) |
(A!=B)and(B!=C)and(C!=A) (16) |
是否是等腰直角三角形 |
(A=B)and(A2+B2=C2) (17) (B=C)and(B2+C2=A2) (18) (C=A)and(C2+A2=B2) (19) |
(A!=B)and(B!=C)and(C!=A) (20) |
是否是等邊三角形 |
(A=B)and(B=C)and(C=A) (21) |
(A!=B) (22) (B!=C) (23) (C!=A) (24) |
三角形測試用例:用最少的測試用例覆蓋所有的有效等價類,而無效等價類每個類型都要覆蓋到
序號 |
輸入[A,B,C] |
覆蓋等價類 |
輸出 |
1 |
[3,4,5] |
(1)(2)(3)(4)(5)(6) |
是三角形 |
2 |
[0,1,2] |
(7) |
非三角形 |
3 |
[1,0,2] |
(8) |
非三角形 |
4 |
[1,2,0] |
(9) |
非三角形 |
5 |
[1,2,3] |
(10) |
非三角形 |
6 |
[1,3,2] |
(11) |
非三角形 |
7 |
[3,1,2] |
(12) |
非三角形 |
8 |
[3,3,4] |
(1)(2)(3)(4)(5)(6)(13) |
等腰三角形 |
9 |
[3,4,4] |
(1)(2)(3)(4)(5)(6)(14) |
等腰三角形 |
10 |
[3,4,3] |
(1)(2)(3)(4)(5)(6)(15) |
等腰三角形 |
11 |
[2√2,2√2,4] |
(1)(2)(3)(4)(5)(6)(17) |
等腰直角三角形 |
12 |
[4,2√2,2√2] |
(1)(2)(3)(4)(5)(6)(18) |
等腰直角三角形 |
13 |
[2√2,4,2√2] |
(1)(2)(3)(4)(5)(6)(19) |
等腰直角三角形 |
14 |
[3,4,5] |
(1)(2)(3)(4)(5)(6)(16)(20)(22)(23)(24) |
是三角形 |
15 |
[3,3,3] |
(1)(2)(3)(4)(5)(6)(16)(21) |
等邊三角形 |
16 |
[,,,] |
無效等價類 |
錯誤提示 |
17 |
[-3,4,5] |
無效等價類 |
錯誤提示 |
18 |
[a,3,@] |
無效等價類 |
錯誤提示 |
19 |
[3,4] |
無效等價類 |
錯誤提示 |
7、排序的算法以及時間復雜度
8、對一個自動販賣機進行功能測試
按照功能測試的划分等價類來測試
有效的等價類有:
金額剛夠,順利出貨
金額超出,找零出貨
金額超出, 沒錢找零,出貨.
金額不足,進行提示,把貨幣退出
金額足夠,取消交易
假幣,不出
無效等價類:
投入金額,不出貨,不找零
投入金額,不出貨,退錢
金額超出,出貨,不找零
金額超出,不出貨,找零
金額不足,出貨,找零l
金額不足,出貨,不找零
金額不足,不出貨,不退款
金額剛夠,不出貨,退款
金額剛夠,出貨,找零
金額剛夠,不出貨,找零
不投金額,直接出貨
9、為什么選擇軟件測試這個崗位
現在的軟件行業日新月異,發展的如日中天,同行之間的競爭更是此起彼伏,稍有不慎就會面臨破產,其中產品的質量更是重中之重,出現一點點小問題就會導致用戶量驟減,由於我國的互聯網行業起步較晚,在質量把控這方面沒有國外做到到位,但我相信,軟件測試行業將會有很大的發展前景,我也能在這個領域一展我的抱負。
10、應聘軟件測試的優勢與劣勢
優勢:
1、 我有足夠的責任心
2、 有很好的學習能力
3、 適應新事物新環境很迅速
4、 有計算機相關理論基礎
劣勢:
1、 缺少社會經驗
2、 編程能力較弱
11、有50個紅球,50個藍球,如何放入兩個盒子中使得拿到紅球的概率最大
不管你怎么放,概率都是二分之一。
譬如,紅的全放一個箱子,那么只要你從倆個箱子中選擇這個箱子,就一定是紅球,為二分之一。
二,如果一個箱子放一半紅球一半籃球,那么你隨便抽一個箱子,都是二分之一的概率抽到紅球。
三,任意情況,如,箱子一有30個紅球,那么紅球的概率,為1/2*30/50+1/2*20/50,還是二分之一
12、有5個強盜分100枚金幣,從1號開始進行分配,必須有半數服從分配才通過,否則否則1被斃掉,由2號開始分,問1號要怎樣分才能使自己利益最大化
采用反推過來的算法:
5號表決時,形成的狀態是:
1得到0個寶石,死
2得到0個寶石,死
3得到0個寶石,死
4得到0個寶石,死
5得到100個寶石,活,同意
原因:
不用講了,能輪到5號表決當然他獨吞了
但是也會與題目違背了,因為前面幾個海盜都是傻瓜差不多
4號表決時,形成的狀態是:
1得到0個寶石,死
2得到0個寶石,死
3得到0個寶石,死
4得到100個寶石,活,同意
5得到0個寶石,活,不同意
原因:
這時只剩下二比一的情況,只要自己同意即可達到半數而通過表決,不存在生命危險
但是3號也不是白痴
3號表決時,形成的狀態是:
1得到0個寶石,死
2得到0個寶石,死
3得到99個寶石,活,同意
4得到0個寶石,活,不同意
5得到1個寶石,活,同意
輪到3號時,他只要給5號1個寶石就夠了
原因:
因為5號會意識到,一旦輪到4號時他就一個也得不到,現在能得到1個寶石已經是給了面子了
但2號也很聰明的,能否輪到他只是一種期待,來看看2號的情況
2號表決時,形成的狀態是:
1得到0個寶石,死
2得到99個寶石,活,同意
3得到0個寶石,活,不同意
4得到1個寶石,活,同意
5得到0個寶石,活,不同意
要是輪到此海盜他必會拿走99顆寶石,然后給4號1顆即可!
為什么? 原因是:
4號已經意識到,要是輪到3號表決時,他將一個也得不到,所以這時有點收獲,固然同意了
這時也考慮到:
3號不可巴結,會損失太多,因為如果只是單單給3號的話,他隨時都可以不同意而獲得表決權
5號也可巴結,但需要2顆寶石,不合算,因為5號也知道即使下一輪也是拿定一顆寶石的
1號:此海盜當然也聰明了
從上述看出,既然輪到2號的局勢已定,那他早已知道后面的海盜心里想什么了
也就是簡單的說,他們清楚認識到,輪到2號時,3號和5號得不到寶石!
那么這樣的話,事情就好辦多了,給他們一人一顆自然就搞定了!
所以,1海海盜毅然作出決定,分別給3號和5號各1顆寶石
最終結局的狀態是:
1得到98個寶石,活,同意
2得到 0個寶石,活,不同意
3得到 1個寶石,活,同意
4得到 0個寶石,活,不同意
5得到 1個寶石,活,同意
即:98,0,1,0,1 (達到1號利益最大化)
13、如果沒網,可能是什么原因造成的
一、使用的是有線網線
1、路由器數據堵塞,一般重啟路由可以解決;如果重啟仍不能解決,可能是運營商的問題了,及時電話咨詢;
2、自身電腦問題,連接有線網的情況,這種情況很少見;
二、連接的是無線網
1、路由器問題,重啟路由試試;也不排除線路問題;
2、無線接收器問題,看燈閃爍是否正常,可以嘗試拔隊,重新插上;
3、也可以嘗試把無線禁用,然后重新開無線網絡;
4、重新安裝無線網驅動試試;
14、怎樣測一張A4紙
1.紙張的質地,是否為紙張
2.紙張的品質,是草木、皮革。。。
3.紙張的類別,是否為白紙
4.紙張的功能,能否書寫,圖畫等
5.紙張的兼容性,水筆、油筆、鉛筆是都都能正常書寫
6.紙張的擴展性,折疊、拉伸
7.紙張的安全性,紙張的生產工藝是否安全,紙張有無有毒性物質
8.紙張的結構
9.紙張的性能:對各種筆的吸油性是否夠快
15、數據庫知識:姓名,班級、課程名、分數
1、求語文分數最高的學生
Select 姓名,max(分數)from 表名where 課程名=“語文”
2.求每個班語文成績最高的學生
16、三次握手,每次發送的內容都是什么
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。
補充:
完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:
未連接隊列
在三次握手協議中,服務器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處於SYN_RECV狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態。
17、關閉TCP連接:改進的三次握手
對於一個已經建立的連接,TCP使用改進的三次握手來釋放連接(使用一個帶有FIN附加標記的報文段)。TCP關閉連接的步驟如下:
第一步,當主機A的應用程序通知TCP數據已經發送完畢時,TCP向主機B發送一個帶有FIN附加標記的報文段(FIN表示英文finish)。
第二步,主機B收到這個FIN報文段之后,並不立即用FIN報文段回復主機A,而是先向主機A發送一個確認序號ACK,同時通知自己相應的應用程序:對方要求關閉連接(先發送ACK的目的是為了防止在這段時間內,對方重傳FIN報文段)。
第三步,主機B的應用程序告訴TCP:我要徹底的關閉連接,TCP向主機A送一個FIN報文段。
第四步,主機A收到這個FIN報文段后,向主機B發送一個ACK表示連接徹底釋放。
18、為什么要采用三次握手,兩次不行嗎?
保活計時器:
設想有這樣的情況:客戶端已主動與服務器建立了TCP連接,但后來客戶端的主機突然出現故障。
通常設為2小時。若2小時沒有收到客戶端的數據,服務器就發送一個探測報文段,以后則每隔75分鍾發送一次。若一連發送10個探測報文段后仍無客戶端的響應,服務器就認為客戶端出現了故障,接着就關閉這個連接。
19、為什么連接的時候是三次握手,關閉的時候卻是四次握手?
答:因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。
20、為什么TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?
答:雖然按道理,四個報文都發送完畢,我們可以直接進入CLOSE狀態了,但是我們必須假象網絡是不可靠的,有可以最后一個ACK丟失。所以TIME_WAIT狀態就是用來重發可能丟失的ACK報文。
21、微信發送消息功能的測試
1、功能測試
圖片、文字(大段文字)、小視頻、語音)是否發送順利,數據有沒有丟失、有沒有延遲,一個人發了100遍同樣的數據能否發送成功,群發功能
2、性能測試
並發度,響應時間,系統資源占用、壓力測試、兼容性測試(硬件兼容和軟件兼容)、還有就是考慮多端登錄消息的同步
22、main函數執行之前都發生了什么
23、fidler抓包原理
Fiddler是一款非常流行並且實用的http抓包工具,它的原理是在本機開啟了一個http的代理服務器,然后它會轉發所有的http請求和響應,因此,它比一般的firebug或者是chrome自帶的抓包工具要好用的多。不僅如此,它還可以支持請求重放等一些高級功能。顯然它是可以支持對手機應用進行http抓包的。
24、設計測試用例有哪些方法
黑盒測試:等價划分法、邊界值判定、因果圖、錯誤猜測
白盒測試:語句覆蓋、條件覆蓋、判定覆蓋、條件/判定覆蓋、條件組合覆蓋
25、Vim怎么刪除行
dd 刪除一整行
D d$ 刪除光標位置到本行結尾
d0 刪除光標位置到本行開頭
26、Linux怎么查看大文件,怎么實時查看文件
[root@getlnx01 u03]# find . -type f -size +800M -print0 | xargs -0 ls –l
27、性能測試有哪些
負載測試、壓力測試、疲勞性測試、容量測試
28、TCP的擁塞控制
29、http中的get和post請求的區別
1、GET請求,請求的數據會附加在URL之后,以?分割URL和傳輸數據,多個參數用&連接。URL的編碼格式采用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸。
POST請求:POST請求會把請求的數據放置在HTTP請求包的包體中。上面item=bandsaw就是實際的傳輸數據。因此,GET請求的數據會暴露在地址欄中,而POST請求則不會。
2、傳輸數據的大小
在HTTP規范中,沒有對URL的長度和傳輸的數據大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和服務器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制。
對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個服務器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。這里的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改服務器的數據。比如,在進行登錄操作,通過GET請求,用戶名和密碼都會暴露再URL上,因為登錄頁面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時的用戶名和密碼就很容易被他人拿到了。除此之外,GET請求提交的數據還可能會造成Cross-site request frogery攻擊
30、怎么確認post請求發送完畢
31、專利是第一作者么
不一定
32、loadrunner用來干了什么
做性能測試用的。測試軟件的性能、壓力、負載情況、服務器的響應時間,吞吐量、監控服務器、數據庫的性能指標。等等。總之很強大。