[1] 教你如何迅速秒殺掉:99%的海量數據處理面試題
本文分成兩部分。第一部分、從set/map談到hashtable/hash_map/hash_set,簡要介紹下set/map/multiset/multimap,及hash_set/hash_map/hash_multiset/hash_multimap之區別(萬丈高樓平地起,基礎最重要),而本文第二部分,則針對上述那6種方法模式結合對應的海量數據處理面試題分別具體闡述。
[2] 百度最新面試題集錦
最新的面試題集有時也代表公司近來的研發方向甚至科研趨勢,這裏,博主收集了一些百度最新的面試題集,其中有較爲有趣的試題,
比如:
螞蟻爬杆問題:
有一根27釐米長的細木杆,在第3釐米,7釐米,11釐米,17釐米,23釐米這五個位置上各有一隻螞蟻,木杆很細,不能同時通過兩隻螞蟻,開始時,螞蟻的頭朝向左還是右是任意的,他們只會朝前走或掉頭,但不會後退,當兩隻螞蟻相遇後,螞蟻會同時掉頭朝反方向走,假設螞蟻們每秒鐘可以走1釐米的距離。求所有螞蟻都離開木杆的最小時間和最大時間。
答案:
兩隻螞蟻相遇後,各自掉頭朝相反方向走。如果我們不考慮每個螞蟻的具體身份,這和 兩隻螞蟻相遇後,打個招呼繼續向前走沒有什麼區別。
所有螞蟻都離開木杆的最小時間爲
max(min(3,27-3),min(7,27-7), min(11,27-11), min(17,27-17),min(23,27-23))=11
所有螞蟻都離開木杆的最大時間爲
max(max(3,27-3),max(7,27-7), max(11,27-11), max(17,27-17),max(23,27-23))=24
三個警察和三個囚徒的過河問題:
三個警察和三個囚徒共同旅行。一條河擋住了去路,河邊有一條船,但是每次只能載2人。存在如下的危險:無論在河的哪邊,當囚徒人數多於警察的人數時,將有警察被囚徒殺死。問題:請問如何確定渡河方案,才能保證6人安全無損的過河。
答案:
第一次:兩囚徒同過,回一囚徒
第二次:兩囚徒同過,回一囚徒
第三次:兩警察同過,回一囚徒一警察(此時對岸還剩下一囚徒一警察,是安全狀態)
第四次:兩警察同過,回一囚徒(此時對岸有3個警察,是安全狀態)
博主在文中指出,進入技術面試之前,先要做一套相應的試題,這裏面涉及到平常不怎麼注意的問題:
一是沒有定義訪問範圍的構造函數,前面未加public、protected或private限制等,默認protected,編譯會報錯;
蘋果這樣的公司通常會在面試過程中向求職者拋出一些邏輯的問題來考研面試者,所以,如果你對進入蘋果感興趣,或者只是對邏輯問題感興趣,這些面試難題值得你仔細研究。
比如:
"邏輯學家們圍成一圈坐着,他們的額頭上面畫有數字……”又來一個邏輯學家圍成一圈的問題,這次是這樣的,三個擁有完美邏輯推理能力的人圍成一圈坐在一個房間裏,每個人的額頭上都畫着一個大於0的數字,三個人的數字各不相同,每個人都看得見其他兩個人的數字,看不見自己的。
這三個數字的情況是,其中一個數字是其他兩個數字的和,已知的情況還有,其中一個邏輯學家的數字是20,一個是30。遊戲組織者從這三個邏輯學家後面走過,並問三個人各自額頭上的數字是什麼。但第一輪每個邏輯學家都回答他們無法推測自己的數字是什麼。遊戲組織者只好進行第二輪的發問,這是爲什麼?你能據此猜出三個邏輯學家的數字嗎?
12個C語言面試題,涉及指針、進程、運算、結構體、函數、內存等內容,比如:
內存泄露:
- 1. #include<stdio.h>
- 2.
- 3. void func(void)
- 4. {
- 5. printf("\n Cleanup function called \n");
- 6. return;
- 7. }
- 8.
- 9. int main(void)
- 10. {
- 11. int i = 0;
- 12.
- 13. atexit(func);
- 14.
- 15. for(;i<0xffffff;i++);
- 16.
- 17. _exit(0);
- 18. }
這是因爲_exit()函數的使用,該函數並沒有調用atexit()等函數清理。如果使用atexit()就應當使用exit()或者“return”與之相配合。
這篇文章收集了 Java 線程方面一些典型的問題,
比如:
爲什麼需要 run ()和 start ()方法,我們可以只用 run ()方法來完成任務嗎?
我們需要 run ()&start ()這兩個方法是因爲 JVM 創建一個單獨的線程不同於普通方法的調用,所以這項工作由線程的 start 方法來完成,start 由本地方法實現,需要顯示地被調用,使用這倆個方法的另外一個好處是任何一個對象都可以作爲線程運行,只要實現了 Runnable 接口,這就避免因繼承了 Thread 類而造成的 Java 的多繼承問題。
無論你是參與Java面試還是C#面試,設計模式和軟件設計問題在程序員面試中是必不可少的一部分。本文總結了在各種面試過程中經常被提及的一些設計問題。文中分爲兩部分,一類爲初學者,另一類專爲中高級技術人員準備。
如何在面試時能寫出高質量的代碼,是很多程序員關心的問題。作者總結自己多年面試他人以及被他人面試的經驗,發現應聘者可以從代碼的規範性、完整性和魯棒性三個方面提高代碼的質量。
編程面試是程序員面試過程中最爲重要的一個環節,其中主要關注應聘者五種素質:
(1)紮實的基礎知識
(2)能寫高質量的代碼
(3)分析問題時思路清晰
(4)能優化時間效率和空間效率
(5)具備包括學習能力、溝通能力、發散思維能力等在內的綜合能力。
博主在文中談到,一個公司的技術面試需要有良好的經驗傳承,不光光只是留來一些題庫;也不光光是一句要相互尊重,你代表公司的形象;更重要的如何去主導一場面試,全面、準確的瞭解對方的能力。一般情況下,軟件公司招人總會對這三個方面的能力做一下考覈,一是編程語言,二是數據結構與算法,三是系統設計。
延伸閱讀: 編程技術面試的五大要點