2020年4月份字節跳動后端面試經驗分享


file
2020年4月份字節跳動后端面試經驗

第一面

  • 遠程使用牛客網進行面試
  • 面試官首先介紹說會有幾輪面試
算法題 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)

這段代碼在協程里面執行,會造成數據不統一
可以使用加鎖避免

  • 怎么樣加鎖?代碼實現一下

代碼如下:

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 你還有什么要問的

大概什么時候有結果

  • 五個工作日內答復


免責聲明!

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



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