2015阿里c研发工程师在线笔试题
阿里开发工程师笔试题目

阿里开发工程师笔试题目阿里xx开发工程师笔试题目1、在网络传输数据时,经常需要将二进制数据转换为一个可打印字符串,一般用到的可打印字符集合包含64个字符,因此又称为Base64表示法,现有一个char数组长度为12,要将它表示为Base64字符串,请问Base64字符串至少需要几个char;如果char 的长度为20,则需要几个char。
2、某部门年会的时候,有个环节叫做《国王和天使》,每个人将自己的名字写在纸条上并丢入盒子中,等所有人都完成该动作后,每个人再从盒子里拿出一张小纸条,上面的人物就是自己的国王,自己就是ta的天使,如果抽到自己,就再抽一遍,直到抽到别人为止,如果用有向图来表示他们之间的关系,那么以下结论错误的是——?1、最后的结果可能是存在多个联通分支2、联通分支个数最多不超过人数的二分之一3、最后的结果可能是存在多个强联通分支4、可以用深度优先算法求得联通数5、可以用双向链表存储其结构6、遍历的复杂度是O(N)3、假设支付宝红包口令支持1到6位的数字组合,即'0','1','003'和‘999999’都是合法的'红包口令,那么总共可以有多少个合法的红包口令?4、假设某棵二叉查找树的所有键均为1到10的整数,现在我们要查找下面_是不可能是键的检查序列。
1、10,9,8,7,6,52、2,8,6,3,7,4,53、1,2,9,3,8,7,4,6,54、2,3,10,4,8,55、4,9,8,7,56、以上均正确6、设二叉树节点的线序遍历,中序遍历与后序遍历,所有叶子节点的先后顺序__?7、一个具有513个节点的二叉树,有_种可能的层高。
8、给定一个整数sum,从有N个无序元素的数组中寻找元素a,b,c,d,使得a + b + c + d = sum,最快的平均时间复杂度是_?1、O(N^2)2、O(log N)3、O(N)4、O(N^3)5、O(N^2logN)6、O(N^4)9、如下SQL数据中,_可能返回null值。
阿里巴巴测试开发工程师笔试题

1、关于无向图经常采用的存储方式及其描述错误的是____。
A、如果采用关联链表存储,那么表头节点数一般就是顶点个数B、如果采用关联链表存储,那么边表节点数一定是偶数C 如果采用关联矩阵存储,那么当边稀疏时,存储效率较低D 如果采用关联矩阵存储,那么当边稀疏时,存储效率较低E 如果采用关联矩阵存储,当节点是固定的时候,可以用二维数组来表示该关联矩阵F 如果采用关联矩阵存储,当删除某一节点,那么只需将节点对应的行全置为0即可2、假设一棵二叉查找树有5个不同的键,已知在查找时出现了最坏的情况(即查找某个键时,需要遍历树上的所有节点),那么符合条件的二叉查找树共有____种形态。
3、一张1024×640分辨率的图片,假定每个像素用16位色彩表示,用位图文件(bitmap)格式存储,则这张图片文件需要占用多大的存储空间____。
4、t1表有4笔记录,t2表有5笔记录,下列表连接的写法中,____一定会返回20笔记录。
A select * from t1 left outer join t2 on t1.c1=t2.c1;B select * from t2 left outer join t2 on t2.c1=t1.c1;C select * from t1, t2;D select * from t1 inner join t2 on t1.c1=t2.c1;E select * from t1 full outer join t2 on t1.c1=t2.c1;F 以上都不会5、一台刚刚接入互联网的WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的____。
A ARP -> DNS -> HTTPB ARP -> HTTP -> DNSC DNS -> HTTP -> ARPD DNS -> ARP -> HTTPE HTTP -> ARP -> DNSF HTTP -> DNS -> ARP6、两个市区C1和C2,其人口比率是1:3,从今年的患病统计来说,C1市区由于污染严重,患癌的概率是0.1%,而C2市的患癌概率是0.02%,现在医院接收到一位患癌病人,他是C1市区来的概率是____。
阿里校招研发工程师在线笔试题

阿里校招研发工程师在线笔试题xx阿里校招研发工程师在线笔试题、C++内存分配中说法错误的是 _____A 对于栈来说,生长方向是向上的,也就是向着内存地址增加的方向B 对于堆,大量的new/操作会造成内存空间不连续C 堆容易产生memory leakD 堆的效率比栈要低很多E 栈变量引用容易逃逸F 以上都对2、全班100个学生,老师让玩如下一个游戏:每个学生在纸上写一个1到100之间的整数(含1和100),不能参考别人写的数字,谁的数字最接近所有数字的3/4,谁就会获得100元。
下面的数字中,最糟糕的选择是 _____A 1B 2C 10D 20E 50F 803、下列正则表达式不可以匹配“.alibaba-inc.”的是_____A ^\w+\.\W+\-\w+\.\w+$B [w]{0,3}.[a-z\-]*.[a-z]+C [c-w.]{3,10}[.][c-w.][.][a]D [w][w][w][alibaba-inc]+[]+E ^\w.*$F [w]{3}.[a-z\-]{11}.[a-z]{3}4、关于UNIX系统代码段和数据段分开的目的,错误的说法有_____A 可共享正文B 可共享数据C 可重入D 可保护代码为只读E 方便编程F 更好支持内存回收策略5、下列关键字序列为堆的是 _____A 100,60,70,50,32,65B 60,70,65,50,32,100C 65,100,70,32,50,60D 70,65,100,32,50,60E 32,50,100,70,65,60F 50,100,70,65,60,326、用6块1*2的完整瓷砖,铺满2*6的地面,一共有 _____ 种不同铺法,不允许将瓷砖划分为小瓷砖。
A 13B 15 C22 D 24 E 25 F 267、设m和n都是int类型,那么一下for循环语句_____for(m=0,n=-1;n=0;m++,n++)n++;A 循环体一次也不执行B 循环体执行一次C 无限循环D 有限次循环E 循环结束判断条件不合法F 运行出错8、带头结点的单链表head为空的判断条件是 _____A head==NULLB head->next=NULLC head->next==headD head!=NULLE *head==NULLF *(head->next)==NULL9、硬币游戏:连续仍硬币,直到某一人获胜。
阿里巴巴2015年笔试题

有一个装过食盐的瓶子,容积是w,在食盐用完之后,还有一些食盐粉末(体积可以忽略)残留在瓶子壁上。
现在要把该瓶子改装糖,给你u体积的纯净水,用来清洗该瓶子。
在每次清洗之后,瓶子里会残留至少v体积的水(食盐溶液,可以忽略盐的体积)。
假设w>u>v,请问下述哪种方式使用这些纯净水,能把瓶子洗得最干净______?∙把所有的纯净水全部倒入瓶子,然后把水倒掉。
∙将纯净水平均分为两份,用每一份清水洗一遍瓶子。
∙每次注入体积为v的纯净水清洗瓶子,直到纯净水用尽。
∙每次注入体积为2v的纯净水清洗瓶子,直到纯净水用尽。
∙将用过的水重新注入瓶子,多次清洗。
∙以上方法清洗效果相同。
int main(){ fork()||fork();} 共创建几个进程:______。
∙ 1∙ 2∙ 3∙ 4∙ 5∙ 6以下属性中,______不是m阶B树特性。
∙根节点至少2子女节点∙非根节点包含的子女数j满足:┌m/2┐ - 1 <= j <= m - 1∙除根结点以外的所有内部结点度数为存储关键字总数加2 D.常用于计算机磁盘文件组织∙叶节点均位于同一层∙B+也常用于计算机磁盘文件组织使用一辆卡车运输n块单块1TB装满数据的硬盘,以时速80km/h行驶1000km 将数据运送到目的地;卡车至少运送______块硬盘才能使传输速率超1000Gbps。
∙2000∙3000∙4000∙5000∙6000∙700012321能被写成______种两个质数相加的形式。
∙0∙ 1∙ 2∙ 3∙ 4∙ 5在以下操作中,数组比线性表速度更快的是______。
∙原地逆序∙头部插入∙返回中间节点∙返回中间节点∙返回头部节点∙选择随机节点程序出错在什么阶段______?int main(void){cout<< “welcome to taobao"<<endl;}∙预处理阶段出错∙编译阶段出错∙汇编阶段出错∙链接阶段出错∙运行阶段出错∙程序运行正常以下排序方式,平均时间复杂度最差的排序是______。
阿里巴巴校园招聘笔试试题研发工程师

阿里巴巴校园招聘笔试试题研发工程师第一部分单选题(前10题,每题2分;后10题,每题3分,共50分。
选对得满分,选错倒扣1分,不选得0分)1.12345*12345 1105266261所采用的是多少进制的计算?()A、2进制B、8进制C、10进制D、16进制2. 关于HTTP协议的说明,一下哪项是错误的?()A、在CS模式下,作为一种request-response协议B、无状态,对每一个请求看成独立的C、HTTP是WWW和Email使用的协议D、HTTP响应包括数字状态码,404经常代表“PageNot Found”3. 以下程序输出结果是哪个?()char msg[] = “AAAA”;strcpy(msg, “BBB”);strcpy(msg, “CC”);strcpy(msg, “D”);printf(“%s”,msg);A、DCBAB、ABCDC、DD、A4.使用gcc默认对齐规则的情况下,下列两个数据结构的sizeof 各是多少?()struct FirstStruct{char a;uint64_t b;uint32_t c;uint32_t d;};struct SecondStruct{char a;uint32_t b;uint32_t c;};A、17,13B、24,16C、24,24D、32,165. 关于内联函数,以下哪项叙述是错误的?()A、递归函数不能定义为内联函数B、内联函数只能先定义后使用C、任何源文件,使用内联函数必须包含函数定义D、Main函数可以内联6. 执行IO时,直接调用内核异步API,内核完成IO操作后再回调用户,这种IO模式是什么?()A、BIOB、NIOC、AIOD、FIO7. 若系统中有5台打印机,有多个进程需要使用两台,规定每个进程一次仅允许申请一台,则至多允许多少个进程参与竞争,而不会发生死锁?()A、2B、3C、4D、58. 一个栈的入栈序列为abcde,则不可能的输出序列为哪个?()A、edcbaB、dceabC、decbaD、abedc9. 关于C程序运行内存空间的说法错误的是哪项?()A、全局变量,static变量位于数据区,无需应用程序分配B、局部变量的作用域是当前的函数或程序块,出作用域之后无效C、在堆上分配内存需要调用malloc函数,并且需要调用free函数释放D、递归程序的递归深度主要受限于堆的空间大小,超过大小限制程序会崩溃10. 以下关于数组说法正确的是哪项?()A、建立公用数组,在模块声明阶段用private语句B、数组设定没有上下界C、二维数组初始化时要在类型说明时给各下标变量赋予初值D、对数组元素赋予初始值时一定要标注长度说明11. 下列情况中,不能使用栈(stack)来解决问题的是哪个?()A、将数学表达式转化为后缀形式B、实现递归算法C、高级编程语言的过程调用D、操作系统分配资源(如CPU)12. 已知数据表中每个元素距其最终位置不远,为节省时间,应该采用的算法是什么?()A、直接选择排序B、堆排序C、快速排序D、直接插入排序13. Skip List是一个非常优秀的数据结构,实现简单的插入、删除、查找复杂度为(logN),当该数据结构中插入一个元素遇到最坏情况下的时间复杂度是多少?()A、O(N)B、O(logN)C、O(√N)D、O(N logN)14. 设一棵二叉树中有3个叶子结点,8个“深度”为1的结点,则该二叉树中总的节点数为多少?()A、11B、12C、13D、1415. 数据表中有10000个元素,如果仅要求求出其中最大的10个元素,采用什么算法最节省时间?()A、堆排序B、希尔排序C、快速排序D、直接选择排序16. 有A和B两路公交车,平均发车间隔分别为5分钟和10分钟。
阿里2015研发工程师笔试题

A. 19,43,40,4,79,11,76 B. 40,43,19,11,4,76,79 C. 40,43,76,79,19,11,4 D. 40,43,76,79,4,11,19 E. 40,43,76,79,11,4,19 F. 40,19,11,4,79,76,43
6、设 m 和 n 都是 int 类型,那么以下 for 循环语句,__ for(m=0,n=-1;n=0;m++,n++) n++; A.循环体一次也不执行 B.循环体执行一次 C.是无限循环 D.有限次循环 E.循环结束判断条件不合法 F.运行出错 【知识点】循环,=和==区别 n=0,条件永远为假,所以循环体一次也不会执行 【扩展】 若改为 for(m=0,n=-1;n>0;m++,n++)n++;循环体应该会执行有限次,存在溢出 的问题。 7、计算三个稠密矩阵 A、B、C 的乘积 ABC,假定三个矩阵的尺寸分别为 m*n, n*p, p*q,且 m<n<p<q,以下计算顺序效率最高的是:______?
共享冗余数据提高访问效率
【知识点】程序调优常见的途径。可参考 /articles/7490.html
I/O 密集型问题一般是硬件层面的问题,比如硬盘,它的 I/O 就摆在那 里,无论你在怎么多线程,瓶颈就在硬盘那,所以 B 的说法是不可行 的。
对于“I/O 密集型”的应用程序可以采用 I/O 效率较高的 SCSI 硬盘,或者 采用集群的方式。
研发工程师面试笔试题参考4

研发工程师面试笔试题参考研发工程师面试难吗?求职面试时,面试官一般都会问你一些问题,也可能是通过问卷的形式提问,怎么回答才是最好的呢?这里给大家分享一些研发工程师面试笔试题目,希望对大家有所帮助。
应用系统开发工程师试题一、填空题(每题2分,共30分)1、信令网分为三级结构,它们是(HSTP)、(LSTP)、(STP)。
2、在GPRS网络中,手机从(GGSN)获得IP地址。
3、GSM系统使用的频段,上行频段为(890MHZ-915MHZ)。
4、GSM中的信道分为物理信道和(逻辑信道)信道。
5、使用工具(browser)来观察中断向量表。
6、SQL 语言是一种非过程性语言,它可以(嵌入)在宿主语言中使用,也可以独立地交互式使用。
7、与二进制数100101.001101等值的十进制数是(37.203125),等值的十六进制数是(25.34)。
8、用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为(CASE)工具。
9、软件开发模型用于指导软件的开发。
演化模型是在快速开发一个(原型)的基础上,逐步演化成最终的软件。
10、一个完整的程序必须完成三个层次的过程,它们分别是编码、测试和(排错或纠错)。
11、一台计算机具有比较高的MTBF值,其含义是指(该计算机的可靠性比较高)。
12、在某应用软件的安装说明书中指出,该软件的运行环境是“Windows 98 SE”,这里的SE是指(第二版或SecondEdition)。
13、在软件质量特性中,(可靠性)是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;(安全性)是指防止对程序及数据的非授权访问的能力。
14、计算机网络中对等实体间通信时必须遵循约定的标准协议。
不同的协议有不同的功能,如:(SNMP)用于网络管理。
15、在软件开发过程中常用图作为描述工具。
DFD就是面向数据流分析方法的描述工具。
在一套分层DFD中,如果某一张图中有N个加工(process),则这张图允许有(0~N)张子图。
2015年0829阿里巴巴研发工程师笔试题

如果一个博物馆参观者到达的速率是每分钟20人,平均每个人在馆内停留20分钟,那么该博物馆至少需要容纳______人才行?全班100个学生,老师让玩如下一个游戏:每个学生在纸上写一个1到100之间的整数(含1和100),不能参考别人写的数字,谁的数字最接近所有数字的3/4,谁就会获得100元钱。
下面的数字中最糟糕的选择是:把校园中同一区域的两张不同比例尺的地图叠放在一起,并且使其中较小尺寸的地图完全在较大尺寸的地图的覆盖之下。
每张地图上都有经纬度坐标,显然,这两个坐标系并不相同。
我们把恰好重叠在一起的两个相同的坐标称之为重合点。
下面关于重合点的说法中正确的是:______?可能不存在重合点。
必然有且仅有一个重合点。
可能有无穷多个重合点。
重合点构成了一条直线。
重合点可能在小地图之外。
重合点是一小片连续的区域。
一个合法的表达式由()包围,()可以嵌套和连接,如(())()也是合法表达式;现在有6对(),它们可以组成的合法表达式的个数为______。
153064132256360若路由器接收的IP报文的目的地址不是路由器的接口IP地址,并且未匹配的路由项,则采取的策略是______。
丢掉该分组将该分组分片转发该分组将分组转发或分片将分组保留存储以上都有可能有字符序列{Q,H,C,Y,P,A,M,S,R,D,F,X},新序列{F,H,C,D,P,A,M,Q,R,S,Y,X}是下列______排序算法一趟扫描的结果。
二路归并排序快速排序步长为4的希尔排序步长为2的希尔排序冒泡排序堆排序天猫双十一有个积分换墨盒的活动,总共有50万台天猫魔盒(box),每个用户(user)可以用99个天猫积分(point)兑换一台魔盒,且每人限换一台。
请设计一套java接口并实现下单(order)逻辑。
参考(但不局限于)下面的下单逻辑:1、创建订单2、扣减用户积分3、扣减魔盒库存4、下单成功同时请回答:1、数据库表结构如何设计,有哪些表,分别有什么作用?2、下单过程中哪些地方可能成为瓶颈?如何解决或改善?3、是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?编程题给定一个query和一个text,均由小写字母组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1, 抽屉里有100个红球、100个蓝球、100个黄球、100个橙球,现在每个人过来随机抽一个球,最多___77_个人抽完之后,能保证一定集齐20个相同颜色的球。
(最坏情况)3745775048212, 如下SQL语句中,____可能返回null值。
(1) select count(*) from t1;(2) select max(col1) from t1;(3) select concat('max=',max(col1)) from t1;(1)可能,(2)和(3)不可能(2)可能,(1)和(3)不可能(3)不可能,(1)和(2)可能(1)不可能,(2)和(3)可能都不可能都可能3, 小赵和小钱二人分别从寝室和图书馆同时出发,相向而行。
过了一段时间后二人在中途相遇,小赵继续向图书馆前进,此时:若小钱继续向寝室前进,则当小赵到达图书馆时,小钱离寝室还有600米;若小钱立即折返向图书馆前进,则当小赵到达图书馆是,小钱离图书馆还有150米。
那么图书馆与寝室间的距离是____。
1300m1250m800m1050m1100m900m4, 将整数序列(7-2-4-6-3-1-5)按所示顺序构建一棵二叉排序树a(亦称二叉搜索树),之后将整数8按照二叉排序树规则插入树a中,请问插入之后的树a 中序遍历结果是____。
1-2-3-4-5-6-7-87-2-1-4-3-6-5-81-3-5-2-4-6-7-81-3-5-6-4-2-8-77-2-8-1-4-3-6-55-6-3-4-1-2-7-85, 设int a=1,x=2; 执行语句a=x>1?5*x:(x=7); 后,变量a和x的值分别是____。
a=1 x=2a=1 x=10a=5 x=7a=10 x=2a=10 x=10a=2 x=106, 给定一个整数sum,从有N个无序元素的数组中寻找元素a、b、c、d,使得 a+b+c+d =sum,最快的平均时间复杂度是____。
O(N^2)O(log N)O(N)O(N^3)O(N^2LogN)O(N^4)7, 下列选项中,识别模式与其他不一样的是____。
用户年龄分布判断:少年、青年、中年、老年医生给病人诊断发病类型投递员分拣信件消费者类型判断:高消费、一般消息、低消费出行方式判断:步行、骑车、坐车商家对商品分级8, 如果定义一种表达式结构:(+ 6 3)的值为9,(- 6 3)的值为3,(* 6 3)的值为18,(/ 6 3)的值为2;那么对于表达式(* (- 16 (* 3 2 2 )) (+ 5 (/ 6 (- 5 3))))输出的结果为___32_。
4440283224219, 某程序员开发出了一款超级智能机器人,能对任何提问给出“是”或者“不是”的答案。
现有3个这种机器人,其中有数量不定的(0到3个)机器人发生了故障。
如果正常机器人总是给出正确的答案,而故障机器人总是给出错误的答案。
每一回合只能问任意一个机器人任意一个问题,那么至少需要____回合才能确保区分出哪些机器人是正常,哪些是故障。
12345610, 关于无向图经常采用的存储方式及其描述错误的是____。
如果采用关联链表存储,那么表头节点数一般就是顶点个数如果采用关联链表存储,那么边表节点数一定是偶数如果采用关联矩阵存储,那么当边稀疏时,存储效率较低如果采用关联矩阵存储,那么当边稀疏时,存储效率较低如果采用关联矩阵存储,当节点是固定的时候,可以用二维数组来表示该关联矩阵如果采用关联矩阵存储,当删除某一节点,那么只需将节点对应的行全置为0即可11, 下列关于web页面级优化描述最正确的是____。
减少HTTP请求的次数进行资源合拼和压缩Inline images将外部脚本置于低端减少不必要的HTTP跳转以上描述都对12, 以下程序存在的问题是____。
#include <iostream>using namespace std;class cat{int age;public:cat() {age = 1;}~cat() {}void miao(void) {cout<<"Miao, my age = "<<age<<endl;} };int main(void){cat kitty;int * p = (int *)(&kitty);*p = 20;kitty.miao();return 0;}编译报错:error: ‘int cat::age’ is private运行报错:error: memory access denied程序正常运行,但输出莫名其妙的数值程序正常运行,输出“Miao, my age = 20”程序正常运行,输出“Miao, my age = 1”程序无任何输出12, 以下程序存在的问题是____。
#include <iostream>using namespace std;class cat{int age;public:cat() {age = 1;}~cat() {}void miao(void) {cout<<"Miao, my age = "<<age<<endl;} };int main(void)cat kitty;int * p = (int *)(&kitty);*p = 20;kitty.miao();return 0;}编译报错:error: ‘int cat::age’ is private运行报错:error: memory access denied程序正常运行,但输出莫名其妙的数值程序正常运行,输出“Miao, my age = 20”程序正常运行,输出“Miao, my age = 1”程序无任何输出13, A,B,C三位同学都是很聪明的同学,面试官给他们背上依次贴上了数字2,4,8,他们都能看见别人的数字但无法看见自己的数字,现在面试官告诉他们这些数字都是自然数并且构成一个等比数列,让A、B、C同学依次循环回答是否确定自己的数字是多少,每位同学的回答算作一次,经过____次有同学能准确说出自己的数字23456714, 一张1024×640分辨率的图片,假定每个像素用16位色彩表示,用位图文件(bitmap)格式存储,则这张图片文件需要占用多大的存储空间____。
40KB640KB1280KB2560KB5120KB10240KB15, 一个具有513个节点的二叉树,有___种可能的层高。
5135125045032116,小明在玩一个扔骰子游戏,每次扔出会随机等概率得到1到6的点数,现在他开始扔骰子,并把每次得到的点数累加(从0开始),如果某一次他扔完之后的累加和恰好为2015则为成功,越过2015为失败(即某次从小于2015的某个数加完后变为大于2015的某个数),小明成功的概率约为____。
1/21/63/81/57/917,已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表,至少要进行____次探测。
n-1nn+1n(n+1)n(n+1)/21+n(n+1)/2常常会有频繁申请、释放内存的需求,比如在发送网络报文时,每次都要分配内存以存储报文,等报文发送完成后又需要删除报文。
为了避免频繁的new/delete对系统带来的开销,需要实现一个通用的FreeList 机制。
使用者总是从free list中分配内存,如果存在没有使用的内存块就直接摘出来使用,如果没有的话再从系统中分配。
使用完毕后并不去直接delete该内存块,而是交给FreeList保管。
要求:1. 实现一个对固定大小内存块进行管理的通用FreeList类,给出定义和实现。
要求不能使用STL中的容器类。
定义类的接口和实现时注意通用性、健壮性和可测试性。
2. 如果该类的对象可能会被多个thread同时访问,请描述如何怎样保证线程安全。
有没有办法在保证线程安全的同时尽可能增大并发度?如果有也请描述你的思路分布式系统中的RPC请求经常出现乱序的情况。
写一个算法来将一个乱序的序列保序输出。
例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:123, 4, 567, 8, 9, 10上述例子中,3到来的时候会发现4,5已经在了。
因此将已经满足顺序的整个序列(3, 4, 5)输出为一行。
要求:1. 写一个高效的算法完成上述功能,实现要尽可能的健壮、易于维护2. 为该算法设计并实现单元测试假设这样一个场景:当很多用户并发获取服务,server端资源不足时,希望用户能够按照预先分配的配额来使用资源。
比如预先定义好user1, user2, user3的配额是20%, 30%, 50%,资源争抢时希望服务器有20%的服务能力分配给user1, 30%给user2, 50%给user3。
但是如果某个时刻只有user1的请求,server还是要把100%的服务能力分配给user1以充分利用资源;又如某个时间段只有user2/user3在访问服务,则按照30%:50%的比率来分配资源。
需要通过一个类似于队列的ManagedQueue类来封装上述功能。
入队的时候需要提供user id(32位正整数)以及用户的任务(Task)。
我们假设系统的用户数是有上限的,不会超过10个。
当队列中各个用户的请求均非空时,要求出队的task分布符合用户的配额设置。
延续上面的例子如果连续出队100次,要求user1的task有20个左右,user2的task 30个左右, user3的50个左右。
这里出队的task恰好能对应服务器的服务能力。
要求:1. 给出关键数据结构以及ManagedQueue的定义。
用户任务Task可以认为是一个已经实现的类来使用。
可以使用STL容器类。
2. 实现出队方法Dequeue(),请尽可能写健壮的代码注意:这里并不要求精确的按照比例分配任务,只要统计意义上满足预定义的配额比例就可以了。