測試人生 | 資深外包逆襲大廠測試開發:面試官的“歧視”表情深深刺

圖片

編者按:本文是霍格沃茲測試學院優秀學員 @TM20N 的分享,從“被歧視”的資深外包人員到“被認可”的 BAT 大廠測試開發,他的技術成長、心路歷程和職業發展忠告值得每位外包同學學習!

測試職業生涯

深陷外包測試的困境

在測試行業工作有 5 年多了,之前一直是在大廠做外包測試工作。外包測試的工作特點就是:一直跟業務深度綁定,在技術成長方面則提升緩慢。到了后期,就感覺總是在做重復的點點點工作,但無論業務還是個人職業發展都遇到瓶頸,無法突破。

其實本來計劃在 2020 過完年就換一份工作的,但由于遇到疫情影響,跳槽計劃就被耽擱了一段時間。在年中疫情開始有所緩解之后,就開始默默的投了一波簡歷。但基本上都是石沉大海,面試邀約寥寥無幾,這時候才清醒的認識到殘酷生活的真實面貌 —— 憑借自己目前的工作經歷和測試技能,出去找到更好的工作真的很難:

  • 一方面,現在好一點的公司招測試,技能要求基本都是測試開發,自己技術實力還有很大差距;
  • 另一方面,好一點的職位,大廠更優先看重內推的人,面試成功率比海投更高,而我正缺乏這樣的行業人脈;

幸運的是,這個時候看到了霍格沃茲測試學院的《Java 中高級測試開發名企定向培養計劃》介紹信息,當時看到課程內容信息一下子就吸引了我,另外還有內推 BAT 名企服務也讓我心花怒放。簡單咨詢之后,就毫不猶豫的報了名。

學院課程果然沒有讓我失望,有深度有廣度,涵蓋了大廠最主流的測試開發技術體系,內容豐富系統并且理論與實戰相結合。有很多之前聞所未聞的知識,讓我視野開闊并重新找到了學習的樂趣。

我最想分享的個人學習經驗:一定要跟著視頻練習,光看是沒用的,自己動手做一遍才能知道哪里有坑,只有解決了問題才能真正內化為自己的知識。雖然整個過程很有挑戰性,甚至是處于磕磕絆絆的狀態,但還好我一直堅持學完了整個課程。

圖片
圖片

上課會記錄電子筆記

從“被歧視”到“被認可”

在學習完霍格沃茲的全部課程之后,就開始尋求新的面試機會,學院也幫忙匹配內推合適的公司崗位。

雖然我的測試技術水平提升很大,整個人也自信了很多,但說實話,“外包測試”這個標簽在面試時或多或少都會面試官被歧視,甚至是不公正待遇,尤其是一些小公司。我能真切的感到面試官看到是外包測試背景,態度上會有一些細微的轉變,有的還會故意刁難。這也深深的刺痛了我,感覺自己的職業生涯都被外包耽誤了。

所以,在這奉勸大家一句:沒有技術含量的外包測試真的能不去就不要去了,不得不去也不要做太久,盡快辭職,找更好的工作提升自己是正道!

再后來,又陸續面試了幾家大廠,靠著在學院學到的測試開發實戰技能,最終成功拿下某互聯網大廠測試開發崗位 Offer,薪資漲幅 70%,也實現測試職業生涯質的飛躍。

下面分享一下大廠面試中的一些印象深刻的高頻題目,以及我個人的解答,僅供大家參考。

大廠測試開發面試真題

業務基礎相關

  • 自我介紹
  • 測試流程
  • 項目介紹(結合自己的項目講清楚是做什么的)
  • 入職后如何開展工作
  • 在測試項目中開發的提效工具

算法題

  1. 計算相同字符個數,并按個數排序,返回前 k 個(多家大廠的高頻題目)

<pre style="margin: 10px 0px; padding: 0px; max-width: 100%; color: rgb(63, 63, 63); font-size: 14px; font-style: normal; font-weight: normal; letter-spacing: 0.476px; text-align: left; text-indent: 0px; text-transform: none; widows: 2; background-color: rgb(255, 255, 255); border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; box-sizing: border-box; overflow-wrap: break-word;">`public static List sort(String arrs[], int k){
Map<String, Integer> map = new HashMap<>();
for (String arr : arrs) {
map.put(arr, map.getOrDefault(map.get(arr), 1) + 1);
}

   List<Map.Entry<String, Integer>> lists = new ArrayList<>(map.entrySet());

//按map的value排序
Collections.sort(lists, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});

   List<String> list = new ArrayList<>();
   if (k > lists.size()){
       return list;
   }
   for (int i = 0 ; i < k ; i++){
       list.add("(" + lists.get(i).getKey() + "," + lists.get(i).getValue() + ")");
   }
   return list;

}` </pre>

  1. 返回 s2 在 s1 中的位置,要求不能使用 indexOf,并且輸入任何字符串都能返回位置,如果沒有,返回 0;

<pre style="margin: 10px 0px; padding: 0px; max-width: 100%; color: rgb(63, 63, 63); font-size: 14px; font-style: normal; font-weight: normal; letter-spacing: 0.476px; text-align: left; text-indent: 0px; text-transform: none; widows: 2; background-color: rgb(255, 255, 255); border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; box-sizing: border-box; overflow-wrap: break-word;">`public static void main(String[] args) {
String s1 = "www.taobao.com";
String s2 = "taobao";
Integer index = getPosition(s1, s2);
System.out.println(index);
}

public static Integer getPosition(String s1, String s2){
int n = 0 ;
if (s1.isEmpty() || s2.isEmpty()){
return n;
}
int l1 = s1.length();
int l2 = s2.length();
for(int i = 0; i < l1 - l2 + 1; i++){
String str = s1.substring(i, l2 + i) ;
if(str.equals(s2)){
return i;
}
}
return n;
}` </pre>

Java 相關題目

  1. 線程和進程的區別:
  • 一個進程可以包含多個線程
  • 線程是在進程的基礎上創建并使用,所以線程依賴進程
  • 不同進程間數據很難共享,同一進程下不同線程間數據很易共享
  • 進程要比線程消耗更多的計算機資源
  • 線程啟動速度比進程快很多,使用多線程進行并發處理的時候,執行效率要高于進程
  1. List、Set、Map 區別:
  • List集合允許有重復數據,保存順序即其存儲順序
  • set保存的順序是無序的,且不能保存重復元素
  • map已key-value形式進行存在,為無序存儲,key,value可為null,key不可重復
  1. ArrayList 和 LinkedList 區別:
  • ArrayList 是數組實現的集合操作,LinkedList 是鏈表實現的集合操作;
  • 在使用 List 集合中的 get() 方法根據索引獲取數據時,ArrayList 的時間復雜度為 O(1)”,而 LinkedList 的時間復雜度為 O(n);
  • LinkedList 沒有提供初始化大??;ArrayList 使用時默認初始化大小長度為 10,在空間不足時,已 2 倍的形式進行擴容,如果保存大數據量的時候,會有垃圾的產生和性能的下降,這個時候可以使用 LinkedList 子類保存;
  1. Overloading 和 Override區別:

|

No.

|

區別

|

Overloading

|

Override

|
|

1

|

中文含義

|

重載

|

覆寫

|
|

2

|

概念

|

方法名稱相同,參數類型和個數不同

|

方法名稱、參數的類型及個數、返回值相同

|
|

3

|

權限

|

沒有權限限制

|

被覆寫的方法不能擁有更嚴格的控制權限

|
|

4

|

范圍

|

發生在一個類中

|

發生在繼承關系類中

|

  1. 抽象類和接口區別:

|

No

|

區別

|

抽象類

|

接口

|
|

1

|

定義

|

abstract class 接口類名稱{}

|

Interface 接口名稱{}

|
|

2

|

組成

|

構造、普通方法、靜態方法、全局常量、普通成員、static方法

|

抽象方法、全局常量、普通方法、static方法

|
|

3

|

權限

|

可以使用各種權限

|

只能使用public

|
|

4

|

子類使用

|

子類通過extends可以繼承一個抽象類

|

子類使用implements可以實現多個接口

|
|

5

|

兩者關系

|

抽象類可以實現若干個接口

|

接口不允許繼承抽象類,但是允許繼承多個父接口

|
|

6

|

使用

|

  • 抽象類或接口必須定義子類;

  • 子類一定要覆寫抽象類或接口中的全部抽象方法;

  • 通過子類的向上轉型實現抽象類或接口對象實例化;

|

  1. Spring boot 常用注解:
  • @RestController
  • @RequestMapping("")
  • @GetMapping("")
  • @PostMapping("")
  • @Autowired
  • @Service
  • @RequestParam
  • @RequestBody
  • 手寫 Spring 實現過程
  1. 數據庫:
  • 增、刪、改、查、連表查詢
  • 基礎必須要會(緩存、索引了解的不多,沒答上來)
  • 查詢每門課程成績都大于60分學生(使用一條語句)

<pre style="margin: 10px 0px; padding: 0px; max-width: 100%; color: rgb(63, 63, 63); font-size: 14px; font-style: normal; font-weight: normal; letter-spacing: 0.476px; text-align: left; text-indent: 0px; text-transform: none; widows: 2; background-color: rgb(255, 255, 255); border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; box-sizing: border-box; overflow-wrap: break-word;">select name from 表 group by name having min(成績)>=60 </pre>

Liunx 相關

  • 三劍客:grep(最常考)、awk、sed(這里不列舉了)

Selenium 相關

  • 元素的定位方法
  • id、name、xpath

PageObject 封裝的思想

  • 只封裝重要功能
  • 封裝細節,只對外提供方法
  • 操作細節與斷言不要混用

什么樣的項目適合做 UI 自動化測試?

  • 項目穩定,不會頻繁變更
  • 定期構建,比較頻繁的回歸驗證
  • UI 界面穩定,變動少
  • 項目進度壓力不大,維護周期長

總結

最后,真的非常感謝霍格沃茲測試學院,為我們提供了一套完整的測試開發技術體系精品課程,也感謝各位老師的講解和答疑,也祝各位同學能夠學有所成。祝大家在新的一年,所求皆所愿,所行化坦途!

(文章來源于霍格沃茲測試學院)

更多技術文章可點擊http://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/3822

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容