我出面試題

我一直想若是我是面試官,我會問什麼問題來考察應聘者的計算機基本功。寫這篇文章主要是作個記錄。git

彙編的棧模型

在CSAPP(Computer Systems: A programmer's perspective,中文叫:深刻理解計算機系統)中,有對彙編的棧工做原理的詳細描述,這個底層的實現原理對程序員來講很是重要,算是一個基本功。程序員

swap爲何是無效的

好比swap爲何是不能直接交換兩個變量的,就能依靠這個基本功輕鬆解釋。在高級語言中的形參和實參,在彙編中到底是如何實現的。在這裏統統是有答案的。github

過程調用面試

void swap(int a, int b){
    int temp = a;
    a = b;
    b = temp;
}

經過%ebp+8%ebp+12拿到swap的兩個實參(只有實參是實實在在存在內存中的,形參只不過是寄存器中實參的一個拷貝),在三個寄存器裏進行交換,卻並不寫回到實參。因此這個swap是無效的。ide

深刻理解指針

值、引用、值傳遞、引用傳遞、淺拷貝、深拷貝函數

這些都是指針方面的知識,能夠看看我寫的這部分:設計

programming paradigms指針

面向對象程序設計

Override、Overwrite、Overload

Override是咱們常說的面向對象的重載,是真正的重載,子類重載父類的函數。這三個名詞中,實際上只存在兩種技術一個是多態,一個是函數簽名。code

相關文章
相關標籤/搜索