1. 程式人生 > >百度雲端計算部門面試

百度雲端計算部門面試

感覺百度部門之間面試都沒加鎖呢。。一個個部門都開始來面試了。。。

今天面了一個百度的雲端計算部門,對方是一個姐姐,感覺還挺客氣的,說重點吧,講講面試的過程,不過感覺那個姐姐就是列了個題目列表,按順序一個個問的。

(1)for和foreach的區別(從原始碼角度分析一下)?
答:在固定長度或長度不需要計算的時候for迴圈效率高於foreach。
在不確定長度,或計算長度有效能損耗的時候,用foreach比較方便。
並且foreach的時候會鎖定集合中的物件,期間不能修改。

foreach

//第一次 var a in GetList() 時 呼叫 GetEnumerator 返回第一個物件 並 賦給a,以後每次再執行 var a in
GetList() 的時候 呼叫 MoveNext.直到迴圈結束. foreach (var a in GetList()){ ... } var a; IEnumerator e = GetList().GetEnumerator(); while (e.MoveNext){ a = e.Current; }

for

//for 迴圈每次迴圈會呼叫 GetCount() 來比較長度, 而 foreach 不考慮長度,只調用一次GetList()。
for(int i = 0; i < GetCount(); i++)
{
  ....
}
int i = 0;
while
(i < GetCount()) {   ... }

(2)32位系統int的取值範圍?
unsigned int 0~4294967295(2^32-1)
int -2147483648(-2^31) ~2147483647(2^32-1)
十億數量級的。

(3)HashMap的原始碼?什麼時候擴容?擴容方式?解決衝突方式?

(4)memory copy與string copy的區別?
答:表示不會,沒有答出來,感覺是C++的呀。。。
網上搜了一個答案:

1、memory拷貝,根據拷貝的位元組個數,從src一個一個位元組拷貝到dst,拷貝過程不管src的取值,也不管dst是否能容納。
2
、因此,對於memory拷貝,src中NULL字元(取值為0的字元)後面的字元也能拷貝過去。不管dst是否能容納,都拷貝過去,會存在踩記憶體。為了避免踩記憶體,拷貝的位元組個數,需要小於等於dst分配的大小。 3string拷貝,遇到src的NULL字元結束。因此,strcpy有兩個問題特別需要注意:一,src結尾必須要有NULL字元,否則會一直拷貝下去,直到遇到NULL字元。二,dst在src有效長度的基礎上,要多分配一個字元,用於儲存NULL字元,如果沒有多分配這個字元,會導致拷貝到dst的時候,踩一個位元組的記憶體。 4、src沒有NULL字元,會一直拷貝下去,直到遇到NULL字元,怎麼解決這個問題? 使用strncpy,表示最多拷貝n個位元組。如果不到n個位元組,遇到src中的NULL字元,結束拷貝,並且從當前點到n位置,補充NULL。這一點和memory拷貝不同,memcpy不管src的取值,都會拷貝n個位元組。 5、注意: string src ="abcdabcd"; char* dst = new char[8]; strcpy(dst,src.c_str()); // 踩記憶體,src多出一個NULL,而dst分配的記憶體不夠 strncpy(dst,src.c_str(),8);// 不踩記憶體 memcpy(dst,src.c_str(),8); // 不踩記憶體 strncpymemcpy不踩記憶體,但是會導致dst沒有結束符。這往往會出現問題,比如dst再拷貝到其他地方。因此,解決辦法最好是 dst多分配一個字元,用於儲存NULL,並且初始化dst,如下: char* dst = new char[src.size()+1]; memset(dst,0,src.size()+1);

(5)【作業系統】頁面置換演算法有哪些?LRU怎麼進行優化?

(6)【作業系統】分頁與分段的區別?

(7)【演算法題】判斷一個括號字串是否匹配正確,如果括號有多種,怎麼做?如(([]))正確,[[(()錯誤。

答:用個棧就行啦,leetcode上的easy難度。

(8)【演算法題】一個數組,前半段是遞增的,後半段是遞減的,找出陣列中最大的值?
答:類似於二分查詢,丟棄另一半,時間複雜度O(n)

(9)【演算法題】最長公共子序列?

(10)【計算機網路】traceroute命令?

(11)【計算機網路】什麼時候會進入time-wait狀態?

(12)【JVM】什麼時候會觸發GC?

(13)【JVM】JVM引數設定時newsize代表了什麼?

(14)Spark提交任務的整體工作流程描述一下?

(15)Spark如何進行效能調優?詳細描述。

(16)Spark設定中executor-memory 和spark.default.parallelism分別代表什麼?

(17)資料傾斜的解決方案?

(18)寬依賴和窄依賴的比較。。。

時間:一個小時10分鐘