我一直想如果我是面试官,我会问什么问题来考察应聘者的计算机基本功。写这篇文章主要是做个记录。汇编的栈模型在CSAPP(Computer Systems: A programmer’s perspective,中文叫:深入理解计算机系统)中,有对汇编的栈工作原理的详细描述,这个底层的实现原理对程序员来说非常重要,算是一个基本功。swap为什么是无效的比如swap为什么是不能直接交换两个变量的,就能依靠这个基本功轻松解释。在高级语言中的形参和实参,在汇编中究竟是如何实现的。在这里通通是有答案的。过程调用void swap(int a, int b){ int temp = a; a = b; b = temp;}通过%ebp+8和%ebp+12拿到swap的两个实参(只有实参是实实在在存在内存中的,形参只不过是寄存器中实参的一个拷贝),在三个寄存器里进行交换,却并不写回到实参。所以这个swap是无效的。深入理解指针值、引用、值传递、引用传递、浅拷贝、深拷贝这些都是指针方面的知识,可以看看我写的这部分:programming paradigms面向对象程序设计Override、Overwrite、OverloadOverride是我们常说的面向对象的重载,是真正的重载,子类重载父类的函数。这三个名词中,实际上只存在两种技术一个是多态,一个是函数签名。
我出面试题
December 19, 2018 · 1 min · jiezi