【測試工程師面試】 記錄XX銀行面試

LZ在一個18線小城市作測試,近來想走出本身的溫馨區,去作一點不同的測試工做。html

18線地區,測試工做並很少。最好的差很少就是LZ目前待着的公司了。遂決定去魔都闖蕩幾年,對一個在魔都無房無車無戶口的人來說,這意味着很累,然人無遠慮必有近憂。即便有一天你的城市通地鐵和高鐵了,來了一羣優質的互聯網公司,我除了離得近,有配得上的技能嘛。java


XX銀行面試
年前在BOSS直聘上投遞的簡歷,年後約面試。我要求先電話面試一輪再去。【這裏說一下有的公司招人職位要求和麪試要求徹底不一致,畢竟魔都裏的有些遠,不想浪費一次年假和本身的無奈,去驗證他們的jd和麪試內容。】電話裏瞭解到他們想招Java能力好一些的測試人員,之後的工做內容是自動化測試,而且開發一些測試平臺和加密解密系統。是我感興趣的部分...不敢十拿九穩,但想試一下。因而就約了週一10點面試。mysql

一面
提早一個小時到,問了問hr是否方便過去,HR讓我直接上去。我就拖着熱水袋,開心地乘電梯去了10樓。
HR將我領到會議室,填了我的信息表,調查表,一下子以後來了一個高個子瘦瘦的面試官。git

1. 用JAVA怎麼讀取文件中的內容?
Property p = new Property;
讀取輸入流獲取的內容
那要是多個文件,也用這個讀嗎?
LZ基礎太薄弱,想不出別的方法。
你有沒有想到這種讀文件方式的弊端?
LZ一臉茫然。。。【心更涼,白來了麼,虧我5點多就乘着大巴冒着雨趕過來,這種面試題徹底沒遇到過,工做中亦未遇到過。】面試

 

更新於20190302:spring

package com.example.utils;

import java.io.*;

public class ReadFile {

    public static String readToString(String fileName) {
        String encoding = "UTF-8";
        File file = new File(fileName);
        Long filelength = file.length();
        System.out.println(filelength);
        byte[] filecontent = new byte[filelength.intValue()];
        try {
            FileInputStream in = new FileInputStream(file);
            in.read(filecontent);
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            return new String(filecontent, encoding);
        } catch (UnsupportedEncodingException e) {
            System.err.println("The OS does not support " + encoding);
            e.printStackTrace();
            return null;
        }
    }


    public static void BufferedReaderFile(String filename) throws IOException {
        FileReader fileReader=new FileReader(filename);
        BufferedReader in = new BufferedReader(fileReader);
        String str;
        int a=0;
        while ((str = in.readLine()) != null) {
            a+=1;
            System.out.println("the " + a);
            System.out.println(str);
            }

    }

    public static void inputStreamFile(String filename) throws IOException {
        InputStream inputStream = new FileInputStream(filename);
/*
        int a = inputStream.read();
        String s=inputStream.toString();
        System.out.println(a);
        System.out.println(s);
*/

        byte[] b = new byte[200];//把全部的數據讀取到這個字節當中
        //聲明一個int存儲每次讀取到的數據
        int i = 0;
        //定義一個記錄索引的變量
        int index = 0;
        //循環讀取每一個數據
        while((i=inputStream.read())!=-1){//把讀取的數據放到i中
            b[index]=(byte) i;
            index++;
        }
        //把字節數組轉成字符串
        System.out.println(new String(b));
        //關閉流
        inputStream.close();
        }


    public static void main(String[] args) throws IOException {
        //表示磁盤路徑的兩種表示方式:一、\\   二、/
        String filecontent = readToString("aaa.txt");
        System.out.println(filecontent);


        System.out.println("========我也開始讀文件啦================");
        BufferedReaderFile("aaa.txt");


        System.out.println("========int是個什麼鬼================");
        inputStreamFile("aaa.txt");
    }

}

 

  

 

2.設計模式瞭解嗎?
飽漢模式,餓漢模式,工廠模式,spring mvc模式
不對。飽漢模式,餓漢模式不是設計模式,是單例模式中的。
哦,是的,我記錯了。
設計模式一共有22種左右。
嗯嗯。
你手寫個單例模式能夠嗎?
拿着筆,在本身剛填內容背面,手寫着,心中記着單例模式重點叫私有什麼來着,
private class a{}
又想着單例模式中飽漢餓漢的區別,哪種安全,還沒寫完,面試官就說:"我一看你寫的就知道你寫錯了"
不要緊,有些開發也不知道。只要你願意學,我就能夠教你。
【這是我聽到的能讓我堅持下繼續面試的話】
【面試官】我想招個開發能力強的人,我沒空去寫好比加密解密的代碼,須要別人來寫完。框架我都搭好了。sql

更新於20190302數據庫

 

 

3.說說大家的測試流程
咱們,巴拉巴拉,接到需求後,會有一個需求文檔,經過郵件的形式發給整個項目組,包括PM,開發,測試和支持。並約定一個接下來的時間,進行啓動大會kick off meeting
每一個人對需求文檔,提出本身的問題,好比與以往的需求,是否有衝突的地方。
好比需求實現的方式,是經過接口,仍是存儲過程,是經過用mq同步數據的方式,仍是代碼中跨數據庫,那是否同一個操做要實現跨數據庫的事務等等。
而後帶着這些問題,參加啓動大會,項目中的每一個人提出來,最後總結具體實現的方式,覆蓋的範圍。
假設是接口的話,會詳細到接口的字段,字段長度,必填性,字符類型等等,這邊主要是測試和開發,會在會議上定好哪些代碼中必定要校驗,不少狀況下,不定的細緻,接口校驗會漏掉,以爲頁面UI已經有了。
會議結束後,開發人員會將接口文檔發給項目中的每一個人。這個時候測試人員,要檢查接口文檔,檢查字符長度是否和DB中長度,是否有超過DB中長度;檢查異常中返回值和信息是否正確。檢查最終數據流相關的字段是否準確。
檢查正常的有複雜邏輯關係的,邏輯順序是否正確。
不正確,提出,正確,回覆郵件。以後,測試人員,編寫測試用例,發給項目中的人員進行評審。
以後,編寫case並構造入參數據,斷言,DB中檢驗,等等。
等開發提交代碼後,進行測試,有bug則提bug,以後再對所有case迴歸測試。balabala。。。json

4. 咱們這兒有個接口,有158個入參,其中有100個入參。對100個入參必填作校驗。
比咱們接口中參數要多不少,目前咱們有腳本,對少數的入參,只能填寫變量名,長度,斷言就能夠一次性走完異常測試場景。
大家100個入參,有些多,須要根據接口文檔動態生成測試腳本,包括測試用例描述,測試數據,測試結構斷言。
【面試官】個人想法是100個必填入參,用java代碼,依次判斷,就是100個循環,單獨測任何一個入參的必填;在隨機個數的參數,不填,驗證必填參數的異常。
我目前在開發測試平臺,建立一個對象,包含變量名稱,必填性,字符類型,字符長度,範圍好比是int型有的referrence表傳過來的只能1-10,一個接口中的入參,將是一個list,list中每一個對象,根據
必填這個屬性,生成一個list。
list中依次遍歷,每次少一個對象變量名稱,那測試用例依次生成未傳入某某變量,測試數據,其餘的變量和值依次拼接起來,map方式,map的key是字段名,value是自動生成的值,value須要在符合的長度內,值的範圍也必須在。
代碼都能實現。通常一個項目的請求體的格式一致的,好比如今經常使用的json格式,拼接一下key value,先後大括號,等等,最終測試數據也生成。
斷言部分同理,可生成。
這個平臺我在構思和開始設計表結構,實現方式,還未成功。關於你說的再隨意若干個字段不傳,我通常不會有這個樣的case。緣由是,java代碼中判斷入參不傳,有前後順序,你這個隨機不傳,斷言要怎麼寫。
仍是大家全部的必傳入參不全,返回信息是一樣的?
【面試官開始對我有好轉了】設計模式

5. 說到我上面的接口測試用例自動生成平臺,個人確開始在作。索性趁熱打鐵,我說了下我已經完成了項目
我本身用springboot寫了一個mini的bug管理平臺,都增長了些什麼功能呢? 登陸受權後,查看這個項目下,各個測試類型的bug。而且是基於咱們公司的狀況,
好比每次任務須要一個CR,沒有CR是不作的,CR下來了咱們公司還須要有任務編號,等等。說簡單了是CRUD,說到CRUD,數據處理層使用JDBCTemplate實現的,頁面用的Thymeleaf模板引擎。
還加了定時,根據bug中的更新時間,每15分鐘將更新時間距離當前時間小於等於15分鐘的bug信息,逐條發送給測試人員和開發人員。
這個和JIRA、bugtracker等不一樣,是個定時任務用來發郵件。
系統出來了以後,要一會兒錄入原來的bug,一條一條很不方便,我建立了一個jmx腳本,其實就是一個簡單的請求,以往測試人員會將測試用例,以excel大多這樣的形式保存在本地,腳本中只要填寫項目id等信息,可經過相似性能測試的方式,一次導入全部的bug,豐富bug系統,將以往工做中的bug所有呈如今一個平臺上了。

這以後又編寫了測試用例管理平臺,差很少的原理,這個時候數據處理改爲了mybatis,由於涉及的表更多了,用mybaits方便。咱們測試的內容有接口,有UI,有存儲過程,測試用例格式不太一致,全部測試任務一張表,而後以後具體的測試用例是根據測試類型,分別新增到對應的3張表。
balabala。。。後來也給你們提供了Jmeter建立的腳本,配置好項目名稱等信息後,可一次性導入以往保留在本地的全部測試用例。

6. springboot中mysql是自帶的,很方便?
不是。
mysql是自帶的?
不是,須要引入mysql驅動jar包依賴的。何況我開發的時候,本地鏈接的是mysql,後來導成jar包,不能用我本地數據庫,咱們公司用的sqlserver
我儘可能保證sql一致性,分頁部分沒法一致,就改一兩行代碼。

7. 有沒有bug?
有。【哈哈哈】
什麼bug?
小bug。bug郵件提醒部分,咱們公司的郵箱是outlook,outlook是什麼公司,微軟,打開後bug信息的具體描述,原本是textarea格式,應當是分行顯示的,可是沒有分行。
而後你用手機打開,手機通常是蘋果和安卓嘛,郵箱中打開是沒有問題的。
這個也不能算bug。模板引擎不能保持兼容全部的瀏覽器,不少UI方便的東西,開始拋棄IE,拋棄微軟了
對對對。
有別的bug嗎?
有,我本身知道,使用者暫時還不知道,我就暫未改。
什麼bug?
額,好比,展現全部bug頁面,既有多重查詢後,顯示符合條件的bug,bug頁面最右下角有分頁。
由於我分頁用的是get請求方法,而多重查詢用的是POST請求方法,目前在不輸如任何查詢條件的狀況下,分頁功能徹底OK
輸入查詢條件,無論一個或者多個,第一個ok,接下來查的是全部bug,再也不有查詢條件的限制啦。【呵呵】
爲何沒被發現?
bug倒序顯示,其次是查詢條件限制後,查出來bug較少。全部通常不被發現。查詢條件嘛,爲了精準查詢。

8. 咱們這邊的人員分配是xx個外包,其餘是JF,只有一我的是行編制,固然這我的不是我。
你若是進來,是JF,和我同樣,待趕上和行編制差很少,比外包要好一些。

9. 大家冒煙測試怎麼個流程?
額,好比接口測試,冒煙測試是指囊括原來的全部的功能都要正常對吧,額,咱們的開發將代碼提交到git上,經過Jenkins自動部署到服務器上的指定的中間件以後,重啓中間件,熱部署有時候總有問題。
中間件重啓以後,自動運行編寫好的自動化測試用例,用例包含正確的斷言驗證,DB數據驗證,異常場景的斷言驗證,以後會發出一封測試報告。測試報告所有經過,則代表OK;
【面試官】呵呵,據我瞭解,冒煙測試是針對修改項或者新增的功能所作的測試?
哦,那開發會有自測並子自測成功後,將轉測郵件發出,轉測郵件上寫着xx驗證什麼ok。
可是,若是開發轉測的功能,本次涉及到的自測了沒問題,可是影響到了以往的接口,我依然不會開始測試的。個人自動化測試腳本在呢。
【面試官】呵呵。

還沒輪到LZ提問,面試官說我去喊我領到來,走的時候順便說了句,你在我這邊是OK的,沒問題的。
我誠懇說了句謝謝。

 

 

 

二面
一下子進來了二面面試官。
1. 剛剛一面面了多久?
LZ看了下手機,40分鐘。
大家都面了什麼?
LZ開口就說,想到什麼說什麼。說得比較混亂。
那大家面的什麼呢?
LZ總結了下,JAVA,測試流程,作過的項目
面試官終於問別的了。

2. 自我介紹一下吧
balabala。。。
爲何要轉崗到測試?
巴拉巴拉,無非是離境數據管理條例,balabala
大家是營銷型公司?
balabala。。。。主要是經過。。。。
薅羊毛?
LZ一臉茫然。。後來才反應過來面試官是以爲咱們公司是個薅羊毛公司。替知名企業各個行業的Top10作精準數據營銷。

3. 說一說測試人員對數據庫的認識?
LZ聽不懂。。。
面試官復問
LZ答 要有數據庫讀的權限,產品一旦上線很長時間,每次修改,DB中數據會有一些不是咱們指望的那樣,好比姓名中可能存在全角字符,中英文還夾雜着數字
LZ繼續答,數據庫鏈接要注意數據庫的安全,用堡壘機或者citrics進行鏈接
【LZ搞不清楚面試官想問我什麼】

4. 大家須要寫ppt嗎?
不須要。做爲測試,幾乎不用寫。寫文檔卻是比較多。
【LZ也搞不清楚這個問題是想問什麼】

5. 你是否是有小孩了?
balabal...
你不是本地的,在本地有房嗎?
balabala...


6. 說說大家公司薅羊毛?
LZ應該用資本家就是賺取剩餘價值來懟這句話,惋惜沒有勇氣。
薅羊毛,黑產才一般薅咱們的羊毛呢?
【面試官願聞其詳的樣子】
我講了一個短信驗證碼攻擊的事件,在我隨筆中有分析過驗證碼的安全性和有效性,【短信的橫向轟炸和縱向轟炸】鏈接http://www.javashuo.com/article/p-ssogjqyz-w.html


7. 你簡歷上PMP證書是什麼?
項目管理
考了證書對你的工做有什麼用?
沒什麼用。。【LZ太任性了太2b了】
沒什麼用?
考以前是這麼管理的,考過以後也是這樣。【當時的我是怎麼了?】

說說你的薪資指望?

balabala

你目前多少?

balabal, 可是咱們公司福利很好,每一個季度有季度獎金,且一年有一個月的帶薪年假,15天的帶薪病假,還有出國旅遊。公積金繳納的是12%。天天有不限量的免費水果,還有股票獎勵等。


8.有沒有什麼問題想問個人了?
【該知道的,工做內容,須要的技能我都知道了,接下來也該問hr了】搖頭。
就沒有什麼想問個人?
我心抖,涼涼中。剛剛對於PMP的回答會影響我嗎?
面試官看了看,回答道:會。
我惆悵哀思中,想着要不要懇求一個重答的機會。
面試官說,會有影響,也是我本身問題問的很差。

 

後來二面面試官走了,叫來一面面試官。
沒有HR面,一面面試官送我走了,還問我面得怎樣,我語氣沉重,艱難地說還行。
一面面試官看來以爲沒有問題,來問我何時能到崗。
學位學歷是否是可查的?我說是的。

 

 

後來我就撐着傘,離開了,週一面的,週五也沒有收到任何通知。涼涼。

相關文章
相關標籤/搜索