计算机笔试题大全_第1页
计算机笔试题大全_第2页
计算机笔试题大全_第3页
计算机笔试题大全_第4页
计算机笔试题大全_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

找工作也快两月了,感受颇多,最近看了一篇《怎样花两年时间去面试一个人》的博客,很有感触,将自己的想法写出来。在找工作的两月中,自己从四大门户:新浪、搜狐、网易、腾讯到业界领先的百度,搜狗、淘宝以及行业巨头的微软;从几个人创业的阿甘网到几十个人美丽说、友录、微游半创业公司;从做浏览器的opera到石油设备的哈里伯顿、斯伦贝谢到咨询的Thoughtworks再到做游戏的金山网游,如果加上一些想不起的公司名,而试有二三十家,再加上一倍以上的笔试。北京带“网”字的公司几乎被过了一圈。从这圈的经验,通过现在互联网公司招聘的漏洞,总结出•些可以在两月的时间内得到•家顶级互联网公司的offer的经验。简单来说,成功100分的话,得分组成比例可以如下:1、50分的算法和C语言,2、15分的项目分,3、15分的知识面和扯淡分,4、10分的开发语言细节分,5、5分的其他。首先很赞同文首博客中的观点,在短短的几轮面试以及校园招聘意义不大的一轮笔试,想选取一个人是很困难的,而且还很容易漏掉一些有实力的人,我敢保证连IDE都没启动过而进入顶级互联网公司的同学不在少数,不是怀疑这些同学的能力,只是说招这些同学对公司来说是一个极大的风险,纸上的程序永远不能变成产品,而且纸上写程序发现不了真正的问题,我加入的一些技术群中,一些我仰慕公司的员工不懂得求助百度,只会•有问题就摆到群上,让人作答,甚至有些工作相当时间的人不懂得如何断点调试。好了,切入正题50分的算法和C语言题:假入你这两个比较好(非超牛),那么你就有50%以上的机会进入心仪的互联网公司,现在的校园招聘笔试和面试,不分公司和部门都是一窝蜂的考这两项,其实对于应届生来说,没仃履历,没有工作对口方向知识的积累,而用人单位为了省事,经常就一套题,所以有不少想做前端的同学去忍受C指针和算法的折磨。假如您的C语言不好,问题不大,翻出谭浩强的那个工科生必修的C教材,看了两个礼拜足够。假如您的算法不好,没关系,现在的校园招聘算法题都是照抄生搬,从我笔试和面试题的重复度来看,八成以上的算法题能被找到原题,大家只要翻翻某火和某美就够了,再做做百度上能搜出的算法笔试题的第一页题目就够用了。个人对这种东西不感冒甚至有点抵触,一直鄙视中国应试教育的用人单位如今变成的应试招聘,本人在找工作极其不顺的10月,多人建议看某美和某典,但是我看完的三本书是《浪潮之巅》,《数据之美》和《RESTful入门》。这些算法题其实难度也不大,要是大家都没看过,也无所谓,但是在大多数人看过的时候,你就丧失了竞争公平性,好多这种题第一次想在很短时间内正确完成还是有困难.个人经验,这类题集中一下儿个方面:排序,知道各种排序的时间和复杂度,能写出快排,堆排以及计数排序的代码且知道什么时候用哪种即可。链表:知道构建动态链表,删除节点,翻转链表,两两翻转,求环节点,求两链表交点足够。字符串:知道高效翻转,回文足够,如果还能完整的写出KMP杳找就基本完美。树:知道二叉树的三种递归遍历,非递归遍历,杳找,知道两种遍历求第三种,再深一点,知道如何分层遍历,如何求两节点距离,就通吃了.其它:队列、栈、哈希表的特性,动态规划。只要上边的只是准备的差不多,算法的笔试和面试题问题就不大了。本人的本科和研究生都是机械,没学过这些东西,从9月17的第一场微软笔试开始,边考边学,就靠这点东西闯笔试和过面试.15分的项目分:如果你没有什么项目,但是你的1很好,那你这部分分基本拿到了,其实这部分很容易作假,个项目你只是打酱油的,但是你做过了解,说出个大概就够了。本人有10几个玩具似的小网站,有一页半简历,那些面试官一看就烦,除了百度问了一个感兴趣的项口,其它的都是说挑一个说,这就很简单,凭看的一些东西,我甚至可以说G公司的BigTable是我做的,面试官也不一定懂您的项目。15分的知识而和扯淡分:这方面不太好提高,根据面试官和应聘职位可能不同,最好是事先取经。本人被问过:PageRank,搜索引擎倒正排索引,数据库优化,web性能优化,浏览器渲染,web安全,爬虫,设计模式,软件架构,推荐系统,加密算法,服务器推等等.一般来说公司不会根据这部分毙人,而且问的东西基本都能扯.但是有些公司会根据这部分毙人。10分的开发语言细节分:根据个人擅长的语言,可能会问•些细节问题,来考察•个人对语言的掌握程度以及学习态度。比如C的指针函数、函数指针,高级语言的值类型,引用类型,值传参和引用传参,托管语言的GC等等。5分的其他:主要是沟通能力,印象以及有些公司要求的英语。个人认为如果上边说的你准备差不多了,那么你就有很大可能进入一个顶级互联网公司。举个人三个例子:.碰巧你霸面被批准了,碰巧你看过搜索弓I擎中爬虫如何爬取和分析正文,碰巧你了解过AJAX,碰巧你知道MVC,那么你过一面了,碰巧你会堆排序,碰巧你会两个链表求交,那么你过二面了,碰巧你的C语言能写出程序,那么你会把这个不复杂但代码有点多程序写出来,碰巧你有一点重构的概念,把你丑陋的代码改的优雅漂亮些,那么你有一个17W的offer/..碰巧笔试后备胎中的你得到了面试机会。碰巧你做的一个项口很合面试官的口味,碰巧你知道web常见的安全漏洞,碰巧你写过两个链表求教,那么你过•面了,碰巧你准备上述的2,碰巧你能写出堆排和知道0RM,碰巧你能做出简单的链表翻转,那么你过二面了。碰巧你准备上述的2,碰巧你了解过WEB服务,碰巧你知道。RM,碰巧你知道什么时候用堆排,而且碰巧会基数排序,那么你有一个19W的offer了。.碰巧笔试后备胎中的你得到了面试机会。碰巧你知道MVC,碰巧你了解过一些CSS和JS基本知识,碰巧你了解过浏览器渲染而且用这个解释•个网站的加载顺序,碰巧你学过web性能扩充,那么你过一面了。碰巧你对web性能优化比较了解,知道pagerank,碰巧你看过大型站点的架构并能说出个大概,那么你有一个20W的offer了。拿到许多互联网公司的offer后,我发现难度最大的是一个创业公司的。对于招聘如此不严谨的企业,我不仅有点担心,若企业招的少无所谓,招的多话,若不能和聘用者解除劳动关系,那么招聘上风险不亚于一个重大项目的风险,好的方面是招人多的企业总是有一些没技术含量的活需要大量的人来干。本人计算机小硕,去年找工作时笔试面试参加了不少,打了不少酱油,没啥大offer,只是抛砖引玉的将求职路上的一些经验与大家分享下,希望对后来人能有所帮助。1.腾讯后台开发(1面-2面-hr面-实习offer)没参加笔试,直接同学推荐过去面的,前两面都是技术而,1面简单问些项目经验和门己所擅长的专业知识;2面项口问的比较深入,还有一些算法和系统架构设计方面的问题;hr面就是简单的聊聊。暑期在腾讯实习了两个月,有导师专门负责指导,期间做了一个小项目,收获不少,与leader在留用沟通时,表示不愿留在深圳,最后也没发正式offer。腾讯大部分都是年轻人,整体氛围比较轻松,电子化办公也很完善,弹性1:作制,加班完全凭自愿,晚上8点后会有免费的水果面包饮料•,9点后的加班出租车票可以报销,整个公司以产品为主导,产品经理有很强的话语权。2.360服务器端开发(笔试):校招参加的第一次笔试,题口不难,可惜编程题写程序时犯了个低级错误,显得的水平很业余,没有面试机会,其实个人和职位要求还是很match的。.百度云计算研发(笔试-1面-2面-3面-offer)笔试都是大题,比较开放式,涉及比较广有线程调度、算法、语言、系统设计等,比较符合个人胃口。1面刚开始直接就写两个程序,然后问了问项目以及一些数据结构和网络方面的知识,只记得其中有个问题是如何判断程序中堆和栈增长方向;2面是电面,主要问了些算法问题,让设计一个图片存储系统,并进行优化,问的很细,让把主要的数据结构和调度算法都设计出来,然后根据你设计的系统提一些更高的要求并进行优化;3面是部门经理的电面,也是技术面,但也问了些个人兴趣、性格特点等问题,比如我说喜欢玩Dota,就问我喜欢玩哪种类型的英雄(当然是根据团队需要,缺啥玩啥,哈哈),技术主耍以项目为主,问的很深,问了好多项目中涉及到细节的问题,而且问题一针见血,不得不佩服百度还是牛人多,参加的其他面试都没问过这么深入的,不过自己做的项目还是比较胸有成竹的。3面完第二天也就是国庆前一天就收到了offer,是收到的第一个校招正式offer,今年百度全国招了快2000人,还有不少都是后面补招进来。.搜狗C++开发(笔试-面试-offer)笔试就是选择题和2道程序题,面试总共就1面不到30分钟,问题包括项目经验、多线程网络编程方面的问题和一个微博系统的设计问题,当场就给了口头offer,2周后发了正式offer。搜狗今年扩张,待遇开的比百度高点,还有股票,不过整个招聘过程让人感觉不靠谱啊,太容易得到的反而有点犹豫哈。.淘宝系统工程师(笔试-1面-2面-3面)笔试包括选择题、大题、附加题和选做题,选择题都是基础知识,大题包括系统设计和算法题。3面同•天完成,通过的话会让你留下等待下一轮面面试,1面先让讲了讲项目经验,然后问了些算法和系统设计方面的问题;2面和1面差不多,然后说了卜.系统工程师的具体职责,涉及面很广,有Linux内核开发、分布式开发还有些类似于运维方面的1作,问了下自己希望从事哪方面的研发:3面是2个人,hr和技术经理吧,依然问了些技术问题,然后hr问了下工作意向offer情况等等,表示自已不想去杭州希望去北京,最后裁环助给ffer。.网易C++开发(笔试-技术面-hr面)笔试是选择题、填空题和大题,有关于数据库和语言方面的知识,还有些算法题:技术面主要问了些关了C++语言方面的知识和项目经验,还有个数学证明题(汗,当时没准备,答得比较扯):hr面上要了解工作意、期望薪水和offer情况等,我表示不想去杭州,后来也没发offer。.新浪云计算开发(笔试-面试-offer)笔试考察范围很广,涉及到数据结构、网络、安全、Linux常用命令、内核、算法、程序设计,以及项目管理等方面;而试就一轮,3个面试官,2个不同部门的经理和1个hr,主耍问了些项目经验,然后根据简历问了些关于内核和网络编程方面的知识,以及一些在项目中遇到的困难如何克服等等,还问了卜期望薪水以及希望户口落在哪个城市的问题。发offer前有hr电话沟通谈户口情况和期望_L资,最后给的offer待遇和百度一样,但是户口不能给保证,只说有很大的可能性(去年解决了55%),最后放弃了。.人民搜索软开(笔试-面试)笔试是选择题+大题,面试都是被拉过去给面试官增加经验值的,也是以写程序为主,并且写完后要不断的去优化优化再优化。人民搜索据说加班挺多,但是待遇还是很给力,尤其是保证解决北京户口。小结:互联网企业比较看重算法和项目经验,语言倒是其次,其实面试时间项目经验,并不是单纯的考察你做过什么,而是看你是如何做,为什么这么做,有没有更好的解决方案,做项目时问题考虑的是否全面,是看你思维的方式,对整个计算机系统的认识,更加看取你的发展潜力。互联网公司太多是弹性工作制,相对比较自由,加班情况通常比较多,不过周末•般不加班。建议(希望从事技术方面工作的同学).多看些经典/篇,《UNIX环境高级编程》《深入理解计算机系统》《深入理解Linux内核》《UNIX网络编程卷一》《编程珠矶》《C++Primer》《C和指针》《编程之美》等等,这些书籍能够使你对整个计算机系统有更深入的理解,并且其中有许多经典的算法和数据结构可以参考学习,看完前四木书,我就感觉自己对底层编程的认识上升了一个档次,后面四本书主要是针对面试时一些语言和算法问题准备的。.多看看经典的开源代码,如Linux内核代码等,因为项目原因,看了不少Linux内存方面和Solaris卜.的源代码,里面一幽精妙的数据结构和系统架构的设计,真的能使人获益匪浅..多动手做些实际项口的开发,实践出真知,在实践中发现并解决问题,能够快速的提高技术水平和思维方式。通过这一段我找互联网实习的经历说说我个人对于准备互联网工作的见解,希望对有意互联网企业的同学有一点帮助.虽然是找实习的经历,但很多实习都是可以转正的,所以也差不多。而且,即将开始的互联网校招我应该绝大多数不会参加,所以那时候也没啥好写的了.我这里说的互联网企业也包括一些软件公司。我只投过旧M,腾讯,百度,MS.人搜,拿到过IBM,MS.人搜的offer.个人情况:.有过工作经历;项目经验一般,没什么大牛项目,简历上只写了两个项目。文字+叙述能力不错,简历写的还可以,投简历至今包括国企没挂过简历(我简历两页纸,我至今没挂过筒历,一页/两页随自己,或的没有什么必须•页的要求);.算法还勉强可以写写,两次校内赛进一次决赛,没奖。校内个人赛去年的阿里巴巴那个,好像是第23名。操作系统、数据库、网络等均一般。So,实力真心一般。周围有一大票拿了一圈offer的人嗯,希望那些大牛们有空也可以写个帖子什么的分享下。建议的准备:.其实我觉得“项目”、“算法”、“操作系统”、“数据库”、“网络”等,只要取其一你比较精通,面试的时候引面试它往你精通的方向侃,基本搞定个互联网offer问题不大。.我是走的算法这条路,POJ上儿十道题吧,POJ首页上介绍的《程序设计导引及在线实践》做完了,大概有100道题,这100道题其实比较水,然后就是有什么比赛神马的都打打酱油嗯。刘汝佳的白书《算法竞赛入门经典》看完了,题没怎么做,黑书《算法艺术与信息学竞赛》没看-《算法导论》完全就是当参考书用,跟新的一样.《编程之美》看了个半吊子,《程序员而试宝典》看了一遍。我个人觉得代码这个东西,首先要手写流利,数据结构一定要精通,一般的单链表的操作、排序等等,一定要流利的写出来,然后就是不要默写书上的,耍做到自己能敲出自己的代码实现排序等等.这些都做到了才需要去看一些算法,0J上敲一些水题,看看《编程之美》的第二三部分基本就够了。个人面试经历:.研一暑期投了旧M、腾讯。旧M是通过旧M俱乐部投的,直接投的青出于蓝的暑期实习项目,通过俱乐部投的命中率很高。所以参加个什么俱乐部混混还是有点用的,学校的类似俱乐部还蛮多的,腾讯、MS、百度俱乐部等等。旧M我投了两个岗位,两个岗位我都收到了offer,但最后实验室不放人没去成嗯。面的不难,包括数据结构单链表的操作,单例模式,设计数据库等等,代眄都没写多少。腾讯是投的暑期实习,腾讯的我参加了两次笔试了,题型都是一大票选择题,然后一个程序填空,最后一个开放性的题。腾讯面的有点难度,至少对于当时的我有点难度,包括read/fread的区别,strcpy/memcpy的区别,写堆排序,求一堆字符串的共同后缀。面的不好,挂掉了。.研二暑期投了MS、腾讯、百度、人搜。MS的笔试实在太早了,我编程之美完全还没动,笔的很烂,直接没有面试机会。后来我找人给我内推了个,然后得到了个面试机会,与•个老外全英文沟通了•个小时,技术倒是问的不多,大致就是•些数据结构的设计,可。ffer给的太晚,给我电话的时候他话还没说完我就说我可能最近去不了,想拖一下这个offer,后来就弄丢了,他们招了别人。我还是蛮向往去ms体验一下的,唉可惜实验室放实习的机会太少了。百度笔试就挂了,挂的挺莫名其妙的,海笔海而全看人品,笔试题很多都是编程之美上的。腾讯面的还有点难度的,包括手写二分查找、•堆字符串的最长后缀(字典树或者后缀数组)、10w个字符串找出有相同后缀的字符数目最多的那一些(我用的哈希)、C++多重继承的虚函数内存分布、手写一个虚函数的使用例子、多线程的通信和管理、HTTP协议等。明显这次面的比研那次强太多了,基本所有问题都答上来了,和面试官相谈甚欢。可是,可是,居然挂掉了,也是莫名其妙。人搜的笔试好像是5道题吧,除了最后一道题有一点算法外,其他的还好吧,难度比不上百度的。但面试就很难了,问了包括n!尾部0的个数(编程之美有),链表的重复结点(编程之美有),一个矩阵权重边有关的dp的题,二叉树的序列化与反序列化,一个类似于最长递增子序列但比这个难的dp题(最长递增子序列编程之美有),单例模式,知道节点数求完全二叉树的最后•层的最右边•个结点的0(n)的方法,一个接电线的题(本次面试最难的一个题,搜索质量的经理面的),query结果有10亿个如何存储.人搜特别注重写代码,除了最后两个题,其余所有的题,都必须严谨的写出代码。互联网待遇的问题很透明,网上都有,很透明,我就不方便说了。写在最后:后头看看写的好乱,实在没办法,如果好好写至少上.万字,现在是实在没有这个时间,最近真蛮忙的.我互联网找工作的经历其实不多。因为我力己就经常说我现在写代码为的就是以后不写代码,互联网只是练练手保个底。说一下一个心态的问题吧,我觉得各行各业都有自己存在的意义,每一个工作都是好工作,码农们没不要自嘲,当然了,也有很多同学蛮自傲的,其实也真没必要。如果有机会的话,能出去实习就出去实习,因为•份工作,你想象的很好,实际干了不定喜欢,实习能有个保底的工作机会,也能让你看清楚你到底适合什么样的工作。不断的分析自己,找到最适合自己的发展方向。论坛上的东西可以参考,但不要全信,对于份工作,能说清楚的只有那些干了这份工作至少三年并还在做的人,所以,人脉的积累很重要,问人一定要找到这样核心的人问,其他的,要辩证的看,去伪存真,不要人云亦云,不要论坛上的人说这个好那个不好然后你就觉得对,好的工作是相对于人而言的,对于每个人都有适合他自己的好工作。百度笔经1一、算法设计1、设rand(s.t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。思路:这个使用数学中的极坐标来解决,先调用[s1,t1]随机产生一个数r,归一化后乘以半径,得到R*(r-s1)/(t1-s1),然后在调用[s2,t2]随机产生一个数a,归一化后得到角度:360*(a-s2)/(t2-s2)2、为分析用户行为,系统常需存储用户的一些query,但因query作常多,故系统不能全存,设系统每天只存m个query,现设计一个算法,对用户请求的query进行随机选择m个,请给一个方案,使得每个query被抽中的概率相等,并分析之,注意:不到最后咳U,并不知用户的总请求量。思路:如果用户查询的数量小于m,那么直接就存起来。如果用户查询的数最大于m,假设为m+i,那么在之间随机产生一个数,如果选择的是前面m条杳询进行存取,那么概率为m/(m+i),如果选择的是后面i条记录中的查询,那么用这个记录来替换前面m条查询记录的概率为m/(m+i)*(1-1/m)=(m-1)/(m+i),当查询记录量很大的时候,m/(m+i)==(m-1)/(m+i),所以每个query被抽中的概率是相等的。3、C++STL中vector的相关问题:(1),调用push_back时,其内部的内存分配是如何进行的?(2)、调用clear时,内部是如何具体实现的?若想将其内存释放,该如何操作?vector的工作原理是系统预先分配一块CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,它却不会缩小。vector为了防止大量分配连续内存的开销,保持一块默认的尺寸的内存,clear只是清数据了,未清内存,因为vector的capacity容量未变化,系统维护一个的默认值。有什么方法可以释放掠vector中占用的全部内存呢?标准的解决方法如下template<classT>voidClearVector(vector<T>&vt)(vector<T>vtTemp;veTemp.swap(vt);)事实上,vector根本就不管内存,它只是负责向内存管理框架acquire/release内存,内存管理框架如果发现内存不够了,就malloc,但是当vector释放资源的时候(比如destruct),stl根本就不调用free以减少内存,因为内存分配在stl的底层:stl假定如果你需要更多的资源就代表你以后也可能需要这么多资源(你的list,hashmap也是用这些内存),所以就没必要不停地malloc/free。如果是这个逻辑的话这可能是个trade-off一般的STL内存管理器allocator都是用内存池来管理内存的,所以某个容稻申请内存或释放内存都只是影响到内存池的剩余内存量,而不是真的把内存归还给系统。这样做一是为了避免内存碎片,二是提高了内存申请和释放的效率——不用每次都在系统内存里寻找一番.二、系统设计正常用户端每分钟最多发一个请求至服务端,服务端需做一个异常客户端行为的过滤系统,设服务器在某一刻收到客户端A的一个请求,则1分钟内的客户端任何其它请求都需要被过滤,现知每一客户端都有一个IPv6地址可作为其ID,客户端个数太多,以至于无法全部放到单台服务器的内存hash表中,现需简单设计一个系统,使用支持高效的过滤,可使用多台机器,但要求使用的机器越少越好,请将关键的设计和思想用图表和代码表现出来。三、求•个全排列函数:如p([1,2,3])输出:[123],[132],[213],[231],[321],[312]求一个组合函数。方法1:依次从字符串中取出一个字符作为最终排列的第一个字符,对剩余字符组成的字符串生成全排列,最终结果为取出的字符和剩余子串全排列的组合.优点:该方法易于理解,但无法移除重复的排列,如:s="ABA".会生成两个“AAB”。方法2:利用交换的思想,具体见实例,但该方法不如方法1容易理解。我们以:个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符be的排列。当两个字符be的排列求好之后,我们把第一个字符a和后面的b交换,得到bac,接着我们固定第一个字符b,求后面两个字符ac的排列.现在是把c放到第一位置的时候了。记住前面我们己经把原先的第个字符a和后面的b做了交换,为了保证这次c仍然是和原先处在第•位置的a交换,我们在拿c和第一个字符交换之前,先要把b和a交换回来。在交换b和a之后,再拿c和处在第一位置的a进行交换,得到cba。我们再次固定第一个字符c,求后面两个字符b、a的排列。既然我们已经知道怎么求三个字符的排列,那么固定第•个字符之后求后面两个字符的排列,就是典型的递归思路了。基于前面的分析,我们可以得到如卜的参考代码:如p([1,2,3])输出:[1b[2],[3],[1,2],[2,3]、[1,3]、[1,2,3]这两间可以用伪代码。百度笔经2第一大题:「extern"C”{}含义,应用在什么场景下?.经典设计模式写出至少两个,解释一下,最好写出伪代码.TCP连接中的wait_time含义,应用场景,好处和坏处第二大题.一个任务处理器吧,N个任务,任务之间会有依赖关系。比如A依赖B,A需要B完成之后才能开始,写出算法,找到合适的任务顺序。说明算法的时间复杂度和空间复杂度。.一个英文文本,含有字母,和","和空格。写出函数,这个函数用了找出英文文本中含有的完整句子的个数。含有至少一个字母并且以句号".”结尾的视为一个完整的句子。写出完整的代码。第二大题:系统设计题1.实时监控系统。仃很多记录,记录中含有url,时间段,ip该系统可以同时实现如卜两个查询查询一:已知时间段(精确到分钟)和某个url,求满足条件的总流量查询二:已知时间段(精确到分钟)和某个ip,求满足条件的总流最百度笔经3一、简答1、系统又很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行(1)不考虑系统并行性,设计一个函数(Task*Ptask,intTask_num)不考虑并行度,最快的方法完成所有任务。(2)考虑并行度,怎么设计typedefstruct{intID;int*child;intchild_num;}Task;提供的函数:booldoTask(inttaskID);无阻塞的运行•个任务;intwaitTask(inttimeout);返回运行完成的任务id,如果没有则返回-1:boolkillTask(inttaskID);杀死进程2、堆和栈的生命周期,内存分配性能,不同处,如果一般情况下要求1KB,偶尔需要100MB的缓存空间怎么设计?二、必答题(各种const)1、解释下面ptr含义和不同(好像是。。。。题干了大概意思是这样。下面应该没错)double*prt=&valueconstdouble*ptr=&valuedouble*constptr=&valueconstdouble*constptr=&value2、去掉const属性,例:constdoublevalue=O.Of;double*ptr=NULL;怎么才能让ptr指向value?三、算法设计1、•个•维数轴上有不同的线段,求重复最长的两个线段。例:a:1〜3b:2〜7c:2〜8最长重复是b和c2、有向带权图最短路径四、系统设计大概意思是:百度内部有一个类似cs系统的计算系统,由于大并发计算很耗资源,所有要设计一个缓存系统。c做缓存,配置2.66MHZ,3G内存,大概有1000w个查询,唯•的查询大概有500w。要缓存24小时。设计这个缓存系统的运行机制,算法等等东西。。。。。记不太清了。。。腾讯笔经1全卷100分,其中60分选择题,每题3分,40分填空题,每空4分,最后有三题编程附加题,腾讯说附加题仅作参考,不做计分排名用。选择题第题考extern的作用;第二题考strstr函数的作用;第一:题考windows卜.线程什么优先级最高;第四题考一个交换x,y值的函数的正确写法;接下来的不是很记得了,内容大概有析构函数/构造函数能不能被继承,虚函数的继承,linuxFfork的返回值,unix下进程间通信最快是采取什么方法;constint*x和int*constx的区别,int*p[4]的含义:指针的自加和引用等等。。。选择题就只记得这些了,下面说填空题;第一题是问(++x)*(++x)和(X++)*(X++)的值:第:题是给了一个二维数组a[2][3],然后定义了一个int*p[3],p=a;然后问*(*(p+1)+1)的值;第三题是一个计算变量x的二进制数里面有多少个1的程序填空题,while循环里面进行的是x=x&(x-1);第四题问inline的作用第五题问ifndef的作用第六题给了一个将链表逆序的程序,填空:填空题就这些了,卜面附加题;附加题二题:第一题是将两个己经排好序的链表合并成一个有序的链表;第:题是用0(n)的时间复杂度和0(1)的空间复杂度对二叉树进行层次遍历;第三题是一个逻辑推理题;四个人,其中一个是小偷,他们每人说了一句话,其中有三个人说真话,一个人说假话,让写代码判断哪个是小偷;腾讯笔经21、卜面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是(B)A,插入排序 B、堆排序 C、冒泡排序 D、快速排序2、以下关于Cache的叙述中,正确的是(B)A、CPU中的Cache容量应大于CPU之外的Cache容量B、Cache的设计思想是在合理成本下提高命中率C、Cache的设计目标是容量尽可能与主存容最相等D、在容量确定的情况下,替换算法的时间复杂度是影响Cache命中率的关键因素3、数据存储在磁盘上.的排列方式会影响I/。服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1--一R10存放在这个磁道上,记录的安排顺序如卜表所示:物理块12345678910逻辑记录R1R2R3R4R5R6R7R8R9R10假设磁盘的旋转速度为20ms/周,磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内,处理数据的时间为4ms(然后再读取卜,个记录),则处理这10个记录的最长时间为(C)A、180msB、200msC>204msD、220ms2+4+((2+4)+2*8)*9=2044、随着IP网络的发展,为了节省可分配的注册IP地址,有一些地址被拿出来用于私有IP地址,以卜.不属「私有IP地址范围的是(C)A、4B、8C.0D,00私有IP地址共有三个范围段:A、-55/8B.-55/12C,-55/165、卜.列关于一个类的静态成员的描述中,不正确的是(D)A、该类的对象共享其静态成员变量的值B、静态成员变地可被该类的所仃方法访问c、该类的静态方法只能访问该类的静态成员变量D、该类的静态数据成员变量的值不可修改6、已知I•个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散歹ij地址,并散列存储在散列表A【。….6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均杳找长度为(C)A、1.5B,1.7C、2.0D、2.37、表达式“X=A+B*(C--D)/E”的后缀表示形式可以为(C)A、XAB+CDE/-*=B,XA+BC-DE/*=C、XABCD-*E/+=D,XABCDE+7=8、(B)设计模式将抽象部分与它的实现部分相分离。A、Singleton(单例)B,Bridge(桥接)C、Composite(组合)D、Facade(外观)10、C++将父类的析构函数定义为虚函数,下列正确的是哪个?A、释放父类指针时能正确释放子类对象B、释放子类指针时能正确释放父类对象C、这样做是错误的D、以上全错C++的多态肯定是使用父类的指针指向子类的对象,所以肯定是释放子类的对象,如果不使用虚函数的话,父类的指针就只能够释放父类的对象。11、卜.列哪一个不属于关系数据库的特点?A、数据冗余度小B、数据独立性高C、数据共享性好D、多用户访问13、typedefchar*String_t;和#defineString_dchar*这两句在使用上有什么区别?答:typedefchar,String_t定义了•个新的类型别名,有类型检查。而#defineString_dchar*只是做了个简单的替换,无类型检查,前者在编译的时候处理,后者在预编译的时候处理。同时定义多个变量的时候有区别,主要区别在于这种使用方式String」a,b;String_dc,d;a,b,c都是char*类型,而d为char类型由于typedef还要做类型检查。。#define没有.。所以typedef比#define安全。。14,到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?15、题目:已知rand7()可以产生1~7的7个数(均匀概率),利用rand7()产生rand10()1~10(均匀概率)记住这道题重点是:均匀概率16、给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。17、对一个正整数作如下操作:如果是偶数则除以2,如果是奇数则加1,如此进行直到1时操作停止,求经过9次操作变为1的数有多少个?第9次操作:结果1由2产生。1个被操作数8:结果2只能由4产生•1个被操作数7:结果4由8、3产生。2个6:结果8由16、7产生;结果3由6产生。共3个5:结果16由32、15产生;结果7由14产生;结果6由12、5产生。共5个…每次操作,偶数(2除外)都由该数减1和该数的2倍得来,奇数只由该数的2倍得来各次操作的操作对象个数为:1,1,2,3,5,8,13,21,34

本题可以通过所给的变换规律,由易到难,确定操作可变为1的数组成斐波拉契数列,再根据所发现的规律求出经过9次操作变为1的数的个数。算法编程题:1、给定一个字符串,求出其最长的重复子串。思路:使用后缀数组,对一个字符串生成相应的后缀数组后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。这样的时间复杂度为:生成后缀数组0(N)排序O(NlogN*N)最后面的N是因为字符串比较也是O(N)依次检测相邻的两个字符串0(N*N)总的时间复杂度是O(N"2*logN).腾讯笔经3一.单选题(每题4分,15题,共60分).考虑函数原型voidhello(inta,intb=7,char*pszC="*"),下面的函数调用钟,属于不合法调用的是:Ahello(5)B.hello(5,8)C.hello(6,"#") D.hello(0,0,"#").下面有关重载函数的说法中正确的是:A.重载函数必须具有不同的返I可值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列入 D.重载函数名可以不同.分析一下程序的运行结果:#include<iostream.h>classCBase(public:CBase(){cout«MconstructingCBaseclassn«endl;}~CBase(){coutvv"destructingCBaseclassH«endl;}};classCSub:publicCBase(public:CSub(){cout«MconstructingCSubclassM«endl;}-CSub(){cout«"destructingCSubclassn«endl;});voidmain()CSubobj;constructingCSubclassconstructingCBaseclassdestructingCSubclassconstructingCBaseclassdestructingCBaseclassconstructingCSubclassdestructingCBaseclassdestructingCSubclassconstructingCSubclassconstructingCBaseclassdestructingCSubclassconstructingCBaseclassdestructingCBaseclassconstructingCSubclassdestructingCBaseclassdestructingCSubclassconstructingCBaseclassconstructingCSubclassdestructingCSubclassdestructingCBaseclassconstructingCSubclassconstructingCBaseclassdestructingCBaseclassdestructingCSubclass.在•个cpp文件里面,定义了个static类型的全局变量,下面个正确的描述是:A.只能在该cpp所在的编译模块中使用该变量B.该变量的值是不可改变的C.该变量不能在类的成员函数中引用D.这种变量只能是基本类型(如int,char)不能是C++类型.观察卜.面一段代码:classClassA{public:virtual-ClassA(){};virtualvoidFunctionA(){};);classClassB(public:virtualvoidFunctionB(){};};classClassC:publicClassA,publicClassB{public:};ClassCaObject;ClassA*pA=&aObject;ClassB*pB=&aObject;ClassC*pC=&aObject;关于pA,pB,pC的取值,下面的描述中正确的是:A.pA,pB,pC的取值相同. B.pC=pA+pBC.pA和pB不相同 D.pC不等于pA也不等于pB.参照1.5的代码,假设定义了ClassA*pA2,下面正确的代码是:A.pA2=static_cast<ClassA*>(pB);B.void*pVoid=static_cast<void*>(pB);pA2=static_cast<ClassA*>(pVoid);C.pA2=pB;D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));.参照1.5的代码,下面那一个语句是不安全的:A.deletepAB.deletepBC.deletepC.卜.列程序的运行结果为:#include<iostream.h>voidmain(){inta=2;intb=++a;cout«a/6«endl;)A.0.5B.OC0.7D.0.6666666-.有如下•段代码:#defineADD(x,y)x+yintm=3;m+=m*ADD(m,m);则m的值为:A.15B.12C.18D.58.如下是一个带权的图,图中结点A到结点D的关键路径的长度是:A.13 B.15 C.28 D.58.下面的模板声明中,正确的是:A.template<typenameT1,T2>B.template<classT1,T2>C.template<classT1,classT2>D.template<typenameT1;typenameT2>.在Windows编程中下面的说法正确的是:A.两个窗口,他们的窗口句柄可以是相同的 B.两个窗口,他们的处理函数可以是相同的C.两个窗口,他们的窗口句柄和窗口处理函数都不可以相同..下面哪种情况下,B不能隐式转换为A?A.classB:publicA{} B.classA:publicB{}C.classB{operatorA();} D.classA{A(constB&);}.某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情况下,下面描述错误的是”该防火墙能够()”.A.使公司员工只能访问Internet上与其业务联系的公司的IP地址.B.仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.C.使员工不能直接访问FTP服务器端口号为21的FTP地址.D.仅允许公司中具有某些特定IP地址的计算机可以访问外部网络.数字字符0的ASCII值为48,若有以下程序:main()(chara=,r,b=2,;printf(M%c/\b++);printK^dVn;b-a);程序运行之后的输出结果是:A.3,2 B,50,2 C.2,2 D.2,50二,填空题(共40分)本程序从正文文件textin读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出.程序中的外部函数intgetword(FILE*pFile,char*pszWordBuffer,intnBufferLen);从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无单词可读时,则返回0.#include<stdio.h>#include<malloc.h>#include<ctype.h>include<string.h>#defineSOURCE_FILEMtext.inM#defineOUTPUT_FILE"word.out"#defineMAX_WORD_LEN128typedefstructtreenode(charszWord[MAX_WORD_LEN];intnCount;structtreenode*pLeft;structtreenode*pRight;}BNODE;intgetword(FILE*pFile,char*pasWordBufferJntnBufferLen);voidbinary_tree(BNODE**ppNode,char*pszWord)(if(ppNode!=NULL&&pszWord!=NULL)(BNODE*pCurrentNode=NULL;BNODE*pMemoNode=NULL;intnStrCmpRes=0; (1);pCurrentNode=*ppNodewhile(pCurrentNode)(nStrCmpRes=strcmp(pszWord, (2) );pCurrentNode->nCountif(lnStrCmpRes)( (3) ;pCurrentNode->nCount++return;)else{ (4) ;pMemoNode=pCurrentNodepCurrentNode=nStrCmpRes>0?pCurrentNode->pRight:pCurrentNode->pLeft;)))pCurrent=newBNODE;if(pCurrentNode!=NULL)(memset(pCurrentNode,0,sizeof(BNODE));strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);pCurrentNode->nCount=1;)if(pMemoNode==NULL)( (5) ;*ppNode=pCurrentNode)elseif(nStrCmpRes>0)(pMemoNode->pRight=pCurrentNode;1else(pMemoNode->pLeft=pCurrentNode;))voidmidorder(FILE*pFile,BNODE*pNode)(if( (6) )return;!pNode||!pFilemidorder(pFile,pNode->pLeft);fprintf(pFile,"%s%d\nM,pNode->szWord,pNode->nCount);midorder(pFile,pNode->pRight);}voidmain()(FILE*pFile=NULL;BNODE*pRootNode=NULL;charszWord[MAX_WORD_LEN]={0};pFile=fopen(SOURCE_FILE,T);if(pFile==NULL)printfC'Can'topenfile%s\nM,SOURCE_FILE);return;)while(getword(pFile,szWord,MAX_WORD_LEN)==1)(binary_tree( (7) );//pRootNode,szWord)fclose(pFile);pFile=fopen(OUTPUT_FILEtHw");midorder(pFile,pRootNode);fclose(pFile);)三.附加题(每题30分,2题,共60分)1.从程序健壮性进行分析,下面的FillUserlnfo函数和Main函数分别存在什么问题?#include<iostream>#include<string>#defineMAX_NAME_LEN20structUSERINFO(intnAge;charszName[MAX_NAME_LEN];};voidFillllserlnfo(llSERINFO*parUserlnfo)(stu::coutvv”请输入用户的个数:";intnCount=0;std::cin»nCount;for(inti=0;i<nCount;i++)(std::coutvv”请输入年龄:";std::cin»parllserlnfo->nAge;std::stringstrName;std::coutvv"请输入姓名:";std::cin»strName;strcpy(parUserlnfo.szName,strName.c_str());})intmain(intargc,char*argv[])(USERINFOarUserlnfos[100]={0};FillUserlnfo(arUserlnfos);printf("Thefirstnameis:");printf(arllserlnfos[0].szName);printfC^n'*);return0;)2.假设你在编写一个使用多线程技术的程序,当程序中止运行时,需耍怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.阿里笔经1(C++)1.StuctFoo{Foo(){}Foo(int){}Voidfun(){}};intmain(){Fooa(10);(1)a.fun();⑵Foob();⑶b.fun();(4))上面的程序中哪个语句是错误的;2.struct和class的区别;3.constchar*p1="hello";Char*constp2="world";下而哪些操作是合法的:(1)p1++;(2)*p1=^^w^^;⑶p2++;(4)*p2="h";.n进制下,567*456=150216成立,则n的值是多少?.C++中不能重载的运算符是?.排序方法中元素比较次数与初始化排序无关的是哪种排序方法..intx[4]={0};inty[4]={1};则x,y的值是多少?.二分查找的理论.采取FIFO页面淘汰算法,如何计算缺页。.顺序栈的容量如何计算.文件索引结构.搜索所用的数据结构的内存,以及速度的问题.堆中的数据的存储机制.页式存储系统,如何计算分块的大小.std::vector::iterator可重载的运算符是哪些:++,>>,*(前置),==16.判断单向链表是否存在环的最佳方案是什么?17.100张多米诺骨牌1,2,3……100,第一次先把所有的基数位置的牌拿掉,第二次把剩卜•的基数位置的牌拿掉,依此类推,最后剩下的牌是哪个:(A)32,(B)64,(C)88,(D)9618.在C++中不能重栽下面的哪个运算符:(A)*(B)?:(C)::(D)delete就是指针的•大堆问题啦,什么函数指针啊,数组指针之类的sizeof()计算问题public,protected在派生或者继承之后的访问权的问题阿里笔经2(Java).Servlet中怎样控制页面在客户端的缓存策略;.执行存储过程;.JSP;.Thread.wait()可否设置超时.注释XML内容:CDATA;6.IOC;.Open-Closed原则含义:.JUnitTestCase展类中的代码:9.javax.servle.http.HttpServlet:.JDBC连接池&功能;.XMLSchema:<xs:choic>&<xs:sequence>;.领域模型;.Servlet生命周期。阿里笔经3(Java)1〜3逻辑题(就是那些有点考验你智商的或者考验你逻辑能力的题目)JAVA基础题4、抽象类与接口有什么不同?5、关于线程的题目,记不清了。算法题6、写出2乘以17效率最高的算法?7、编程题(题目太长,略)。好像还是关于JAVA的知识点8、简述final、fianlly和finalize的区别?9、简述AnrayLists和LinkedList的区别?10、在try的括号里面有return•个值,那是否还执行finally里的代码。是在return前执行还是return后执行。11、题目太长,略。设计模式题简述templates和*XXX(忘了)的区别?数据库题12、创建学生表S,课程表C,学生选课表SC。写出建表的SQL语句。13、写出返回选了全部课程的学生的SQL语句。14、写出返回至少选了5门课的学生的SQL语句。javascript题15、实现点击页面上.的一个链接,然后隐藏这个链接的javascript代码。测试知识题16、简述什么是测试驱动开发(TDD).补充题17、说说你希望从阿里巴巴得到什么。用3个名词概括。阿里笔经4两道编程题:1请用最少的额外空间将一个M*N的矩阵旋转90度,写出算法描述和类c语言程序:2完成如卜函数,给定分子和分母,输出其小数表示形式,循环节用口表示,例如给出分子:13,分母19,输出为:0.[13]阿里笔经5httD:〃/forum.Dhp?mod=viewthread&tid=696098&extra=paae%3D1&uacie=1淘宝笔经1选择填空:有六个队列,每个进程要占用其中3个,问最多有多少个进程,不会死锁。图的深度优先遍历,不考代码实现,只要知道哪些是可能的遍历顺序就行了字长为6的有符号整数的最小值考优先级1<<3+2的结果5只小白鼠吃毒药那道char*a="123"Hsizeof(a)哪些设计模式不是创建类的选项有原型外观单例工厂a桶中有5个门球10个黑球b桶中3个白球5个黑球有个人从两桶中任意拿出一个是黑球问黑球是b桶中的概率memset函数的实现补全代码是个填空题httpdnstelnetftp哪个不是用top实现的大题目:有一个交友类网站可以互加好友(1)设计数据结构(2)如果•个人没有加任何人好友也没有任何人加他好友这个人就是无效用户查找无效用户的算法尽量小的占用内存存储空间设计算法比较两个字符串大小写字母忽略字符串长度给定如果字符串超过n位就只比较n位淘宝笔经2一、单选题1、我们有很多瓶无色的液体,咒中有一瓶是由药,其它都是蒸馀水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸储水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分(C)A、5瓶B、6瓶C、31瓶D、32瓶2、若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用()存储方式最节省时间?A、单链表B、带头结点的非循环双链表C、带头节点的双循环链表D、循环链表3、如果需要对磁盘上的1000W条记录构建索引,你认为卜,面哪种数据结构来存储索引最合适?()A、HashTableB,AVL-TreeC、B-TreeD、List4、可用来检测一个web服务器是否正常工作的命令是()A、pingB、tracertC,telnetD,ftp只有C可以测试Web主机的网页服务器是否工作正常,假设该服务器的网页服务器使用的是默认端口,则可以使用命令telnethostname80来测试其是否工作。5、下面哪个操作是Windows独有的I/O技术()A、SelectB,PollC>IOCPD,EpollIPV6地址包含了()位A、16B、32C、64D,1287、数据库里建索引常用的数据结构是()A,锥发B、队列C、树D、哈希表8、在公司局域网I:ping没有涉及到的网络协议是()A、ARPB,DNSC、TCPD.ICMPDNS是将域名映射成七机的IP地址,ARP是将IP地址映射成物理地址,ICMP是报文控制协议,由路由器发送给执行ping命令的主机,而一个ping命令并不会建立一条TCP连接,故没有涉及TCP协议.二、填空题1、http属于(应用层)协议,ICMP属于(网络层)协议。2、深度为k的完全叉树至少有(2"(k-1))个结点,至多有(2Ak-1)个结点。3、字节为6位的二进制有符号整数,其最小值是(-32)。4、设有28盏灯,拟公用一个电源,则至少需有4插头的接线板数(9)个。第一个板4个口,此后每增加1个板会消耗1个原来的口,总的只增加3个口,故N个接线板能提供1+3*N个电源口。三、综合题1、有•颗结构如下的树,对其做镜像反转后如下,请写出能实现该功能的代码。注意:请勿对该树做任何假设,它不一定是平衡树,也不一定有序。1小/|\234432/|\A||/\/|\65789101098756答:以孩子、兄弟的存储结构来存储这棵树,使之成为•颗二叉树,然后对二叉树进行链表的转换。typedefstructTreeNode{intdata;structTreeNode*firstchild;structTreeNode*nextsibling;}TreeNode,*Tree;voidMirrorTree(Treeroot)(if(!root)return;if(root->firstchild)(Treep=root->firstchild;Treecur=p->nextsibling;p->nextsibling=NULL;while(cur)(Treecurnext=cur->nextsibling;cur->nextsibling=p;if(p->firstchild)MirrorTree(p);p=cur;cur=curnext;}root->firstchild=p;))intmain(void)(TreeNode*root=(TreeNode*)malloc(sizeof(TreeNode));lnit();MirrorTree(root);OutPut();)2、假设某个网站每天有超过10亿次的页面访问量,出于安全考虑,网站会记录访问客户端访问的ip地址和对应的时间,如果现在已经记录了1000亿条数据,想统计一个指定时间段内的区域ip地址访问量,那么这些数据应该按照何种方式来组织,才能尽快满足上面的统计需求呢,设计完方案后,并指出该方案的优缺点,比如在什么情况下,可能会非常慢?答:用B+树来组织,非叶子节点存储(某个时间点,页面访问量),叶子节点是访问的IP地址。这个方案的优点是杏询某个时间段内的IP访问量很快,但是要统计某个IP的访问次数或是上次访问时间就不得不遍历整个树的叶子节点。答:或者可以建立二级索引,分别是时间和地点来建立索引。四、附加题1、写出C语言的地址对齐宏ALIGN(PALGNBYTES),北中P是要对■齐的地址,ALIGNBYTES是要对齐的字节数(2的N次方),比如说:ALIGN(13,16)=16ALIGN(P,ALIGNBYTES)((void*)(((unsignedlong)P+ALIGNBYTES-1)&~(ALIGNBYTES-1)))2、在高性能服务器的代内中经常会看到类似这样的代码:typedefunion(erts_smp_rwmtx_trwmtx;bytecache_line_alignJERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];}erts_meta_main_tab_lock_t;erts_meta_main_tab_lock_tmain_tab_lock[16];请问其中用来填充的cache_line_align的作用是?3、在现代web服务系统的设计中,为了减轻源站的压力,通常采用分布式缓存技术,其原理如下图所示,前端的分配器将针对不同内容的用户请求分配给不同的缓存服务器向用户提供服务。分配器小缓存缓存…缓存服务器1服务器2...服务器n1)请问如何设置分配策略,可以保证充分利用每个缓存服务器的存储空间(每个内容只在一个缓存服务器有副本)2)当部分缓存服务监故障,或是因为系统扩容,导致缓存服务器的数量动态减少或增加时,你的分配策略是否可以保证较小的缓存文件重分配的开销,如果不能,如何改进?3)当各个缓存服务器的存储空间存在差异时(如有4个缓存服务器,存储空间比为4:9:15:7),如何改进你的策略,按照如上的比例将内容调度到缓存服务器?淘宝笔经3一共有五部分。一、选择题1、排序算法的时间复杂度与初始序列无关的是哪一种?2、考查多继承、多态性之类的概念。(问题大概是?表明•种操作可以有多个类实现之类的)3、前序遍历和中序遍历——>后续遍历4、二分插入,求比较次数。5、Cache调度算法平均命中率最高的是?6、编译原理的题目(类似中间代码的作用)7、概率题(貌似只有这7题,乂感觉漏了•题,想不起来了)二、填空题1、一个算式:两个数相乘等于一个数,问这些数几进制表示的。2、排序算法(从大到小),求比较次数。3、(C语言)看代码写结果,关于字母大小写转化的.4、(Java语言)看代码写结果,关丁++、--的利用,m++、++m等等,之后输Hlm的值。5、非递归的的二分排序,补充代码。三、简答题1、大概是淘宝有一亿会员,淘宝抽出其中100万会员给其发消息等等的,写出门已想到的抽取的方法,必须体现公平性、分散性、每个都能被抽到的可能等等2、编程。用Java或者C/C++写一个方法,实现输入字符串转化为Int型四、附加题关于数据结构和查询方法的五、不计分题作为一个热爱技术的你,说说各种之类。说说自己擅长的技术、说说自己经常使用的语言的架构、设计模式啊等等的还有什么最新的技术啊类似的淘宝笔经4选择1、二维数组按行优先存储,A[2]网的地址是1087,A[4][7]的地址是1153,请问A⑹[7]的地址是多少?2、实施软件需求时,常用工具应包括那些?(每个选项都是两个,具体的就不记得了)3,单元测试通常采用方法?4、二分法检索表用什么存储?简答5、进程模型和线程模型仃哪些优缺点程序6、二分查找的非递归算法C++部分1、下面程序运行的结果?inti=0,s=0;for(;;)(if(i==3||i==5)continue;if(i==6)break;i++;s+=i;)cout«s«endl;2、虚析构函数的作用?举例。3、什么时候调用拷贝构造函数?4、语句int*ptr;*ptr=10;有问题吗?5、inta[3][2]={1,2,3,4,5,6);int*p[3];P[0]=a[1];*(p[0]+1)指向的内容是多少?6、请写出下面语句的输出charstr1[]="abc";charstr2Q="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";cout«(str1==str2)«endl;//trueorfalsecout«(str3==str4)«endl;cout«(str5==str6)«endl;网易笔经1苜先研发的笔试是分两部分的,第•部分是30道填空和选择,第二部分是7道大题.前面的小题说是过了线就行,不参与成绩评定和排名,但是如果不过线那后边的题就不给判.只有后面的大题算笔试成绩的.然后这个笔试的最大特点就是:题量超大,我觉得除非大牛否则很难做完.反正我最后一道大题是没时间写.而且前面的小题部分考察的东西既广又深,感觉非常琐碎,所以我做的时候非常担心自己第•部分就会挂掉...不过还好没有.所以我先把第二部分几道大题发出来-:给了一个用递归实现的快排的代码,要求改写成用栈实现的二:游戏中让玩家参与抽奖,抽装备.玩家先被等概率传送到卜二个房间(对应十二星座),第i个房间中拿到装备的概率是i/50.玩家抽奖失败后可以花100金币再抽一次(第一次不用),如果抽中了则不能再抽.先是问要抽到装备平均要花多少金币;又问:玩家不喜欢传到12个不同房间的设定,现在要求只能传到一个房间,这个房间提供有12种装备,要求每种装备被抽中的概率和之前的一样.就此实现一个生成随机数的算法.三:先是给出了P,V原语及信号量的定义,然后有个场景:个水果忍者不停的往个篮子中捡水果,水果有西瓜和梨两种,篮了最多装10个水果,装了了就等待.同时鸣人和佐助分别从篮了中拿西瓜和梨吃,只要有的吃就拿,否则就等待.用PV原语写一段伪代码模拟这个过程.四:给出了跳表的结构,要求实现一个跳表上的衣询操作search(k),然后分析search的时间复杂度.最后再写一个insert。的操作.五:有N个广告牌(N<=10万)可以投放广告,有k个用户(k<10亿)在这些广告牌上投放广告.操作rent(i,j,k)将从i到j块广告牌展示用户k的广告,如果原来有别的广告就覆盖掉.操作query(i)返回第i个广告牌上现在投放的是哪个广告.rent和query操作出现的频率相等.耍求设计一个数据结构和相应的算法,尽可能快的实现这两种操作.六:给出了•段英文文献,是关于codeblock的,然后要求根据文献中给出的算法写•段代科.要用到STL.七:判定给定的字符串序列是否是人类基因片段,人类基因片段的特点是:大写字母后边跟相应小写字母,或者是小的基因片段连在一起。写函数判断。网易笔经2第•部分(必做):计算机科学基础.(单选)软件设计中模块划分应该遵循的准则是:A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合.(单选)最坏情况下时间复杂度不是n(n-1)/2的排序算法是:A.快速排序B.'Fi'泡排序C.直接插入排序D.堆排序.哈希表中解决冲突的方法通常可以分为openaddressingfnchaining两类,请分别解释这两类冲突解决方法的大致实现原理.简单的链表结构拥有很好的插入删除节点性能,但随机定位(获取链表第个节点)操作性能不佳,请你设计一种改进型的链表结构优化随机定位操作的性能,给出设计思路及其改进后随机定位操作的时间复杂度5.什么是NP问题?列举典型的NP问题(至少两个)?对于一个给定的问题你通常如何判断它是否为NP问题?6.以下是一个tree的遍历算法,queue是FIFO队列,请参考下面的tree,选择正确的输出.1/\23/\/\4567queue.push(tree.root)while(true){node=queue.pop();output(node.value);〃输出节点对应数字if(null==node)break;for(child_nodeinnode.children){queue.push(child_node);))A.1234567B.1245367C.1376254D.1327654第二部分(选作):C7C++程序设计.有三个类ABC定义如下,请确定sizeof(A)sizeof(B)sizeof(C)的大小顺序,并给出理由structA{A(){)〜A(){}intml;intm2;};structB{B(){)〜B(){}intml;charm2;staticcharm3;};structC{co{}virtuaHC(){}intml;shortm2;};.请用C++实现以下print函数,打印链表I中的所有元素,每个元素单独成一行voidprint(conststd::list<int>&l){).假设某C工程包含a.c和b.c两个文件,在a.c中定义了一个全局变量foo,在b.c中想访问这一变量时该怎么做?.C++中的new操作符通常完成两个工作,分配内存及其调用相应的构造函数初始化请问:1)如何让new操作符不分配内存,只调用构造函数?2)这样的用法有什么用?.下面这段程序的输出是什么?为什么?classA{public:A(){p();}virtualvoidp(){print("A")}virtual-A(){p();});classB{public:B(){p();}voidp(){print("B")}〜B(){p();});intmain(int,char**){A*a=newB();deletea;).什么是C++Traits?并举例说明第三部分(选作):JAVA程序设计1.(单选)以下Java程序运行的结构是:publicclassTester{publicstaticvoidmain(String[]args){Integervar1=newlnteger(1);Integervar2=var1;doSomething(var2);System.out.print(Value());System.out.print(var1==var2);publicstaticvoiddoSomething(lntegerinteger){integer=newlnteger(2);))1true2true1false2false.(单选)往OuterClass类的代码段中插入内部类声明,哪一个是正确的:publicclassOuterClass{privatefloatf=1.Of;〃插入代码到这里)A.classlnnerClass{publicstaticfloatfunc(){returnf;})B.abstractclasslnnerClass{publicabstractfloatfunc(){})C.staticclasslnnerClass{protectedstaticfloatfunc(){returnf;})D.publicclasslnnerClass

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论