阿里巴巴2017暑期实习生招聘面经

此篇博客实时更新。。。希望最后能够顺利拿到offer


2017/3/2电话面试第一轮


阿里的效率果然快。。投简历第五天,系统开放第二天就打来了面试电话。面试官非常有礼貌给人感觉很好,上来先介绍了一下他们部门,随后就是我的自我介绍了,先是讲了讲项目,随后问了问我本科、研究生学习的课程,问的知识点如下:

1、缓存的实现原理,缓存的效率(有没有缓存效率变化有多大)

2、局部性原理(这个当时没答出来)


局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

三种不同类型的局部性:
时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
程序循环、 堆栈等是产生时间局部性的原因。
空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。
顺序局部性(Order Locality):在典型程序中,除转移类指令外,大部分指令是顺序进行的。 顺序执行和非顺序执行的比例大致是5:1。此外,对大型 数组访问也是顺序的。
指令的顺序执行、数组的连续存放等是产生顺序局部性的原因。

局部性原理(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,所以它们性能要比次级存储器高的多。

由于上层存储器是下层存储器的缓冲,基于局部性原理,使用这种架构是正确的选择。因为下层存储器中的数据一旦被装入上层存储器,就很有可能被多次用到,此时CPU则可以在更靠近它的性能也更高的存储器内找到其需要的数据,而不需要每次都要到离它更远,性能也更低的存储器内去存取它们。

在现代计算机软硬件体系架构下,不同层次的程序员看到的存储器层次也是不一样的。对于Application程序员,看到的只有虚拟内存,而对于系统程序员,比如操作系统程序员看到就是普通内存,而对于系统级Hardware Integration程序员,则看到的是二级cache,对于芯片级别的Hardware程序员,看到的则是一级cache。

但无论你是哪个级别的程序员,如果你能够了解更低层的存储器原理,则可能优化你的程序,让你的程序性能更高。而对于OS程序员而言,了解一,二级cache的机制,则可以优化其开发的操作系统。




3、C++多态的实现(重载、虚函数)

4、虚函数的实现原理


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值