云计算面试题知识汇总,云计算面试经验讲解

云计算岗位面试其实并没有很多人想的那么复杂,主要是电话面试,估计是面试的人比较少,简单的问了一些技术问题,在问了有一些商务对接方面的问题第一轮,技术面的时候,问了云计算的3个层面,云计算现在发展情况,商务面的时候,问了商务对接如何有效进行;第二轮,主要问做过什么项目,如何做项目,下面给大家分享几个实用的云计算面试题知识。

1、海量日志数据,提取出某日访问百度次数最多的那个IP。

IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。

2、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。

假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。

第一步借用hash统计进行预处理: 先对这批海量数据预处理(维护一个Key为Query字串,Value为该Query出现次数,即Hashmap(Query,Value),每次读取一个Query,如果该字串不在Table中,那么加入该字串,并且将Value值设为1;如果该字串在Table中,那么将该字串的计数加一即可。最终我们在O(N)(N为1千万,因为要遍历整个数组一遍才能统计处每个query出现的次数)的时间复杂度内用Hash表完成了统计;

第二步借用堆排序找出最热门的10个查询串:时间复杂度为N‘*logK。维护一个K(该题目中是10)大小的小根堆,然后遍历3百万个Query,分别和根元素进行对比(对比value的值),找出10个value值最大的query

最终的时间复杂度是:O(N) + N‘*O(logK),(N为1000万,N’为300万)

或者:采用trie树,关键字域存该查询串出现的次数,没有出现为0。最后用10个元素的最小推来对出现频率进行排序。

3、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

第一步分而治之/hash映射到顺序读文件中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(记为x0,x1,...x4999)中。这样每个文件大概是200k左右。如果其中的有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M。

第二步hash统计对每个小文件,统计每个文件中出现的词以及相应的频率(可以采用trie树/hash_map等),并取出出现频率最大的100个词(可以用含100个结点的最小堆),并把100个词及相应的频率存入文件,这样又得到了5000个文件。

第三步堆/归并排序就是把这5000个文件进行归并(也可以采用堆排序)的过程了。(如果内存允许可以将这5000个文件中的所有元素合并起来,利用堆获得top 100)

4、 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

可以估计每个文件安的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。

遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,...,a999)中。这样每个小文件的大约为300M。

遍历文件b,采取和a相同的方式将url分别存储到1000小文件(记为b0,b1,...,b999)。这样处理后,所有可能相同的url都在对应的小文件(a0vsb0,a1vsb1,...,a999vsb999)中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。

求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。

  1. 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

方案1:申请512M的内存(2^32/8=512MB),一个bit位代表一个unsigned int值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。

方案2:因为2^32为40亿多,所以给定一个数可能在,也可能不在其中;这里我们把40亿个数中的每一个用32位的二进制来表示假设这40亿个数开始放在一个文件中。

然后将这40亿个数分成两类: 1. 最高位为0 2. 最高位为1

并将这两类分别写入到两个文件中,其中一个文件中数的个数<=20亿,而另一个>=20亿(这相当于折半了);与要查找的数的最高位比较并接着进入相应的文件再查找

再然后把这个文件为又分成两类: 1.次最高位为0 2.次最高位为1

并将这两类分别写入到两个文件中,其中一个文件中数的个数<=10亿,而另一个>=10亿(这相当于折半了); 与要查找的数的次最高位比较并接着进入相应的文件再查找。 ....... 以此类推,就可以找到了,而且时间复杂度为O(logn)。

原文地址:https://blog.51cto.com/14214237/2407423

时间: 2024-10-10 04:36:14

云计算面试题知识汇总,云计算面试经验讲解的相关文章

云计算面试题及答案,云计算岗位精品面试题

云计算现在发展前景很好,很多人都会选择云计算.但是学完云计算如何面试成功也是重要的一环.这次在本文就为大家带来云计算面试及答案,希望能够对大家找工作的征程有所助益. 针对云计算工程师,现在业内也有不少开放认证的公司,比如AWS.Azure.MCSE-基础架构和云平台.CCNA和CCNP云计算版本.VMware VCP7-CMA,这些认证在应聘时还是可以成为加分项的.大多数互联网公司会要求应聘者具备Docker.Azure.AWS.Linux.OpenStack的操作经验.同时,还要拥有DevOp

云计算工程师面试题集锦,云计算面试题及答案

云计算现在发展前景很好,很多人都会选择云计算.但是学完云计算如何面试成功也是重要的一环.这次在本文就为大家带来云计算面试及答案,希望能够对大家找工作的征程有所助益. 从互联网公司的面试过程来看,求职者必须注意以下几点: 1.计算机网络和数据库的相关知识是所有互联网公司基础知识考察的重要方面,上述也给出了不少面试题,很多公司的题目都很相像,这也基本给出了重点. 2.性格测试被越来越多的互联网公司纳入考察范围,有些问题看起来似乎是正常考察,但很多时候可以看出一个人的性格,公司基本都更喜欢乐观向上.态

java面试笔试题大汇总

java面试笔试题大汇总(一)JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),

我的Android移动端面试经验分享,大厂面试题总结:阿里腾讯美团

前言 不得不说,前两年的移动开发确实很火,可以说随便能鼓捣出来点东西都很容易找到工作.而现在明显降温了,对人才的要求也越来越苛刻,所以跟前两年比需求确实少了很多.但是安卓不仅仅局限于手机,智能家居车载系统电视机顶盒智能机器人的触摸板设置大部分都是搭载的安卓系统,所以市场的需求还是很大的. 本文希望达到的目的是为职场新人和毕业生提供一个面试经验的分享,使读者在找工作时有一个参考少走弯路,通过本文的阅读将收获到: 面试前的准备,简历编写规范和重点: 面试经历,大厂和小厂的区别和考察点: 安卓面试常问

高薪岗位云计算面试题,云计算运维工程师必备

云计算产业市场规模快速增长,人才需求数量激增.相关云计算企业加大对核心技术的投入,提高对客户的服务,无论从技术层面,运营商层面还是集成与服务提供层面,人才需求巨大.下面给大家分享高薪岗位云计算面试题,云计算运维工程师必备好好收藏吧. 1.osi七层参考模型有哪些? 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.udp协议工作在哪一层?ping工作在哪一层? UDP工作在传输层 ping 工作在网络层 3.linux系统中用于检测通信的命令有哪些?(四个以上) ping trac

云计算开发应具备什么知识?云计算开发负责什么工作?

云计算的开发,基于云计算的开发是两个名词,但是核心是:开发.云计算的开发一般是云计算厂商(或选择自己研发云计算的甲方)的工程师,主要是针对云计算内产品的研发工作,聚焦在计算.网络.存储.PaaS等层面.一般SaaS层的开发不称自己是云计算的开发. 基于云计算的开发,和一般的开发没有什么不一样的地方,只不过在开发中需要尽可能的利用好云计算,形成云原生的应用优势. 如果你侧重IaaS层, 则你需要掌握虚拟化的知识,了解目前的vmware\xen和kvm,虚拟化相关关键技术,以及计算资源调度技术.如果

云计算面试题及答案,AWS云计算面试题

如今,越来越多的人通过 AWS 来入门云计算.很多初学者都迫切地想要知道如何才能成为一名 Linux 管理员,于是我想通过本文详细介绍一下云计算的相关知识,希望能够借此来解答开发者心中的疑问.本文既包括 AWS 的基础知识,又包括复杂架构的自动化部署这样的高级操作.读者可以根据自己的背景和基础,选择自己感兴趣的部分阅读. 开始之前,我先假设你具备以下能力: 拥有初级或者中级的 Linux 系统管理技能.至少熟悉一门编程语言或者脚本语言.不必特别精通,但是要有实际的编程经历.愿意花时间去解决一些复

云计算面试题及答案,云计算主要就业岗位

无论是IT老兵还是新人,云计算时代的到来都意味着大量的就业和涨薪机会.但前提是,你必须搞清楚云计算热门职业都有哪些,新的技能要求和职业发展路径是怎样的. 十大云计算职业排行榜.附上职位描述和应聘条件: 一.云架构师 Cloud Architect 职位描述:领导云计算项目的开发和部署,确保系统的可扩展性.可靠性.安全性.可维护性,并在预算内达到业务和IT业绩表现要求. 应聘条件:计算机科学/工程专业本科:拥有超过10年的大规模多平台网络经验:精通Shell.VBScript.Perl或Pytho

C语言面试题大汇总

C语言面试题大汇总 1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.如何引用一个已经定义过的全局变量? 答: extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引