我出面试题

我一直想若是我是面试官,我会问什么问题来考察应聘者的计算机基本功。写这篇文章主要是作个记录。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

相关文章
相关标签/搜索