201709貓眼測試開發校招面經
一面
1. 自我介紹
2. 計算機網路
a) 輸入url,到瀏覽器展示內容的過程,用到的協議
i. http,dns,tcp,arp
b) 三次握手
3. 作業系統
a) 執行緒狀態轉換
b) 程序狀態轉換
c) 程序執行緒區別
i. 程序:資源排程的最小單位,執行緒:CPU排程的最小單位
ii. 執行緒是程序的實體,一個程序可以有多個執行緒,多個執行緒共享同一個地址空間,
iii. 多程序比多執行緒更健壯
4. 專案
a) 介紹Jenkins,用法:
i. 基於Java開發的一種持續整合工具,用於監控持續重複的工作。
ii. 持續、自動地構建/測試軟體專案。
iii. 監控一些定時執行的任務。
b) JMeter效能測試關注的指標,監控伺服器關注的指標
i. RT+TPS+VU
ii. CPU+memory+load
5. 測試相關
a) 你是怎麼判斷哪些模組需要單元測試,哪些不需要的?邏輯比較複雜,有很多if else判斷
b) 手機APP的功能測試你是怎麼做的?沒做過app測自動化測試,只做過手工測試,扯了點登入頁面怎麼測試,有哪些測試點。sql注入,斷網聯網,安全性
6. 資料庫
a) sql。有一張表示英語口語練習每個學員的學時的表table1,欄位有 studentid name(可重複) grade(年級) hours。找出那些學時高於他們同一年級的平均學時的學生
i. select studentid,name,grade
ii. from table1
iii. group by grade
iv. having hours>AVGE(hours)
b) 儲存過程及其優點
i. 一串已經編譯過的sql語句,執行起來快
ii. 遮蔽底層細節,更安全
iii. 可重複利用,減少資料庫開發人員的工作量
iv. 返回錯誤資訊
7. Java
a) 過載和重寫的區別。
i. 過載:父子類/同類。名同參異返回*
ii. 重寫:父子類。名同參同返回同
b) equals和==的區別
i. equals比較內容
ii. ==比較地址
8. 一根不均勻的繩子,燒完需要1個小時,如何計時半個時間?如何計時1個小時15分鐘?
a) 兩頭同時燒
b) 先同時燒兩根,一根從兩頭燒完,得30分鐘,一根從一頭燒30分鐘後點燃另一頭,燒完需要15分鐘,一共得45分鐘。再開始燒一根,從兩頭燒,燒完得30分鐘。一共1小時15分鐘。
9. 寫程式碼
a) Java佇列,出隊,入隊
b) 如何測試你的程式
二面
1. 自我介紹
2. MyBatis框架介紹
a) MVC
b) 介面層:資料庫互動
i. 使用傳統的MyBatis提供的API。傳遞Statement Id 和查詢引數給 SqlSession 物件,使用 SqlSession物件完成和資料庫的互動。這種方式固然很簡單和實用,但是它不符合面嚮物件語言的概念和麵向介面程式設計的程式設計習慣。
ii. 使用Mapper介面。MyBatis 將配置檔案中的每一個mapper 節點抽象為一個 Mapper 介面,而這個介面中宣告的方法和跟mapper 節點中的select|update|delete|insert節點項對應,即select|update|delete|insert節點的id值為Mapper 介面中的方法名稱,parameterType 值表示Mapper 對應方法的入參型別,而resultMap 值則對應了Mapper 介面表示的返回值型別或者返回結果集的元素型別。底層還是通過SqlSession.select(“statementId”,parameterObject);傳統的API來實現的,但是能保證是面向介面程式設計的。
c) 資料處理層
d) 基礎支援層
3. 實習寫的介面型別,用的協議
a) restful api
b) soap api
4. url的組成部分
a) 協議
b) 域名
c) 埠號
d) 路徑
e) 引數
5. MySQL的儲存引擎,區別
a) InnoDB
b) MyIASM(預設)
c) MyIASM不支援事務,而InnoDB支援事務
d) MyIASM支援表鎖,而InnoDB支援行鎖
e) MyIASM不支援外來鍵,InnoDB支援外來鍵
f) MyIASM支援全文型別索引,而InnoDB不支援全文索引
g) MyIASM相對簡單,效率上要優於InnoDB,小型應用可以考慮使用MyIASM
h) MyIASM索引是非聚簇索引,索引和資料在兩個檔案,InnoDB是聚簇索引,索引和資料在同一個檔案。
6. 隔離機制,MySQL的預設隔離機制
a) read commit
b) read uncommit
c) repeatable read
d) serializable
e) MySQL預設的隔離機制 repeatable read
7. 常用排序演算法穩定和不穩定分類,什麼叫不穩定
8. 怎麼做的介面測試,如何判斷該介面是否正確
a) 手動:工具postman soapUI,填入引數,請求頭,介面地址
b) 返回狀態碼,response裡的資料是否正確,資料庫是否有成功執行
9. 介面測試引數的格式
a) restful api:json
b) soap api:xml
10. get/post的區別
a) 傳遞引數的格式不同,get:寫在url裡面,post:資料體裡面
b) 安全性不同,get不安全,post更安全
c) 引數的長度不同,get有限制,post沒有限制,其實http協議對get是沒有限制的,因為瀏覽器對url的長度有限制,所以才會限制
d) 伺服器端獲取引數的方式不同
11. http狀態碼
a) 504:Gateway Time-out 充當閘道器或代理的伺服器,未及時從遠端伺服器獲取請求
b) 503:Service Unavailable 超載或系統維護,伺服器暫時的無法處理客戶端的請求
c) 502:Bad Gateway充當閘道器或代理的伺服器,從遠端伺服器接收到了一個無效的請求
12. 如何實現多執行緒
a) 通過實現 Runnable 介面;
b) 通過繼承 Thread 類本身;
c) 通過 Callable 和 Future 建立執行緒。
13. Java JS Python區別
a) JS 解釋型語言,Java編譯型語言
b) JS弱型別,Java強型別
c) Java面向物件,JS基於物件
d) Java和JS程式碼風格不一致
e) Python & JS
i. 相同點:Python和Javascript都是指令碼語言,都需要直譯器來執行,都是動態型別,都支援自動記憶體管理,都可以呼叫eval()來執行指令碼等等指令碼語言所共有的特性。
ii. 程式設計正規化不同:Javascript的面向物件是基於原型(prototype)的。Python基於類(class)的繼承,並天然的支援多型。
iii. 執行緒不同:JS單執行緒,Python支援多執行緒(通過Thread)
iv. 應用場景:JS客戶端程式設計,Python Web開發
v. 資料型別不同:Javascript:object、string、boolean、number、null和undefined
vi. Python中一切均為物件,像module、function、class等等都是。五個內建的簡單資料型別bool、int、long、float和complex,另外還有容器型別,程式碼型別,內部型別等等
14. 判斷兩棵二叉樹相等,寫程式碼
15. 智力題:52張牌裡,A 2 3 45 6 7 8 9 10 J Q K 小王 大王,隨機抽5張組成一個順子的概率,大王和小王可以替換成任意數字,順子對花色沒有要求。(4^4*(C5 2)/2*9)/C5 52
16. 測試atm機的取款功能
三面:Leader面,遇到問題怎麼解決,平時看什麼書等
四面:HR面