阿里巴巴2014秋季校园招聘-软件研发工程师笔试题 续
2013-09-21 23:32
696 查看
第三部分
25、某二叉树的前序遍历序列为-+a*b-cd/ef,后序遍历序列为abcd-*+ef/-,问其中序遍历序列是——。
答案:a+b*c-d-e/f
26、某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候1,5,1,3,2,4,1,2出现缓存命中的次数是——。最后缓存中即将准备淘汰的数据项是——。
答案:3,3
解释:(LRU是Least Recently Used 近期最少使用算法。)1-》1,5-》5,1-》5,1,3-》5,1,3,2-》1,3,2,4-》3,2,4,1-》3,4,1,2-》
首先1调入内存,然后5调入内存,然后1调入内存(命中缓存),然后3调入内存,然后2调入内存,然后4调入内存(将最少使用的5置换出内存),然后1调入内存(命中缓存),然后2调入内存(命中缓存)。最后,最少使用的3将面临被置换出的危险。
27、两个较长的单向链表a和b,为了找出及诶单noed满足node in a并且node in b。请设计空间使用尽量小的算法(用c/c++,java 或者伪代码)
算法的空间复杂度O(1),时间复杂度O(m+n)。
28、当存储数据量超出单节点数据管理能力的时候,可以采用的办法有数据库sharding的解决方案,也就是按照一定的规律把数据分散存储在多个数据管理节点N中(节点编号为0,1,2,,,,N-1)。假设存储的数据时a 请完成为数据a计算存储节点的程序。
答案:p%=N
29、宿舍内5个同学一起玩对战游戏。每场比赛有一些人作为红方,另一些人作为蓝方。请问至少需要多少场比赛,才能使任意两个人之间有一场红方对蓝方和蓝方对红方的比赛?
答案:4场,分别是AB-CDE、ACD-BE、BCE-AD、DE-ABC
25、某二叉树的前序遍历序列为-+a*b-cd/ef,后序遍历序列为abcd-*+ef/-,问其中序遍历序列是——。
答案:a+b*c-d-e/f
26、某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候1,5,1,3,2,4,1,2出现缓存命中的次数是——。最后缓存中即将准备淘汰的数据项是——。
答案:3,3
解释:(LRU是Least Recently Used 近期最少使用算法。)1-》1,5-》5,1-》5,1,3-》5,1,3,2-》1,3,2,4-》3,2,4,1-》3,4,1,2-》
首先1调入内存,然后5调入内存,然后1调入内存(命中缓存),然后3调入内存,然后2调入内存,然后4调入内存(将最少使用的5置换出内存),然后1调入内存(命中缓存),然后2调入内存(命中缓存)。最后,最少使用的3将面临被置换出的危险。
27、两个较长的单向链表a和b,为了找出及诶单noed满足node in a并且node in b。请设计空间使用尽量小的算法(用c/c++,java 或者伪代码)
struct node { int v; node *next; }; /* 返回链表的长度 链表为空 返回0 */ size_t listLen(node * p) { size_t num = 0; while (p!=NULL) { num++; p = p->next; } return num; } // 如果找到了 则返回指针 指向公共节点 // 如果不存在 则返回空指针 node * findFirstCommenNode(node * pheada, node * pheadb) { size_t lenA = listLen(pheada); size_t lenB = listLen(pheadb); node * plistA = pheada; node * plistB = pheadb; //调整长度 //plistA 指向较长的一个 if (lenA < lenB) { plistB = pheada; plistA = pheadb; size_t t = lenA; lenA = lenB; lenB = t; } while(lenA > lenB) { plistA = plistA->next; --lenA; } //一样长了 //寻找公共节点 while (plistA!=NULL && plistA != plistB) { plistA = plistA->next; plistB = plistB->next; } return plistA; }
算法的空间复杂度O(1),时间复杂度O(m+n)。
28、当存储数据量超出单节点数据管理能力的时候,可以采用的办法有数据库sharding的解决方案,也就是按照一定的规律把数据分散存储在多个数据管理节点N中(节点编号为0,1,2,,,,N-1)。假设存储的数据时a 请完成为数据a计算存储节点的程序。
#define N 5 int hash(int element){ return element*2654435761; } int shardingIndex(int a){ int p = hash(a); _________________________; //这里是空格 return p; }
答案:p%=N
29、宿舍内5个同学一起玩对战游戏。每场比赛有一些人作为红方,另一些人作为蓝方。请问至少需要多少场比赛,才能使任意两个人之间有一场红方对蓝方和蓝方对红方的比赛?
答案:4场,分别是AB-CDE、ACD-BE、BCE-AD、DE-ABC
相关文章推荐
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 2014阿里巴巴秋季校园招聘-软件研发工程师笔试题/面试问题收集
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题
- 笔试面试(2)阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解(转)
- 笔试面试(2)阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
- 百度2014秋季校园招聘-软件研发工程师笔试题(2013年10月13日北京清华站)
- 百度2014秋季校园招聘-软件研发工程师笔试题(2013年9月20日山东济南站)
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- 2014阿里巴巴校园招聘研发工程师笔试题(北邮站)
- 2014年阿里巴巴校园招聘-软件研发工程师笔试题
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- 2014阿里巴巴校园招聘研发工程师笔试题(北邮站)
- 阿里巴巴2014校园招聘笔试题(成都站,软件研发岗)——2014.09.22
- 百度2014校园招聘 软件研发工程师 笔试题
- 2014阿里巴巴校园招聘笔试题-----研发工程师
- 百度 2014 校园招聘 软件研发工程师 笔试题(天津站)