阿里巴巴面试题,rpc请求保序接收算法

分布式系统中的RPC请求经常出现乱序的情况。

写一个算法来将一个乱序的序列保序输出。例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:

1

2

3, 4, 5

6

7, 8, 9, 10

上述例子中,3到来的时候会发现4,5已经在了。因此将已经满足顺序的整个序列(3, 4, 5)输出为一行。

要求:

1. 写一个高效的算法完成上述功能,实现要尽可能的健壮、易于维护

2. 为该算法设计并实现单元测试

#include <iostream>
#include <set>
#include <stdlib.h>
using namespace std;

void out_by_order(int input[], int n)
{
	set<int> id_set;
	int m = 1;
	for(int i = 0; i < n; i++)
	{
		if(input[i] == m)
		{
			cout<<m;
			id_set.erase(m);
			while(1)
			{
				if(id_set.find(++m) != id_set.end())
				{
					cout<<','<<m;
				}
				else
				{
					cout<<endl;
					break;
				}
			}
		}
		else
		{
			id_set.insert(input[i]);
		}
	}
}

void test(int a[], int n)
{
	srand(time(NULL));
	set<int> t;
	for(int i = 0; i < n; i++)
	{
		while(1)
		{
			int rand_id = rand() % n + 1;
			if(t.find(rand_id) == t.end())
			{
				a[i] = rand_id;
				t.insert(a[i]);
				break;
			}
		}
	}
	cout<<"input:(";
	for(int j = 0; j < n; j++)
	{
		if(j == n-1)
		{
			cout<<a[j];
		}
		else
		{
			cout<<a[j]<<',';
		}
	}
	cout<<")"<<endl;
	out_by_order(a, 10);
}

int main(int agrc, char *argv[])
{
	int a[10] = {1, 2, 5, 8, 10, 4, 3, 6, 9, 7};
	out_by_order(a, 10);
	cout<<endl;
	cout<<"test"<<endl;

	test(a, 10);
}
时间: 2024-08-06 20:28:08

阿里巴巴面试题,rpc请求保序接收算法的相关文章

阿里 附加题 分布式RPC请求乱序

分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 ? ? 上述例子中,3到来的时候会发现4,5已经在了.因此将已经满足顺序的整个序列(3, 4, 5)输出为一行. ? ? 要求: 1. 写一个高效的算法完成上述功能,实现要尽可能的健壮.易于维护 2. 为该算法设计并实现单元测试 ? ? 用bitset

Spark机器学习(3):保序回归算法

保序回归即给定了一个无序的数字序列,通过修改其中元素的值,得到一个非递减的数字序列,要求是使得误差(预测值和实际值差的平方)最小.比如在动物身上实验某种药物,使用了不同的剂量,按理说剂量越大,有效的比例就应该越高,但是如果发现了剂量大反而有效率降低了,这个时候就只有把无序的两个元素合并了,重新计算有效率,直到计算出来的有效率不大于比下一个元素的有效率. MLlib使用的是PAVA(Pool Adjacent Violators Algorithm)算法,并且是分布式的PAVA算法.首先在每个分区

阿里巴巴 2015 实习笔试题 分布式系统中的RPC请求经常出现乱序的情况 写一个算法来将一个乱序的序列保序输出

分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 上述例子中,3到来的时候会发现4,5已经在了.因此将已经满足顺序的整个序列(3, 4, 5)输出为一行. 要求: 1. 写一个高效的算法完成上述功能,实现要尽可能的健壮.易于维护 2. 为该算法设计并实现单元测试 貌似效率不是很高,有时间的时候改进下.

2015-4-2的阿里巴巴笔试题:乱序的序列保序输出(bit数组实现hash)

分布式系统中的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 #include<stdio.h> 2 3 int main() 4 { 5 int num ; 6 while(scanf("%d"

乱序序列保序输出

题目: http://blog.csdn.net/michael_kong_nju/article/details/44851495 这是一家互联网公司的笔试题,好像没有说保密协议,应该是可以公开的,我也来贡献一下自己的思路和代码. 分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 上述例子中,3到来的

Linux内核RPC请求过程

这篇文章讲讲server端RPC报文的处理流程.server端RPC报文的处理函数是svc_process,这个函数位于net/sunrpc/svc.c中.这个函数须要一个svc_rqst结构的指针作为參数,svc_rqst是与RPC请求相关的一个数据结构,这里包括了接收到的RPC消息,RPC消息的解析结果也放在这个数据结构中,RPC消息的处理结果也放在这个消息中了.这个数据结构的定义在include/linux/sunrpc/svc.h.因为我主要想解说NFS,所以非常多RPC的知识就略过不讲

阿里最全面试100题:阿里天猫、蚂蚁金服、阿里巴巴面试题含答案

[阿里天猫.蚂蚁.钉钉面试题目] 1.微信红包怎么实现. 2.海量数据分析. 3.测试职位问的线程安全和非线程安全. 4.HTTP2.0.thrift. 5.面试电话沟通可能先让自我介绍. 6.分布式事务一致性. 7.nio的底层实现. 8.jvm基础是必问的,jvm GC原理,JVM怎么回收内存. 9.Java是什么. 10.API接口与SDI接口的区别(API是提供给别人的接口). 11.dubbo如何一条链接并发多个调用.Dubbo的原理,序列化相关问题. 12.用过哪些中间件. 13.做

2019阿里巴巴面试题集锦(有答案哦),收藏!

来源商业新知网,原标题:[收藏]2019阿里巴巴面试题集锦(含答案) [导读] 本文是阿里巴巴 2019 面试题集锦(含答案),是阿里巴巴自身技术专家们结合多年的工作.面试经验总结提炼而成的面试真题.通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点. 想要入职大厂可谓是千军万马过独木桥. 要通过层层考验, 刷题 肯定是必不可少的. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑—— 阿里巴巴资深技术专家们结合多年的工作.面试经验总结提炼而成的面试真题 这一次整

scikit-learn: isotonic regression(保序回归,非常有意思,仅做知识点了解,但差点儿没用到过)

http://scikit-learn.org/stable/auto_examples/plot_isotonic_regression.html#example-plot-isotonic-regression-py 代码就不贴了,參考上面链接. 看代码,给人的直观感受类似于CART,具有分段回归的效果. 只是非常少见人用这种方法,还是推荐使用CART吧,只是了解一下思想罢了. .. 给个简单的样例: 问题描写叙述:给定一个无序数字序列y,通过改动每一个元素的值得到一个非递减序列 y' ,问