【測試工程師面試】記錄自己的一次面試


10點剛到,先進行筆試,筆試的題目很基礎,涉及到linux,涉及到oracle數據庫,涉及編程基礎,涉及測試理論,但是你讀完題目和寫完也要是花時間的。我花了40分鍾左右的時間才寫完。。

 

Linux基礎

 

1. 查看a.txt文件中bbb字符串
grep 'bbb' a.txt

 

2. 改變a.txt的所屬者為Lisa
chown Lisa:Lisa a.txt
chown Lisa a.txt 【只讓改所屬者,沒讓改所屬組】

 

3.查看conrob進程的命令
ps -ef | grep conrob

 

4.vi命令下,向上移動光標,向下移動光標
上下左右 kjhl【這四個鍵盤很好記,右手習慣的幾個鍵,h最左右所以向左,l最右邊,jk是先下后上】

 

5.將文件a.txt排序生成b.txt
sort a.txt >b.txt

 

6. 不保存文件退出命令
末端模式下輸入q!【Esc : q!】

 


7. 查找當前目錄以及子目錄下文件后綴是xxx的文件
find ./ -name *.xxx

 

8. 顯示日期的命令
date

 


Oracle基礎
【oracle數據庫我好久沒有遇到了,查詢sql根據mysql和sqlserver寫的,也不敢太用別名,怕錯】

 

1.給a表創建聯合索引 name+bb+cc
create index ind_name on tablea(name,bb,cc)

 

2.賦予用戶alex update delete a表的權限
grant update,delete on tablea to alex

 

3.查看a表中的所有記錄且姓名不在b表中的
select * from tablea where name not in (select distinct name from tableb) 【我想了想加了個distinct在b表中】

 

4. 查詢b表中的唯一的卡號
select cardnum from tableb group by cardnum 【起初不小心加了distinct,然后想想把它給划了】

 

5. 查詢b表中幣種是RMB且地區是深圳的貸款總和
select sum(amount) from tableb where city = 'shenzhen' and bizhong='RMB'
【起初沒看到只要差RMB,還多此一舉,
select bizhong, sum(amount) from where city = 'shenzhen' group by bizhong, 也不知道后來有沒有多划掉】

 

6. 復制b表的結構到新表
create table tablec as select * from tableb where 1=2
【之前沒印象,用的mysql格式CREATE TABLE 新表 LIKE 舊表 】

 

7. 查詢b表中姓名和卡號,要求同一個卡號既有人民幣消費,又有美金消費
select name, cardnum from tableb group by name, cardnum having count(*) >=2
【我做這樣的題目有各種疑問,比如消費金額為0的記錄,算不算?雖然解決辦法很簡單,加上一個where amount> 0 即可,
但是proc測試多了,一眼瞄過,對各個字段就不免想多了,
我10點鍾才到,11點半吃飯,又怕做題太長,最終影響人家interviewer的情緒,也讓我。。。】

 

8.用一個select查詢表表中姓名和卡號,要求美金中顯示2條消費最大的記錄,rmb中顯示兩條最大的記錄
select name , cardnum ,rownum from tableb where bizhong = 'dollor' and rownum<=2
order by amount desc
union all
select name , cardnum ,rownum from tableb where bizhong = 'rmb' and rownum<=2
order by amount desc

 

編程基礎
1.java中==和equals的區別
==是表示值和內存地址完全一致
equals判斷值是否相等

詳細的判斷https://www.cnblogs.com/qianjinyan/p/10553414.html

2.一個java中能有多個類嗎?為什么?
一個.java源文件中可以有多個類嗎?(內部類除外)有什么條件? 
可以的 
但是只能有一個public類, 而且如果有public類的話,這個文件的名字要和這個類的名字一樣。
如果都沒有public類,名字可以不和這個類一樣。

 

3.將x/y/z 從大到小輸出
int[] a ={x,y,z}
for (int i=0;i<a.length()-1;i++){
for (int j=0;j<a.length()-1;j++){
if (a[j]<a[j+1])
temp =a[j];
a[j]=a[j+1];
a[j+1] = temp;
}}

 自己寫錯了,下面才是正確的。

 

 int[] array = {1,8,0,3,4,2};

    @Test
    public void Test02() {
        for(int i=0;i<array.length-1;i++){
            for (int j = 0; j < array.length - 1 - i; j++) {
                //后面的數大,往前放置,降序排列
            //if(array[j+1]>=array[j]){
                //后面的數小,往前放置,升序
                if(array[j+1]<array[j]){
                int temp = array[j+1];
                array[j+1] = array[j];
                array[j] = temp;

                    for(int a: array){
                        System.out.print(a + "  ");}

            }
             System.out.println("第"+i+"的時候");}

        }
            for(int a: array){
        System.out.println(a);}
    }


    @Test//利用Arrays中的Sort函數排序
    public void ArraysSort() {
        Arrays.sort(array); //默認升序排列
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }}

 

  

 

4. python2.1和python3.1的默認字符編碼?
'ascii'
'utf-8'
猜也能猜到,但我懶得寫。python的確不熟

 

5.python中分割aa_bb_cc,
s1="aa_bb_cc"
s1.split('_')

 

6.如何用python將整型1輸出為0001

 


測試的基礎
1. 軟件測試的意義
2. bug的生命周期
3. 常見的測試方法
4. 你常用的自動化測試工具?
接口用Jmeter和httpClient
UI用 selenium和macaca
5. 一個文本框,輸入6的字符,要求輸入的年份在199001到204912月,要求前四位是年,后兩位是月,請設計測試用例並說明

 

 

 

 

 寫完給HR打電話,之后直接一面。

面試的問題

1. 講一個具體的接口,你是怎么測試的,怎么實現自動化的?
針對http接口進行測試,使用Jmeter工具實現。
Jmter工具設計之初是用於做性能測試的,它在實現對各種接口的調用方面已經做的比較成熟,因此,本次直接使用Jmeter工具來完成對Http接口的測試。
一、開發接口測試案例的整體方案:
我們起初會得到一個CR文檔,CR文檔里列出里客戶此次的痛點和癢點,還有PM列出的解決方案。比如要開發什么接口,以達到什么目的。
這種接口是一次性使用,做活動用的,還是日常使用等等的說明。
第一步:CR文檔下來之后,我會分析出測試需求,大概知道會怎么實現,對對CR有疑問的地方,做下標記;等到下次全項目開會,提出疑問,確保測試、開發和PM對需求的理解是一致的。會議上也會闡述大概的實現方式,涉及的表,是否用觸發器,等等的問題。會議之后可以拿到開發提供的接口說明文檔;
第二步:從接口說明文檔中整理出接口測試案例,里面要包括詳細的入參和出參數據以及明確的格式和檢查點
第三步:和開發一起對接口測試案例進行評審。
第四步:結合開發庫,准備接口測試案例中的入參數據和出參數據,並整理成csv格式的文件。
第五步:結合接口測試案例文檔和csv格式的數據文檔,做接口測試案例的自動化案例開發。

 

對於大一點的公司,用Jmeter編寫自動化腳本,真的很low吧。我也覺得很low,但是不得不說完全夠用,還極其容易上手。

對數據處理靈活,斷言,數據落地,都可以查詢和驗證。

 

2. 端到端的測試你們做過嗎?

 

3. 性能測試關注點是什么?

我們通常認為的規定的指標是:

服務器資源使用情況,不管是中間件服務器, 還是DB服務器,從內存,到CPU,不超過70%

從響應的結果來看,錯誤率不超過1%,甚至要求錯誤率更低;基本上實踐當中,不超過0.1%;

平均響應時間不超過3秒,視查詢條件而定,有的要求是不超過2秒; 

90%的響應時間不超過3秒。

 

你們不看TPS嗎?TPS知道嗎?

也要看啊,我還沒講完呢。 每秒中的處理請求的數量啊~~

TPS是受木桶原理影響,要看每一處的配置的。【后悔沒多說點,抬頭對上interviewer的眼神,這個話題就完了】

 

3. 扯閑話部分:

你們公司的開發測試的比例是怎樣的?我們是 4:1? 

你們公司系統的中間件是什么?

 

性能測試中,你有進行性能調優嗎?

嗯,驗證過很多接口,有的定量需求,比如要求某個接口的TPS達到500. 如果第一次性能測試,能達到500,也就夠了,沒有下文了;但是這個是注冊接口,隨着時間推移,DB服務器資源CPU到內存都吃的越來越緊,發現TPS下降了,之后越來越低。

什么原因造成的?

DB服務器的原因。這個一個nosql數據庫,以前這個接口是能達到500TPS的,但是隨着微信綁定推出unionid后,需要增加新的字段,新的表;而這種DB對查詢條件需要加索引,要不然不支持查詢。

表中數據量越來越多,又有很多字段添加了索引,當數據量達到千萬級別之后,添加索引消耗DB的資源,也明顯感受到占用了時間。 導致接口查詢慢,新增也慢。

有別的調優嗎?

還有發現,若干個字段,因為沒有加索引,導致查詢接口TPS不高等問題;

項目中有用hibernate的,有時候定位比較難,因為sql都是hibernate拼接的。

 

4. 有沒有自己創新什么工具,用來提高效率的?

自己回答

 

5. oracle中分頁怎么實現的?

oracle很久沒用,打錯了,我回答的是跟mysql差不多吧,用limit的?

用limit?

后來發現用rownum

 

6. selenium在你們的測試過程中也用?還用嗎? 有沒有什么問題?瀏覽器兼容性問題能做到嗎?

 

 

差不多就這么多了,接下來到面試者問問題時間。

 

總體感覺就是, 自己就像一個AI,面試官問什么,自己回答什么,沒有做必要的延伸,沒有引入自己的話題。 

總體感覺就是面得不好。

我想說我也可以開發自動化測試平台,只是還不太成熟。因為都是一個人做,時間和能力都有限,不知道用什么技術,架構,要增加什么。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM