此篇博客實時更新。。。希望最後能夠順利拿到offer
2017/3/2電話面試第一輪
阿里的效率果然快。。投簡歷第五天,系統開放第二天就打來了面試電話。面試官非常有禮貌給人感覺很好,上來先介紹了一下他們部門,隨後就是我的自我介紹了,先是講了講項目,隨後問了問我本科、研究生學習的課程,問的知識點如下:
1、緩存的實現原理,緩存的效率(有沒有緩存效率變化有多大)
2、局部性原理(這個當時沒答出來)
局部性原理是指CPU訪問存儲器時,無論是存取指令還是存取數據,所訪問的存儲單元都趨於聚集在一個較小的連續區域中。
局部性原理(Principle of Locality)是一個由經驗得出的結論:“一個程序90%的時間運行在10%的代碼上”。
計算機程序從時間和空間都表現出“局部性”:
1)時間的局部性(Temporal Locality):最近被訪問的內存內容(指令或數據)很快還會被訪問;
2)空間的局部性(Spatial Locality):靠近當前正在被訪問內存的內存內容很快也會被訪問。
一個典型的例子就是幾乎所有的程序都有循環代碼。比如:
for(int i=0; i < 1000; i++)
for(int j=0; j < 200; j++)
a[i][j] = i*j;
這段代碼從時間和空間上都表現出很強的局部性。
由於上層存儲器是下層存儲器的緩衝,基於局部性原理,使用這種架構是正確的選擇。因爲下層存儲器中的數據一旦被裝入上層存儲器,就很有可能被多次用到,此時CPU則可以在更靠近它的性能也更高的存儲器內找到其需要的數據,而不需要每次都要到離它更遠,性能也更低的存儲器內去存取它們。
在現代計算機軟硬件體系架構下,不同層次的程序員看到的存儲器層次也是不一樣的。對於Application程序員,看到的只有虛擬內存,而對於系統程序員,比如操作系統程序員看到就是普通內存,而對於系統級Hardware Integration程序員,則看到的是二級cache,對於芯片級別的Hardware程序員,看到的則是一級cache。
但無論你是哪個級別的程序員,如果你能夠了解更低層的存儲器原理,則可能優化你的程序,讓你的程序性能更高。而對於OS程序員而言,瞭解一,二級cache的機制,則可以優化其開發的操作系統。
3、C++多態的實現(重載、虛函數)
4、虛函數的實現原理