面試經(jīng) | 字節(jié)測開實習崗面試題分享

1、自我介紹
2、為什么投了字節(jié)?
公司聲譽:字節(jié)跳動是一家知名的科技公司,在互聯(lián)網(wǎng)行業(yè)享有很高的聲譽。
發(fā)展前景:字節(jié)跳動的業(yè)務涵蓋了多個領域,包括短視頻、資訊、教育等。這意味著您將有機會接觸到不同的產(chǎn)品和技術,拓寬自己的技能和視野。
團隊氛圍:字節(jié)跳動的團隊通常以年輕、活力和創(chuàng)新著稱。在這樣的環(huán)境中工作,將有機會與志同道合的同事共事,共同追求卓越。
學習機會:作為一家快速發(fā)展的公司,字節(jié)跳動為員工提供了豐富的學習和發(fā)展機會。
3、說一下對于測開崗位的理解
測試開發(fā)工程師是一種融合了開發(fā)角色和質量意識的崗位,要求測試人員兼具開發(fā)人員的技能和測試人員的思維。總的來說,測試開發(fā)工程師的定位就是保障產(chǎn)品的質量和提高測試效率。
測試開發(fā)工程師需要具備以下技能:
熟悉編程語言,如Java、Python、C++等;
熟悉自動化測試框架,如Selenium、Appium等;
熟悉數(shù)據(jù)庫操作,如MySQL、Oracle等;
熟悉網(wǎng)絡協(xié)議,如HTTP、TCP/IP等;
熟悉Linux操作系統(tǒng)。
4、介紹一下實習的項目
5、對于該項目的質量建設,你做了哪些工作?
明確質量標準:在項目開始階段,與團隊成員討論并確定項目的質量標準和期望。這有助于確保所有人都對項目的質量要求有共同的理解。
制定質量管理計劃:根據(jù)項目需求和質量標準,制定詳細的質量管理計劃。這應包括質量控制、質量保證和質量改進的策略和方法。
實施質量控制:通過定期檢查和測試,確保項目產(chǎn)出符合預期的質量標準。這可能包括代碼審查、單元測試、集成測試和系統(tǒng)測試等。
建立質量保證機制:為團隊提供培訓和支持,以確保他們具備足夠的技能和知識來保證項目的高質量。這可能包括技術培訓、最佳實踐分享和持續(xù)的溝通。
監(jiān)控項目進度和結果:定期評估項目的進度和結果,以確保項目按照計劃進行并達到預期的質量目標。如果發(fā)現(xiàn)問題或偏離計劃,及時采取措施進行調整。
持續(xù)改進:通過收集反饋和經(jīng)驗教訓,不斷優(yōu)化項目管理過程和工具,以提高項目的整體質量和效率。
總之,在項目質量建設過程中,關鍵是確保所有團隊成員都了解并遵循既定的質量標準和策略。通過有效的溝通、培訓和支持,可以確保項目的成功交付。
6、MySQL和Redis的使用場景?區(qū)別?
MySQL和Redis都是數(shù)據(jù)庫,但是它們的本質區(qū)別在于MySQL是關系型數(shù)據(jù)庫,而Redis是NoSQL數(shù)據(jù)庫。MySQL適用于大規(guī)模數(shù)據(jù)存儲和復雜查詢場景,例如電商、金融、物流等領域。而Redis適用于緩存、消息隊列、計數(shù)器等場景。
MySQL和Redis的區(qū)別主要有以下幾點:
數(shù)據(jù)類型:MySQL支持多種數(shù)據(jù)類型,而Redis只支持字符串、列表、集合和有序集合等基本數(shù)據(jù)類型。
本質區(qū)別:MySQL是關系型數(shù)據(jù)庫,而Redis是NoSQL數(shù)據(jù)庫。
事務處理:MySQL支持事務處理,而Redis不支持事務處理。
7、MySQL慢查詢排查(面試官好喜歡問這個,被問到好多次了)
MySQL慢查詢排查的方法有很多,以下是一些常用的方法:
開啟慢查詢日志:通過開啟慢查詢日志,可以記錄下執(zhí)行時間超過閾值的SQL語句,從而找到需要優(yōu)化的SQL語句。
分析查詢語句和執(zhí)行計劃:通過分析查詢語句和執(zhí)行計劃,可以找到SQL語句的瓶頸,從而進行優(yōu)化。
優(yōu)化查詢語句和表結構:通過優(yōu)化查詢語句和表結構,可以減少SQL語句的執(zhí)行時間,從而提高MySQL的性能。
使用緩存:通過使用緩存,可以將經(jīng)常訪問的數(shù)據(jù)存儲在內存中,從而減少磁盤I/O操作,提高MySQL的性能。
調整MySQL參數(shù):通過調整MySQL參數(shù),可以根據(jù)具體情況優(yōu)化MySQL的性能。
8、索引類型?你們項目中用的什么索引?
在數(shù)據(jù)庫中,索引是一種數(shù)據(jù)結構,用于提高查詢效率。常見的索引類型包括:B樹索引、哈希索引、位圖索引等。
不同的數(shù)據(jù)庫管理系統(tǒng)(DBMS)支持的索引類型也不同。例如,MySQL支持B樹索引、哈希索引和全文索引;Oracle數(shù)據(jù)庫支持B樹索引、位圖索引和函數(shù)索引等。我們項目用的B+樹索引居多
9、索引底層原理?介紹下B+樹吧
10、Redis數(shù)據(jù)類型及常見使用場景
11、接口自動化做到什么粒度?接口自動化執(zhí)行通過率?
一般來說,接口自動化可以做到以下粒度:
單元測試:針對單個接口進行測試,驗證其返回結果是否符合預期。
集成測試:針對多個接口進行測試,驗證它們之間的交互是否符合預期。
系統(tǒng)測試:針對整個系統(tǒng)進行測試,驗證所有接口是否能協(xié)同工作,是否能夠滿足業(yè)務需求。
通過率99%
12、http&https&Rps區(qū)別?
HTTP、HTTPS和RPC都是計算機網(wǎng)絡中的協(xié)議。其中,HTTP是一種明文傳輸協(xié)議,而HTTPS則是一種加密傳輸協(xié)議。RPC是一種遠程過程調用協(xié)議,它可以在客戶端和服務器之間進行通信,使得開發(fā)者可以像調用本地函數(shù)一樣調用遠程函數(shù)。
HTTP和HTTPS的區(qū)別在于安全性。HTTPS使用SSL/TLS協(xié)議對數(shù)據(jù)進行加密,可以保護數(shù)據(jù)的安全性和完整性。而HTTP則不具備這種加密機制,數(shù)據(jù)傳輸過程中容易被竊聽和篡改。
13、你理解接口自動化的出發(fā)點?為什么要耗費人力做自動化
接口自動化的出發(fā)點是為了節(jié)省人力成本,把測試從枯燥的重復勞動的人工測試中解放出來。這樣可以減輕測試人員的工作量,提高測試效率,同時也可以保證測試質量。
此外,接口自動化還可以提高測試覆蓋率,減少人為錯誤,提高軟件的穩(wěn)定性和可靠性。
14、http和Rpc使用上的區(qū)別?
RPC和HTTP使用上的區(qū)別主要有以下幾點:
傳輸協(xié)議:RPC可以使用自定義的TCP協(xié)議,也可以使用HTTP協(xié)議,而HTTP只能使用HTTP協(xié)議。
傳輸效率:RPC使用自定義的TCP協(xié)議,可以讓請求報文體積更小,或者使用HTTP2協(xié)議,也可以很好的減少報文的體積,提高傳輸效率。
數(shù)據(jù)傳輸方式:RPC是一種遠程過程調用協(xié)議,它可以直接將數(shù)據(jù)打包成二進制流進行傳輸,而HTTP則是一種基于文本的協(xié)議,需要將數(shù)據(jù)轉換成字符串進行傳輸。
應用場景:RPC一般用于大型企業(yè)之間的通信,而HTTP則適用于中小型企業(yè)之間的通信
15、Redis 的key大小設置多少合理?
Redis的key大小設置應該根據(jù)實際需求來定。一般來說,建議使用有意義及統(tǒng)一格式的key,而不是過長的key,因為過長的key會影響內存占用及數(shù)據(jù)查性能。
16、URL請求到響應的流程
17、棧和隊列的區(qū)別?舉一個只能使用隊列不能使用棧的業(yè)務場景
棧和隊列是兩種常見的數(shù)據(jù)結構,它們的區(qū)別如下:
棧是一種后進先出(Last-In-First-Out,LIFO)的數(shù)據(jù)結構,即最后放入棧中的元素會最先被彈出;而隊列是一種先進先出(First-In-First-Out,F(xiàn)IFO)的數(shù)據(jù)結構,即最先放入隊列中的元素會最先被取出。
棧只能從表尾插入和刪除元素,而隊列只能在表頭插入和在表尾刪除元素。
一個只能使用隊列不能使用棧的業(yè)務場景是:假設你有一個火車站,你需要讓乘客上車。你可以使用隊列來實現(xiàn)這個場景。首先,你需要在車站入口處放置一個隊列。然后,每當有新的乘客到來時,他們必須站在隊列的末尾。當火車到達時,車站工作人員會從隊列的頭部移除第一個乘客并將其帶上火車。這樣,我們就可以確保每個乘客都能夠按照他們到達的順序上車。
18、線性表和鏈表區(qū)別
線性表和鏈表是兩種常見的數(shù)據(jù)結構。線性表是一種具有相同數(shù)據(jù)類型的n (n>0)個數(shù)據(jù)元素的有限序列,它的順序存儲結構就是順序表,鏈式存儲結構就是鏈表。鏈表又包括單向鏈表、雙向鏈表、循環(huán)鏈表、靜態(tài)鏈表等。順序表可以實現(xiàn)隨機訪問,隨機存取,占用連續(xù)的存儲空間,空間利用率較高,但是順序表的插刪,需要移動多個元素。而鏈表則可以實現(xiàn)任意插入和刪除操作,不需要移動元素,但是只能從頭節(jié)點開始遍歷,訪問某個節(jié)點時需要從頭節(jié)點開始遍歷整個鏈表 。
19、JAVA線程安全
Java中的線程安全是指在多線程環(huán)境下,保證程序的正確性。Java語言中各種操作共享的數(shù)據(jù)有5種類型:不可變、絕對線程安全、相對線程安全、線程兼容和線程對立。其中,不可變的對象一定是線程安全的,不需要再采取任何的線程安全保障措施。只要能正確構建一個不可變對象,該對象永遠不會在多個線程之間出現(xiàn)不一致的狀態(tài)。
如果您想要確保Java程序是線程安全的,可以考慮以下幾個方面:使用synchronized關鍵字、ReentrantLock類、Semaphore類等同步機制;使用volatile關鍵字;使用原子類;使用ThreadLocal類等 。
20、鎖的類型,你用過哪些鎖?
鎖的類型有很多種,其中包括公平鎖和非公平鎖。Java ReetrantLock中的公平鎖和非公平鎖可以通過構造函數(shù)指定。此外,還有樂觀鎖和悲觀鎖等類型。
21、樂觀鎖和悲觀鎖
樂觀鎖和悲觀鎖是兩種思想,用于解決并發(fā)場景下的數(shù)據(jù)競爭問題。樂觀鎖在操作數(shù)據(jù)時非常樂觀,認為別人不會同時修改數(shù)據(jù)。因此樂觀鎖不會上鎖,只是在執(zhí)行更新的時候判斷一下在此期間別人是否修改了數(shù)據(jù):如果別人修改了數(shù)據(jù)則放棄操作,否則執(zhí)行操作。悲觀鎖在操作數(shù)據(jù)時比較悲觀,認為別人會同時修改數(shù)據(jù)。因此操作數(shù)據(jù)時直接把數(shù)據(jù)鎖住,直到操作完成后才會釋放鎖;上鎖期間其他人不能修改數(shù)據(jù) 。
22、git常見命令?合分支、回滾版本
以下是一些常用的git命令:
git init:初始化一個新的git倉庫。
git clone:克隆一個已有的git倉庫。
git add:將文件添加到暫存區(qū)。
git commit:提交暫存區(qū)中的文件到本地倉庫。
git status:查看當前倉庫的狀態(tài)。
git diff:查看工作區(qū)與暫存區(qū)之間的差異。
git log:查看提交歷史記錄。
git branch:創(chuàng)建、列出、刪除分支。
git checkout:切換分支或恢復工作區(qū)文件。
git merge:合并分支。
git rebase:變基操作,將一個分支的修改應用到另一個分支上。
git reset:重置當前分支到指定狀態(tài)。
23、淘寶買東西頁面白屏?說一下你的排查思路?
首先可以抓包看前端or后端問題、1、接口返回成功前端沒展示2、接口請求失敗or受阻【這里比較暴力的辦法是可以開啟遠程debug端口,打斷點執(zhí)行即可】
24、出現(xiàn)過的線上問題?排查思路?
線上問題的排查思路因問題而異,但是一般可以從以下幾個方面入手:- 確認問題的范圍和影響;- 收集相關信息,如日志、監(jiān)控數(shù)據(jù)等;- 分析問題的原因,如程序錯誤、硬件故障等;- 制定解決方案并驗證。
25、掃碼支付case
以下是掃碼支付測試用例的設計:
測試正常掃碼支付流程,包括輸入金額、選擇支付方式、確認支付等步驟。
測試掃碼支付過程中可能出現(xiàn)的異常情況,如網(wǎng)絡連接中斷、支付失敗等。
測試掃碼支付的安全性,包括防止惡意攻擊、保護用戶隱私等方面。
測試掃碼支付的速度和穩(wěn)定性,包括響應時間、并發(fā)處理能力等方面。
測試掃碼支付在不同設備上的兼容性,包括不同操作系統(tǒng)、不同瀏覽器等方面。
26、性能測試指標?常用性能測試工具?
性能測試指標包括:- 響應時間:即請求從發(fā)送到接收到響應的時間;- 吞吐量:即單位時間內系統(tǒng)處理的請求數(shù);- 并發(fā)用戶數(shù):即同時訪問系統(tǒng)的用戶數(shù);- 資源利用率:即系統(tǒng)在處理請求時所占用的資源比例。
常用的性能測試工具有:
JMeter:Apache JMeter是一個開源的Java應用程序,用于測試Web應用程序的性能和負載能力;
LoadRunner:LoadRunner是一種商業(yè)性能測試工具,用于模擬負載和性能測試;
Gatling:Gatling是一個快速的開源負載測試工具,
27、算法題:求最長公共子串(寫的有點問題,面試官說不用寫了┭┮﹏┭┮)
def longest_common_substring(s1, s2):
? ? m = len(s1)
? ? n = len(s2)
? ? # 初始化二維數(shù)組
? ? dp = [[0] * (n + 1) for i in range(m + 1)]
? ? max_len = 0
? ? end = 0
? ? # 動態(tài)規(guī)劃求解
? ? for i in range(1, m + 1):
? ? ? ? for j in range(1, n + 1):
? ? ? ? ? ? if s1[i - 1] == s2[j - 1]:
? ? ? ? ? ? ? ? dp[i][j] = dp[i - 1][j - 1] + 1
? ? ? ? ? ? ? ? if dp[i][j] > max_len:
? ? ? ? ? ? ? ? ? ? max_len = dp[i][j]
? ? ? ? ? ? ? ? ? ? end = i
? ? return s1[end - max_len:end]
其中,s1和s2為兩個字符串,返回它們的最長公共子串。該算法的時間復雜度為O(mn),空間復雜度為O(mn)。
最后:這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!

包括,測試人技術進階路徑圖,50多天的視頻教程、16個項目實例,30多個測試工具,37份測試文檔,70個軟件測試相關問題,40篇測試經(jīng)驗級文章分享,還有軟件測試面試小程序,求職簡歷的優(yōu)化模板。
加油吧,如果你需要提升技術儲備,那就行動,在路上總比在起點觀望的要好。一切的迷茫都是因為想得太多而做的太少!
你可以在公眾號:傷心的辣條?! 自行領取一份216頁軟件測試工程師面試寶典文檔資料【免費的】。以及相對應的視頻學習教程免費分享!,其中包括了有基礎知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構開發(fā)測試框架、性能測試、安全測試等。
現(xiàn)在我邀請你進入我們的軟件測試學習交流群:【746506216】,備注“入群”, 大家可以一起探討交流軟件測試,共同學習軟件測試技術、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發(fā),走向高薪之路。