2020年4月份字節跳動後端面試經驗mysql
第一面
- 遠程使用牛客網進行面試
- 面試官首先介紹說會有幾輪面試
算法題 1.1
將整數轉換二進制 而後將負數面試
算法題 1.2 買賣股票的最大利潤
給定一個數組表明股票天天的價格,請問買賣屢次的狀況下,最大化利潤是多少? 日期不重疊的狀況下,能夠買賣屢次? 輸入: {100, 80, 120, 130, 70, 60, 100, 125} 能夠買賣屢次: 115(80買進,130賣出;60 買進,125賣出) 提示:不用輸出買賣的序列,只須要獲得最大利潤算法
- 時間複雜度是多少
- 空間複雜度是多少
判斷題
2.1 這段代碼有什麼問題,若是解決
total := 0 for i := 1; i <= 10; i++ { sum += i go func() { total += i }() } fmt.Printf("total:%d sum %d", total, sum)
這段代碼在協程裏面執行,會形成數據不統一 能夠使用加鎖避免sql
- 怎麼樣加鎖?代碼實現一下
代碼以下:數據庫
var lo sync.Mutex func main() { total := 0 for i := 1; i <= 10; i++ { nums += i lo.Lock() go func() { total += i lo.Unlock() }() } fmt.Printf("total:%d", total) }
- 還有其餘問題嗎
3 其餘考覈
3.1HTTP狀態碼
400 500狀態碼後端
HTTP報文格式
不清楚··· 解:數組
3.2HTTP請求方式
GET獲取 POST建立 PUT修改 DELETE刪除安全
- get post有什麼區別
我的主要說了get相對沒有post安全,全部的參數都放在URL上面,post會把參數包裝成一個請求體數據結構
- 抓包post和get有什麼區別
url中會附帶GET請求的一些參數,抓包都能看見,都是明文傳輸,而POST的在url中則看不到 更好的答案:https://www.zhihu.com/question/28586791併發
4 數據庫
4.1 mysql事務
事務主要用於處理操做量大,複雜度高的數據。好比說,在人員管理系統中,你刪除一我的員,你既須要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操做語句就構成一個事務 定時任務
- 隔離級別有哪幾種
~
4.2 MySQL數據庫索引是如何實現的?
使用的B+樹實現的 由於B+樹和跳錶有點類似,能夠直接查找下一級
- 爲何不用其餘的數據結構?
由於若是數據量特別大的時候,大數據量查找會影響性能,B+樹剛好解決了這個問題
4.3這段數據庫應該怎麼加索引速度最快
select * from table_name where c> 10 and a = 10 and b = 10;
首先咱們應該優化只查詢的值,能夠把*改成須要查詢的key 由於c是動態的,能夠根據a和b加聯合索引,達到速度最優
5 項目相關
項目中的爬蟲你用到了什麼框架
- 框架有什麼用
- 高併發怎麼作的,有微服務嗎
- 若是要作分佈式的,怎麼實現
用kafka實現,抓取數據統一使用kafka進行消費
- 存入哪些信息
存入列表
- 大家沒有作查找功能嗎
沒有,若是有這個需求能夠存儲到ES,使用es進行查找
6 你還有什麼要問的
大概何時有結果
- 五個工做日內答覆