測試開發面試問題匯總


  1.背景
  先說一下自己的背景,本人中南大學就讀,計算機專業,現已拿字節、 騰訊測開崗位實習offer、盛大java研發崗位實習offer,阿里交叉面五面掛。自己主要的 技術棧為:java,會使用Spring/SpringMVC/mybatis/Spring Sercurity開發框架,mysql數據庫,了解常用的數據結構和算法,了解基本的計算機網絡和 操作系統知識,會使用簡單的linux命令,了解c/c++。實習經歷為深信服技術服務崗,中國聯通銷售崗。自學儲備:java核心技術上下卷,ssm框架課程,mysql必知必會。
   2.面試知識覆蓋
  盛大:java基礎知識(重點)、 數據庫、操作系統
  騰訊:數據庫相關(重點), 測試知識相關,linux知識
  阿里:java知識(超級重點),數據庫,計算機網絡,操作系統等等
  字節:算法知識(每一面都有算法題,需要現場手撕,大部分與字符串相關),測試知識,java知識,操作系統知識
  當然每一家幾乎都會問到實習經歷和項目相關。整體難度 :阿里>字節>騰訊>盛大。阿里輪次6輪(java1輪+測開5輪),字節(4輪j技術+hr),騰訊(3輪技術+hr),盛大(2輪技術+hr)。
  阿里:java一面、測開一面、測開二面主管、測開三面老板、測開四面交叉、測開五面交叉(因為測開四面表現不理想,所以補面交叉,但還是掛了)
  字節:測開一面、測開二面(一二面是連在一起得)、測開三面、測開四面、測開五面hr(我也不知道為啥我五面,一般都是三面應該是中間轉部門了)
  以下都是 面試過程遇到的一些問題:
   2.1java知識
  1)基本數據類型的所占字節
  2)常量池
  3)自動裝箱和拆箱
  4)反射與注解
  5)深拷貝和淺拷貝
  6)四種內部類
  7)jvm分區(重點)
  8)垃圾回收收集器
  9)full gc和minor gc
  10)類加載過程
  11)線程池(重點),線程池創建方法,參數表示的含義,提交任務的順序
  12)ThredLocal
  13)單例模式的線程安全手寫
  14)oom異常的排查
  15)理解繼承與多態
  16)多線程(重點):wait()和sleep()的區別、sychornized和lock的區別、 notify()和wait()底層實現,多線程和單線程的運用場景
  17)並行與並發的區別
  18)hashmap(最好看一看源碼,重點)
  19)CAS,AQS原理
  20)junit(一個 單元測試的工具)的原理,怎么實現的。
  21)用戶登陸狀態怎么保存。
   2.2Spring
  1)spring的事務傳播機制
  2)spring的啟動過程
  3)spring容器的原理
  4)springaop的底層原理
  5)@autowire和@Resource的區別
  6)springaop的中代理實現方式,不用代理技術怎么實現AOP。
   2.3數據庫
  1)ACID
  2)事務的隔離級別(重點)
  3)索引b+樹結構
  4)sql語句優化
  5)數據庫引擎比較(重點)
  6)數據庫怎么保證事務的acid性質
  7)左外連接和普通連接區別
  8)delete和trancate的區別
  9)什么時候全表查詢比索引快
  10)mysql怎么使用,越多越好嗎,一張表最多幾個索引
   2.4linux
  1)進程間通信ips比較(重點)
  2)網絡命令
   2.5操作系統
  1)進程與線程區別(重點)
  2)進程線程的幾種狀態及其轉換
  3)進程死鎖條件,死鎖處理方法
   2.6計算機網絡
  1)tcp和udp區別,tcp和http區別
  2)http狀態碼
  3)http過程
  4)流量控制,擁塞控制的方法和手段(重點)
  5)tcp三次握手,四次揮手,原因和過程(重點)
  6)網站訪問過程
   2.7測試場景
  1)秒殺場景的測試與實現
  2)抖音下滑功能的測試
  3)登陸功能的測試
   3.手撕代碼題
  做手撕代碼的時候可以先和面試官確定思路然后再動手寫,防止剛開始方向就錯了。
   3.1阿里:
  題1:
  評測題目1:使用兩個不同的線程將會共用一個 HelloWorld 實例。
  //其中一個線程將會調用 hello() 方法,另一個線程將會調用 word() 方法。
  //請設計修改程序,以確保 "HelloWorld" 被輸出 n 次。
  //示例 1:
  //輸入: n = 1
  //輸出: "HelloWorld"
  //解釋: 這里有兩個線程被異步啟動。其中一個調用 foo() 方法, 另一個調用 bar() 方法,"foobar" 將被輸出一次。
  //示例 2:
  //輸入: n = 2
  //輸出: "HelloWorldHelloWorld"
  //解釋: "HelloWorld" 將被輸出兩次。
  思路:信號量
  題2:
  評測題目2:含有 x + 1 個整數的數組 nums,其數字都在 1 到 x 之間(包括 1 和 x),假設只有一個重復的數字,請找出這個重復的數。
  //示例 1:
  //輸入: [1,3,4,2,2]   輸出: 2
  //示例 2:
  //輸入: [3,1,3,4,2]   輸出: 3
  //說明:
  //不能改變原來的數組(假設數組只讀)。
  //只能使用額外的 O(1) 的空間。
  //時間復雜度小於 O(n2) 。
  思路:二分
  題3:
  評測題目3實現一個單例模式
  思路:為保證線程安全,用synchornized或者靜態內部類,或者枚舉類實現
  題4:
  1.生成一個文件,大小不大於1G或行數不大於指定數,文件每行內容 為隨機long型正整數的字符串;
  2.讀取該文件,並對文件中的整數進行排序,並輸出一個文件;
  3. 要求代碼簡潔優雅,和效率優化
  思路:hash拆分,然后歸並
  題5:
  判斷一個樹是否為平衡樹
  思路:遞歸
  題6:
  中序遍歷一個樹,實現遞歸和非遞歸方法
  思路:遞歸:dfs,非遞歸:用棧存儲節點,先找最左邊,再判斷其是否是否有右節點巴拉巴拉,大家還是力扣上看思路吧,有原題。
  題7:
  模擬棧,能夠實現壓入,彈出,獲取當前棧的最大值的操作。
  思路:維護兩個鏈表,一個鏈表存儲元素,一個鏈表存儲截止至當前位置的最大元素,彈出一起彈出即可。
  如:
  鏈表1:1 2 1 3 1
  鏈表2:1 2 2 3 3
  題8:
  矩陣相乘,並優化。
  思路:優化稀疏矩陣 遇0時 記錄跳過
   3.2字節:
  題1:
  給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重復的三元組。
  nums = [-1, 0, 1, 2, -1, -4,4,5]
  注意:答案中不可以包含重復的三元組。
  思路:先求一個和數組,然后通過hashmap判斷是否有和的負值存在
  題2:
  判斷一個字符串是否符合ipv4地址,返回true或者false
  比如輸入“127.0.0.1”,返回true
  輸入"256.1.2.3",返回false
  思路:比較簡單,分四個部分判斷就行,可以注意一下優化,能提前判斷錯誤就直接返回不要進行太多的步驟。
  題3:
  3.將中文億級數字轉換為int,值范圍[0, 10^9]
  一千零二十四  => int
  Cases
  一千零二十四
  一億零九萬三千八百
  零
  思路:我是根據字符串的‘萬’和‘億’字符的位置進行分割,將字符串分割成三個部分,然后依次判斷,最后累加起來就行。
   3.3吉比特:
  題1:
  重寫string類中的indexof()
  思路:標志位
   3.4騰訊:
  題1:
  找數組中第一個等於或大於x的數
  思路:二分。
   4.心得
  不打無准備之戰!不打無准備之戰!不打無准備之戰!
  投遞簡歷乘早,越早機會越多
  面試之前最好猜一些面試官可能會問的問題,提前寫好自己的“標准答案”,心理默讀幾遍,
  注重簡歷,簡歷上寫了的東西自己心理一定要有底,簡歷就像是自己交給面試官的考卷,他拿這個考你,技術崗最好體現自己的技術棧,簡寫一些非技術的。
  保持良好的心態,面試不用慌,也不用太在乎結果,反正過了就賺了,沒過就總結就行。
  大廠不用慌,其實面大廠的人很少,怕投的人很多,放心大膽投就行,自我感覺大廠比一些小廠面試還要簡單一些。
  面試過程盡量引導面試官往自己熟悉的領域問,hr面最重要的是真誠。
   5.復習路線
  數據庫:《mysql必知必會》,所需時間兩天
  計算機知識:把java,計算機網絡,操作系統等等知識回顧一下,准備面試的過程每天都會看。


免責聲明!

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



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