一直以來大大小小參與過不少面試,遇到過不少坑,但是沒來的及好好總結匯總下。現在把之前遇到的問題匯總下,希望以后自己能加深印象。
1、appium 怎么定位toast彈框
appium1.6以后回答需要升級u2進行定位。
2、什么是事務,知道事務提交、回滾
事務是並發控制單位,用戶定義的一個操作序列。這些操作要么都做,要么都不做,是不可分割的的工作單位。通過事務,sql server能將邏輯相關的一組操作綁定在一起,以便服務器保持數據的完整性,主要用於一些對操作過程的完整性比較高的程序。(事務的特性:原子性、一致性、隔離性、持久性)。
事務提交是提交事務的所有操作:具體來說就是將所有對數據庫的更新寫回到磁盤上的物理數據庫中,事務正常結束。
事務回滾是數據庫返回到事務開始的狀態;事務在運行過程中發生某種故障,事務不能繼續執行,系統將事務中對數據庫的所有已完成的更新操作全部撤銷,使數據回滾到事務開始時的狀態。
3、怎么進行數據庫優化
大致是有8種方法:(具體參考鏈接:https://www.cnblogs.com/luokakale/p/7242839.html)
a、選取最試用字段屬性
b、使用連接(join)代替子查詢
c、使用聯合(union)來代替手動創建的臨時表
d、使用事務
e、鎖定表
f、使用外鍵
g、使用索引
h、優化查詢語句
4、什么是分布式系統架構
分布式架構系統簡單的說是運行在多個處理器上的軟件架構設計。分布式系統是建立在網絡之上的軟件系統、正是因為軟件的特性,所以具有高度的內聚性和透明性。
5、linux中使用top什么命令可以查看系統詳細內存
top 按 c 查看顯示完整命令
6、python中列表和字典的區別,列表和元祖的區別
元祖(tuple):元祖常用小括號表示,即:(),元素加逗號,是元祖的標識。
列表(list):列表常用方括號表示,即:[],創建一個列表,只要把用逗號分隔的不同的數據項使用方括號括起來即可。
字典(dict):字典是由花括號{}來包含其數據的,花括號內包含鍵(key)和其對應的值(value),一對鍵和值成為一個項,鍵和值用冒號:隔開,項和項之間用逗號,隔開,空字典就是不包含任何項的字典,也可理解為空字典就是花括號內不包含任何內容,直接使用花括號{}表示
列表和字典的區別:字典的查找和插入的速度極快,不會隨着key值的增加而增加,需要占用大量的內存,內存浪費多
列表和元祖的區別:元祖比列表操作速度快,對數據不可更改、可用於字符串格式化中、可作為字典的key
7、數據庫中有使用過if等函數嗎?
if既可以作為表達式用,也可在存儲過程中作為流程控制語句使用(具體參考鏈接:https://blog.csdn.net/caidingnu/article/details/88772170)
8、什么是臟數據?
臟數據是在臨時更新(臟讀)中產生,比如事務A更新了某個數據項x,但是由於某種原因,事務A出現了問題,於是要把A回滾。但是回滾之前,另一個事務讀取了數據X的值(A更新后),A回滾了事務,數據項恢復了原值。事務B讀取的就是數據項X的就是一個“臨時”值,這就是臟數據。
9、什么是冪等性?
就是用戶對同一操作發起一次請求或者多次請求的結果是一致的。不會因為多次點擊二次產生副作用。簡單的例子,就是支付,用戶購買商品使用支付,支付扣款成功,但是返回結果的時候網絡異常,此事錢已經扣了,用戶再次點擊,此時會產生二次扣款,結果返回成功,用戶查詢余額返現多扣錢了。流水記錄變成了兩條、這就是冪等性。
10、我現在有個程序,發現在Windows上運行得很慢,怎么判別是程序存在問題還是軟硬件系統存在問題?
1、檢查系統是否有中毒的特征;
2、檢查軟件/硬件的配置是否符合軟件的推薦標准;
3、確認當前的系統是否是獨立,即沒有對外提供什么消耗CPU資源的服務;
4、如果是C/S或者B/S結構的軟件,需要檢查是不是因為與服務器的連接有問題,或者訪問有問題造成的;
5、在系統沒有任何負載的情況下,查看性能監視器,確認應用程序對CPU/內存的訪問情況
11、安卓四大組件
activity 通過Intent進行通信
service service用於在后台完成用戶指定的操作
Content provider 指定數據集提供給其他應用程序
Broadcast Receiver 對外部事件進行過濾
12、什么是多線程,
線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
13、linux中vim模式有
1、命令模式,2、編輯模式、3、末行模式
14、計算機網絡模型
七層模型(應用層、表示層、會話層、傳輸層、網絡層、數據鏈層、物理層)五層模型(應用層、傳輸層、網絡層、數據鏈層、物理層)
15、什么是子網掩碼
它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址划分成網絡地址和主機地址兩部分。
16、如果測試時間不夠,你會怎么辦?
測試目前主要是產品測試和項目測試。做自己公司的產品測試,如果碰到不能按原計划完成,本着為質量負責,一般都可以申請延期。
如果是做項目,迫於合同和客戶驗收的壓力,碰到不能按原計划完成的情況,就是項目風險了。而處理的方式基本都是“先測客戶比較關心的,比較常用的功能”,保證通過客戶驗收,拿到項目款。分析客戶驗收所關心的功能點(比如客戶最近幾天提過什么需求,肯定要測試,因為時間短,他肯定記得),分析系統最脆弱的地方,走通所有業務流程等。而客戶驗收時候,不關心和不可能想到得地方可以不測試(比如系統中很多同步功能)
17、性能指標有哪些?
注冊用戶數、在線用戶數、並發用戶數、請求響應時間、事務響應時間、每秒點擊數、吞吐率、業務成功率、tps(每秒事務處理數)、資源利用率,cpu、內存、帶寬等
18、什么是接口?
傳遞數據的通道就叫接口
19、測試的基本6大法則
功能性、可靠性、效率性、可移植性、可維護性、易用性
20、接口測試測哪些東西
a、通過性驗證
b、參數組合
c、接口安全
d、異常驗證
e、根據業務邏輯來設計測試用例
21、用fiddler抓包時怎么制造異常情況;
通過請求前打斷點,可以修改請求參數
22、 什么是mq,mq的特點是什么?
把要傳輸的數據放在隊列中保存消息的容器.
mq的特點是:異步、解耦、廣播、流控與銷峰
23、怎么保證軟件測試質量
測試人員需要做的工作
測試策略的設計: 質量是多維度的,功能測試、性能測試、兼容性測試等多種測試類型的結合
用例質量: 采用合適的用例方法、如何進行需求分析、用例評審
執行質量: 保證執行深度(界面、關聯模塊、數據庫、日志)與廣度(系統測試類型)
缺陷質量:bug評審,引入合適的bug流程
過程質量:合理的軟件測試流程,測試過程監控
24、android和ios系統測試的不同點
1、Android長按home鍵呼出應用列表和切換應用,然后右滑則終止應用;
2、多分辨率測試,Android端20多種,ios較少;
3、手機操作系統,Android較多,ios較少且不能降級,只能單向升級;新的ios系統中的資源庫不能完全兼容低版本中的ios系統中的應用,低版本ios系統中的應用調用了新的資源庫,會直接導致閃退(Crash);
4、操作習慣:Android,Back鍵是否被重寫,測試點擊Back鍵后的反饋是否正確;應用數據從內存移動到SD卡后能否正常運行等;
5、push測試:Android:點擊home鍵,程序后台運行時,此時接收到push,點擊后喚醒應用,此時是否可以正確跳轉;ios,點擊home鍵關閉程序和屏幕鎖屏的情況(紅點的顯示);
6、安裝卸載測試:Android的下載和安裝的平台和工具和渠道比較多,ios主要有appstore,iTunes和testflight下載;
7、升級測試:可以被升級的必要條件:新舊版本具有相同的簽名;新舊版本具有相同的包名;有一個標示符區分新舊版本(如版本號),對於Android若有內置的應用需檢查升級之后內置文件是否匹配(如內置的輸入法)
25、使用中間件,中間件的作用!
具體地說,中間件屏蔽了底層操作系統的復雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的復雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重復工作,從而大大減少了技術上的負擔。
26、什么是orm(對象關系映射)
解決面向對象與關系數據庫存在的互不匹配的現象技術,簡單說,orm是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。
27、使用什么命令實現查看app手機內存
adb shell dumpsys meminfo 包名(com.mbox.cn)
28、什么是ANR(applicaton not responding)
29、APP日志分析查找關鍵字 crash ANR Exception ERROR force closed
30、多線程:線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
31、unittest工作原理
使用testcase 進行單元測試,通過testsuit 裝載用例 使用testrunner執行用例,testresult查看用例執行結果。
32、給你的一個測試項目,你怎么開展測試工作
在拿到項目后,在熟悉需求、原型圖后不必急着去設計用例,而是先需思考下測試思路,從哪方面下手,有哪些地方需要覆蓋到,支持哪些平台,有哪些不同的常用場景,是否需要考慮到穩定性、性能等等,針對項目進行大概的測試規划,再根據大概的規划去逐個細化,最后形成用例,簡單來說就是:
1.明確測試任務
2.分析測試范圍
3.制定測試計划和測試用例。
33、什么是cdn?
cdn的全稱是 Content Delivery Network 即內容分發網絡,通俗的理解就網站加速,CPU均衡負載,可以解決跨運營商,跨地區,服務器負載能力過低,帶寬過少等帶來的網站打開速度慢等問題。
34、怎么在VI模式下刪除指定數據?
1.使用ctrl+v或者v命令切換到塊模式
2.然后選中需要刪除的塊
3.使用x命令進行刪除
35、linux文件替換指定內容
表示操作的是文件,``括起來的grep命令,表示將grep命令的的結果作為操作文件。
/yyyy/xxxx/表示查找yyyy並替換為xxxx,后面跟g表示一行中有多個yyyy的時候,都替換,而不是僅替換第一個
另外,如果不需要查找子目錄,僅需要在當前目錄替換,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt
36、怎么查看linux下面的端口號
netstat -anp |grep 端口號
37、進程、線程、協程的區別
1、一個程序至少有一個進程,一個進程至少有一個線程
2、線程的划分尺度小於進程(資源比進程少),使得多線程程序並發性高
3、進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大提高了程序的運行效率
4、線程不能獨立運行,必須依存於進程中
5、一個線程可以多個協程,一個進程也可以單獨擁有多個協程
6、線程進程都是同步機制,協程是異步機制
38、http協議與websocket協議的區別
http協議:每次都需要客戶端定時輪詢向服務器請求,然后服務器再向客戶端發送數據
websocket協議:允許服務端主動向客戶端推送數據,瀏覽器和服務器只需要完成一次握手,兩者之間就可以創建持久性的連接,並進行雙向數據傳輸
保持連接狀態:與http不同的是,websocket需要先創建連接,這就使得其成為一種有狀態的協議,之后通信時可以省略部分狀態信息。而http請求可能需要每個請求都攜帶狀態信息
39、 性能測試通常需要監控的指標包括:
1.服務器Linux(包括CPU、Memory、Load、I/O)。
2.數據庫:1.Mysql 2.Oracle(緩存命中、索引、單條SQL性能、數據庫[/url]線程數、數據池連接數)。
3.中間件:1.Jboss 2. Apache(包括線程數、連接數、日志)。
4.網絡: 吞吐量、吞吐率。
5.應用: jvm內存、日志、Full GC頻率。
6.監控工具(LoadRunner[/url]):用戶執行情況、場景狀態、事務響應時間、TPS等。
7.測試機資源:CPU、Memory、網絡、磁盤空間。
40、監控工具
性能測試通常采用下列工具進行監控:
1.Profiler。一個記錄log的類,阿里巴巴集團自主開發,嵌入到應用代碼中使用。
2.Jstat。監控java[/url]進程GC情況,判斷GC是否正常。
3.JConsole。監控java內存、java CPU使用率、線程執行情況等,需要在JVM參數中進行配置。
4.JMap。監控java程序是否有內存泄漏,需要配合eclipse插件或者MemoryAnalyzer來使用。
5.JProfiler。全面監控每個節點的CPU使用率、內存使用率、響應時間累計值、線程執行情況等,需要在JVM參數中進行配置。
6.Nmon。全面監控linux系統資源使用情況,包括CPU、內存、I/O等,可獨立於應用監控。
7.Valgrind。監控C/C++程序是否存在內存泄漏,基於linux環境。
8.Vmmap和ApplicationVerifier。監控C/C++程序是否存在內存泄漏,基於windows環境。
end:希望大家能補充答案