您的位置:首页 > 其它

大众点评2015笔试题(答案)

2015-09-16 21:42 246 查看
1、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。

答案:1)遍历10个文件的每个query,取t = hash(query)%10,将这个query存入第t个文件。这一步结果将相同query保存至同一个文件中,并且每个文件的大小约为1g

2)分别对每个文件,找出每个query的个数,使用hashmap(query,query_count),遍历文件query,查找map,query_count自增1

3)对每个文件,每个query进行排序,可以用快排或者堆排序

4)利用归并排序思想,对10个文件归并,就是取10个文件的堆顶最大,比较,然后输出最大的

2、点评在和第三方网站合作的过程中,需要在由点评页面跳转到对方页面的链接中加入信息来记录点评自己的一些信息,例如用户信息(包括id和识别串)、平台(PC、WAP、APP等)、访问时间等,但是对方只能保留一个由大写字母和数字组成的字符串(长度小于等于128个字符,越短越好)来标识这样一次访问,之后会将该字符串回传给点评。请为这个需求设计一对加密解密函数,函数原型如下:

struct DianPingInfo {

uint_32 userId, string userString, //长度为32,由大小写字母和数字组成

Date viewTime, //精确到秒

uint_8 platform

};

string encode(uinit_32 userId, string userString, Date viewTime, short platform);

DianPingInfo decode(string);

答案:最简单的方法,使用0做为转义字符,uint_32最大转换为10进制也就8位,date算年月日,时分秒,总共数字是14位,uint_8最长算4位,string总共是32,也就是结构体总共是8+14+4+32=58,使用转义一个字符会变成两位,所以最大58*2=116满足要求,现在使用00表示0,0A表示a。。。0X表示x,01表示分隔符,编码即可

再复杂一点的比如 一个字节是'a' ASCII码为0x61,二进制为01100001,拆分为两个4bit为0110和0001,然后都加上'A',就编码成为了G和B。

3、场景:

考察目的:linux文件系统

管理员有一台普通的pc 机器,已安装linux操作系统(如:centos 6.5)。管理员告诉你,在 /data 目录下 只有1个100MB 大小的文件。他要求你找到这个文件并将它拷贝到 /home 目录下。

问题:

1,由于不知道文件名,只知道文件大小。你能通过使用哪些 linux工具去找到这个文件?

2,找到该文件后,使用什么linux 命令去完成文件拷贝?

3,进行拷贝操作时,系统提示:没有权限。你需要检查哪些地方?

4,进行拷贝时,系统提示:磁盘满,无法写入。你需要使用什么linux命令,检查哪些地方?

5,你估计完成这个文件拷贝需要多长时间?写出你认为对拷贝时间影响比较大的因素,越多越好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: