阿里巴巴笔试题 2013西安地区

nash01 2013-09-14 11:00:03
下面一个题目大家谈论下。我只有30分了。。。全部拿出来。

1.一个有10亿条记录的文本文件,已按照关键字排好序存储,
请设计算法以快速的从文件中查找关键字的记录。
2填空题(8分)
当存储数据量超出单节点数据管理能力的时候,可以采用的办法是数据库
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;
}


3.(6分)两个较长的单向链表a和b,为了找出及诶单noed满足node in a
并且node in b。请设计空间使用尽量小的算法(用c/c++,java 或者伪代码)

还有很多数学方面的题目 就不发了
...全文
2807 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
小敏纸 2013-09-24
  • 打赏
  • 举报
回复
第一题先分段,例如关键字mod 1000就可以分成1000段,由于是关键字排好序的,每段中进行二分查找应该就行了吧,肯定还有更好的方法吧
xj10921092 2013-09-21
  • 打赏
  • 举报
回复
p=p mod 2^32 p=element*2654435761 2^32=4294967296 2654435761 / 4294967296 = 0.618033987是一定值 完全扯淡。 结果应该是 p mod N
lumingming 2013-09-20
  • 打赏
  • 举报
回复
引用 4 楼 YiRan_FanPeiXi11 的回复:
第二题 http://hi.baidu.com/zymill/item/350cf75057f5ab9c8c12ed8f p=p mod 2^32
帅哥能解释一下吗?是一致性hash吗?那个N没什么用吗?
hustxiaoxian 2013-09-20
  • 打赏
  • 举报
回复
我觉得第二题是 p = p%(N); p = abs(p);
nash01 2013-09-18
  • 打赏
  • 举报
回复
第一题有个思路: 1.首先10亿个记录的文本很大,不可能直接放到内存中, 所以,我想可以将10亿个数平均分段,假设分为1000段,每段100万条记录。 2.将每段的起始结尾关键字数据记录到一个数组中。 3.然后用查找用的关键字,在上面的数组中数据比较。这样就能够得到这条关键字属于哪个段。 最后在这100万条记录中查找。
huoer_gf 2013-09-18
  • 打赏
  • 举报
回复
引用 15 楼 nash01 的回复:
第一题有个思路: 1.首先10亿个记录的文本很大,不可能直接放到内存中, 所以,我想可以将10亿个数平均分段,假设分为1000段,每段100万条记录。 2.将每段的起始结尾关键字数据记录到一个数组中。 3.然后用查找用的关键字,在上面的数组中数据比较。这样就能够得到这条关键字属于哪个段。 最后在这100万条记录中查找。
分块查找吧!我一面就跪了,哎。。。。
zyrobert 2013-09-17
  • 打赏
  • 举报
回复
引用 13 楼 peng_hao1988 的回复:
[quote=引用 12 楼 zyrobert 的回复:] 好多不会的 真不知道自己当时怎么找到工作的
从事互联网的公司对算法和性能看的比较重,多看看这方面的书很容易补起来的,编程主要领悟的是思想。[/quote] 多谢大哥指点 不知大哥都看哪方面的书呢?
huoer_gf 2013-09-16
  • 打赏
  • 举报
回复
请问楼主收到面试的通知了吗?
idonot 2013-09-16
  • 打赏
  • 举报
回复
感觉还蛮难的
依然_范佩西11 2013-09-16
  • 打赏
  • 举报
回复
引用 6 楼 wangyudong211 的回复:
没高手吗? 第二题hash用乘法散列后感觉要对N取余啊。
确实是对N取余
桃园闲人 2013-09-16
  • 打赏
  • 举报
回复
引用 12 楼 zyrobert 的回复:
好多不会的 真不知道自己当时怎么找到工作的
从事互联网的公司对算法和性能看的比较重,多看看这方面的书很容易补起来的,编程主要领悟的是思想。
zyrobert 2013-09-16
  • 打赏
  • 举报
回复
好多不会的 真不知道自己当时怎么找到工作的
nash01 2013-09-16
  • 打赏
  • 举报
回复
引用 10 楼 huoer_gf 的回复:
请问楼主收到面试的通知了吗?
还没通知,感觉打的不是很好。
依然_范佩西11 2013-09-15
  • 打赏
  • 举报
回复
第二题 http://hi.baidu.com/zymill/item/350cf75057f5ab9c8c12ed8f p=p mod 2^32
huoer_gf 2013-09-15
  • 打赏
  • 举报
回复
还有一题:五个人进行比赛,分组,或为蓝队,或为红队,求至少比赛多少场可以让任意两个人之间的比赛是红对蓝 和 蓝对红? 描述的不是很好,大致是这个意思,希望大家给个结果。
依然_范佩西11 2013-09-15
  • 打赏
  • 举报
回复
求题目啊,参考下
nash01 2013-09-15
  • 打赏
  • 举报
回复
第三题 一个比较好的答案。。 我们定义节点的距离为节点到链表开始所经过的节点数。如果两个链表长度相同,则相交节点其在两个链表上的距离一定相等。对于长度不同的两个链表,我们可以采用对齐的方式,使其向长度短的链表对齐。这样就可以应用上面的思路。具体算法如下:

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),效果不错吧。
nash01 2013-09-15
  • 打赏
  • 举报
回复
引用 2 楼 YiRan_FanPeiXi11 的回复:
求题目啊,参考下
笔试题 :http://snprintf.net/archives/592
小小浣熊 2013-09-15
  • 打赏
  • 举报
回复
没高手吗? 第二题hash用乘法散列后感觉要对N取余啊。
huoer_gf 2013-09-14
  • 打赏
  • 举报
回复
坐等答案!也是今天刚考完。
阿里巴巴2010校园招聘笔试试卷 阿里巴巴公司启动2010年校园招聘行动。阿里巴巴集团日前启动了公司历史上最大规模校园招聘行动,计划今年招收应届毕业生1800名,其中技术类岗位占招聘职位的半数以上。 公司所在地杭州是阿里巴巴此次2010年校园招聘计划的第一站。9、10两个月,阿里巴巴集团2010年校园招聘会还将陆续在上海、北京、南京、广州、西安等地召开。 据悉,此次阿里巴巴校园招聘的岗位主要包括开发工程师、网站运营师、市场分析师、客户服务、销售等,主要针对计算机、金融、市场营销等专业的毕业生。 在全球性金融危机面前,阿里巴巴集团经营状况良好,今年以来旗下几家子公司业绩增长都十分迅猛。为此,2009年阿里巴巴集团已经逆市扩招了5000名员工。 本文来自大学生就业网|大学生就业资讯网-专注中国大学生就业问题, 招聘职位:   技术类   研发工程师_Java方向   研发工程师_C/C++方向   需求分析工程师   软件测试工程师   测试开发工程师   软件过程改进工程师   软件配置管理工程师   监控工程师   应用运维工程师   算法研发工程师_搜索与广告方向   市场机制研究员   数据仓库研发工程师_数据库方向   数据仓库研究员   网站类   产品经理助理   数据分析助理   网站运营专员   产品规划师   交互设计师   视觉设计师   前端开发工程师   数据分析师   市场分析师   客户关系专员(国际网站)   客户关系专员-Marketing   招聘流程:   在线投递简历→简历筛选→校园宣讲→笔试→面试→offer→录用

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧