此篇博客实时更新。。。希望最后能够顺利拿到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、虚函数的实现原理