迅雷程序员笔试试题及答案:
迅雷的两次笔试都感觉发挥不是那么好,第一笔除了最后一道题的排列组合C(mn)不知如何用C(m-1 n)加上一个数得到外,其它好像不会有问题,但最后还是挂了,说明前面的选择题有不少做错,选择题都是考些C 语法基础的东西,这些东西要重新过一遍。
第二次笔试全都是编程实现的题目,一看上去全部都会做,就是写的不好,说到底还是没有先理清整个程序的过程再动笔,越急着动笔就会越乱,时间会越不够,写出来也会很多要修改。
迅雷我如果能到面试,估计还是过不了关,听同学说面试第二轮会问些涉及windowsAPI的东西,还有问设计模式的东西,这2个东西我肯定不会了,而且到第三轮面试,主要是谈薪水和时间安排的时候,居然也有人被刷掉。。。
1.实现memcpy(void* dest,const void*src,unsigned int count)
2.合并两个链表Lsit* merge(List *l1,List*l2),合成的新链表要以data从大到小有序
3.实现字符串转换"I love thisgame"转换成"game this love I",char* convert(char* s)
4.实现一个高效率的程序(包括所需程序代码),以尽量短的时间,将用户信息表中150张按照时间hash的表(每张表的数据量为100万,数据字段包含《最近修改时间戳/username/nickname/出生地/所在地/年龄/性别/自我介绍》),转换成按照username hash的100张表。转换过程方法和过程需要考虑:
a)尽可能短的时间中断用户服务;
b)尽可能少的使用机器内存。
要求先写编程思路,再写代码,还有适当的注释
除了第一题外,都是考数据结构的,自己也是偶尔在网上做了迅雷的在线题,通过后才会去做笔试(迅雷派人到武汉来了),不过感觉应该是大三的去比较合适,自己大二还不太适合,呵呵。
当时做的时候感觉做的不太好,用STL编程太入迷了,结果很多基础的东西都没处理好,不过通过这次笔试,发现基础真的很重要。
不明白为什么招C 工程师居然不考STL,难道STL有些公司不喜欢用,迅雷网上试题考C 的东西也很少,大部分是C语言的东西(不过基础一定要好)。
现在又发现了Boost,不知道自己学的有没有用,哎,郁闷啊,难道一定要去搞Java吗,下学期有Java 的课程,还要在语言上花很多时间啊....还有算法分析与设计的课程,觉得这才是重点与难点,要加油啊。
1、选择题30道
如char a=123;
a=a|057;
printf("%d%o\n",a,a);之类
2、简答
(1) static的特点
(2)引用和指针的区别
(3)记不起来了
(4)如何使图像变得平滑
3、编程题
(1)内存复制
(2)有效管理类
(3)两数组的中位数,时间复杂度o(lg n)
附(1):
void memcpy(void* pvTo, void* pvFrom, size_t size)
{
void* pbTo = (byte*)pvTo;
void* pbFrom = (byte*)pvFrom;
ASSERT(pvTo != NULL && pvFrom != NULL); //检查输入指针的有效性
ASSERT(pbTo>=pbFrom size || pbFrom>=pbTo size);//检查两个指针指向的内存是否重叠
while(size-->0)
*pbTo == *pbFrom ;
return(pvTo);
}
void * memcpy(void *s, const void *s0, size_t n)
{
if (n != 0) {
char *s1 = s;
const char *s2 = s0;
do {
*s1 = *s2 ;
} while (--n != 0);
}
return (s);
}
各种情况包括:
1、参数是指针,检查指针是否有效
2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳出
3、读写权限检查
4、安全检查,是否会溢出
memmove考虑重叠问题
1. 给你10台机器,每个机器2个cpu,2g内存,现在已知在10亿条记录的数据库里执行一次查询需要5秒,问用什么方法能让90%的查询能在100毫秒以内返回结果。
2. 一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。
3. 一个保存有10000个URL的文本文件,删除其中相同的URL。
4. 连接两个单向链表,返回排序后的结果。
5. 将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。
6. 有一幢100层高的大楼,给你两个完全相同的玻璃围棋子。假设从某一层开始,丢下玻璃棋子就会破碎。那么怎么利用手中的两颗棋子,用一种什么样的最优策略,知道这个临界的层高呢?
7. 用c 写一个函数,如Foo(const char *str),打印出str的全排列,如abc的全排列:abc, acb, bca, dac, cab,cba
8. 求出一字符串中最长的数字串。比如as123cdf1234f,返回1234,char* FindNumber(char * out,char *in)。
迅雷笔试题 /*定义循环左移函数(我没有用左移函数)*/
{
int i,j;
char temp=str[0];
for (i=0;i str=temp;
}
void pai(char str[],int m,int n) /*定义全排列函数*/
{ int k;
void chang(char str[],int m);
if (m {
for (k=0;k<=m;k )
{
pai(str,m 1,n); /*递归调用*/
chang(str,m); /*调用左移函数*/
}
}
else printf("%s\t",str);
}
1.
include "stdio.h"
main()
{char str[]="ABCD"; /*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/ clrscr();pai(str,0,4); /*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/ getch();
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
今天在家看碟,突然接到迅雷一个电话让我去笔试。遇到两个很有意思的题目,现有奖征集第一题的答案:B1套餐一份。
1.<征集答案>给你10台机器,每个机器2个cpu,2g内存,现在已知在10亿条记录的数据库里执行一次查询需要5秒,问用什么方法能让90%的查询能在100毫秒以内返回结果。
2.一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。最后就做出这一道题目,时间复杂度为O(n!), 空间复杂度为O(n)。如果有更好的算法,还请指教。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
凭印象了:
算法题:
1.连接两个单向链表,返回排序后的结果。
2.一个保存有10000个URL的文本文件,删除其中相同的URL。
3.将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。
智力题:
1.一笔画四条直线穿过3x3的9个点。
2.国王给三个囚犯每人戴了一顶帽子,帽子不是黑色就是白色,并且告诉囚犯们谁看到其它两个人都是白帽子或者知道自己戴的是黑帽子,谁就能被释放。囚犯们能看到其它的人帽子颜色,但是看不到自己的帽子颜色。过了一段时间,三个囚犯都没有说话,其中一个聪明的囚犯立刻肯定自己戴的是黑帽子,你知道为什么吗?
3.有16个硬币,A和B轮流拿,每次拿的个数只能是1,2,4之一,谁最后拿谁就输。问可以保证赢吗?
上机题:
nxn的方格,去掉一条对角线的两个对角,余下部分用面积为2的矩形覆盖,即1x2或2x1的矩形,结果是不可能完全覆盖,请编程枚举所有的覆盖情况
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
一个猴子,身带100个香蕉,他距离家50米. 这个猴子要带香蕉回去.但是他一次最多只能背50个香蕉.
而且,每走一米他就要吃掉一个香蕉(往回走也要吃香蕉).
问:这个猴子最后最多可以带多少个香蕉到家.
能不能推广到其他情况,例如500个香蕉100米?
、、、、、、、、、、、、、、、、、、、、、、、、、、、
3 人戴 5 个帽子,三蓝两红,自己看不到自己的帽子,只能看到别人的.提问时,前两个人都说不知道自己什么颜色,第三个人居然知道.
我没看到原题, 不过我觉得这道题应该有一个漏掉的说明: 每人只能戴1顶帽子. 否则,这道题目就挺繁琐了. 另外, 题目要问的可能是: 这三个人分别戴了什么颜色的帽子?
我的解(从第1个人到第3个人):
1. 蓝, 蓝, 蓝
2. 红, 红, 蓝
3. 蓝, 红, 蓝
4. 红, 蓝, 蓝
另外, 如果考虑每个人至少戴1顶帽子, 最多3顶帽子的话, 还要加上如下情况:
1. (红, 蓝), (红, 蓝), 蓝
2. (红, 蓝), 红, 蓝
3. (红, 蓝), 蓝, 蓝
4. 红, (红, 蓝), 蓝
5. 蓝, (红, 蓝), 蓝
一. 有n个文件的长度记载在一个无符号64位整数数组中unsigned__int64 file_length[n],把这n 个文件从逻辑上按序首尾拼接在一起形成一个逻辑上的大文件,然后以每块长度为unsigned block_length把这个逻辑上的大文件划分成大小相等的数据块(当然,最后一块有可能比block_length小),请定义和实现一个函数,把边界块的序号集合返回给函数的调用者(第一个数据块序号为0)。
注:边界块指的是跨多个文件的数据块。(30分)
二. 请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。
struct list
{
int value;
list* next;
};
list * merge (list *list1_head, list*list2_head);
(30分)
三. 如果两个英文单词,组成它们的字符集合相同,而且相同字符出现的次数也相同,则称这两个词匹配:比如说:同”abbc”与词 ”babc”是匹配的。有一个词典,存储在字符串数组const char* dictionary[n]中,数组的每一个元素是一个词。对于任意给出的句子。句子中的单词使用空格分割。请实现以下函数,判断句子中是否有词和词典中的词匹配。
bool is_matching( const char* dictionary[],int n, const char* sentence);
(40分)
此内容来自www.mian4.com 面试网 原文链接:http://www.mian4.com/pt.html
第二次笔试全都是编程实现的题目,一看上去全部都会做,就是写的不好,说到底还是没有先理清整个程序的过程再动笔,越急着动笔就会越乱,时间会越不够,写出来也会很多要修改。
迅雷我如果能到面试,估计还是过不了关,听同学说面试第二轮会问些涉及windowsAPI的东西,还有问设计模式的东西,这2个东西我肯定不会了,而且到第三轮面试,主要是谈薪水和时间安排的时候,居然也有人被刷掉。。。
1.实现memcpy(void* dest,const void*src,unsigned int count)
2.合并两个链表Lsit* merge(List *l1,List*l2),合成的新链表要以data从大到小有序
3.实现字符串转换"I love thisgame"转换成"game this love I",char* convert(char* s)
4.实现一个高效率的程序(包括所需程序代码),以尽量短的时间,将用户信息表中150张按照时间hash的表(每张表的数据量为100万,数据字段包含《最近修改时间戳/username/nickname/出生地/所在地/年龄/性别/自我介绍》),转换成按照username hash的100张表。转换过程方法和过程需要考虑:
a)尽可能短的时间中断用户服务;
b)尽可能少的使用机器内存。
要求先写编程思路,再写代码,还有适当的注释
除了第一题外,都是考数据结构的,自己也是偶尔在网上做了迅雷的在线题,通过后才会去做笔试(迅雷派人到武汉来了),不过感觉应该是大三的去比较合适,自己大二还不太适合,呵呵。
当时做的时候感觉做的不太好,用STL编程太入迷了,结果很多基础的东西都没处理好,不过通过这次笔试,发现基础真的很重要。
不明白为什么招C 工程师居然不考STL,难道STL有些公司不喜欢用,迅雷网上试题考C 的东西也很少,大部分是C语言的东西(不过基础一定要好)。
现在又发现了Boost,不知道自己学的有没有用,哎,郁闷啊,难道一定要去搞Java吗,下学期有Java 的课程,还要在语言上花很多时间啊....还有算法分析与设计的课程,觉得这才是重点与难点,要加油啊。
1、选择题30道
如char a=123;
a=a|057;
printf("%d%o\n",a,a);之类
2、简答
(1) static的特点
(2)引用和指针的区别
(3)记不起来了
(4)如何使图像变得平滑
3、编程题
(1)内存复制
(2)有效管理类
(3)两数组的中位数,时间复杂度o(lg n)
附(1):
void memcpy(void* pvTo, void* pvFrom, size_t size)
{
void* pbTo = (byte*)pvTo;
void* pbFrom = (byte*)pvFrom;
ASSERT(pvTo != NULL && pvFrom != NULL); //检查输入指针的有效性
ASSERT(pbTo>=pbFrom size || pbFrom>=pbTo size);//检查两个指针指向的内存是否重叠
while(size-->0)
*pbTo == *pbFrom ;
return(pvTo);
}
void * memcpy(void *s, const void *s0, size_t n)
{
if (n != 0) {
char *s1 = s;
const char *s2 = s0;
do {
*s1 = *s2 ;
} while (--n != 0);
}
return (s);
}
各种情况包括:
1、参数是指针,检查指针是否有效
2、检查复制的源目标和目的地是否为同一个,若为同一个,则直接跳出
3、读写权限检查
4、安全检查,是否会溢出
memmove考虑重叠问题
1. 给你10台机器,每个机器2个cpu,2g内存,现在已知在10亿条记录的数据库里执行一次查询需要5秒,问用什么方法能让90%的查询能在100毫秒以内返回结果。
2. 一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。
3. 一个保存有10000个URL的文本文件,删除其中相同的URL。
4. 连接两个单向链表,返回排序后的结果。
5. 将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。
6. 有一幢100层高的大楼,给你两个完全相同的玻璃围棋子。假设从某一层开始,丢下玻璃棋子就会破碎。那么怎么利用手中的两颗棋子,用一种什么样的最优策略,知道这个临界的层高呢?
7. 用c 写一个函数,如Foo(const char *str),打印出str的全排列,如abc的全排列:abc, acb, bca, dac, cab,cba
8. 求出一字符串中最长的数字串。比如as123cdf1234f,返回1234,char* FindNumber(char * out,char *in)。
迅雷笔试题 /*定义循环左移函数(我没有用左移函数)*/
{
int i,j;
char temp=str[0];
for (i=0;i
}
void pai(char str[],int m,int n) /*定义全排列函数*/
{ int k;
void chang(char str[],int m);
if (m
for (k=0;k<=m;k )
{
pai(str,m 1,n); /*递归调用*/
chang(str,m); /*调用左移函数*/
}
}
else printf("%s\t",str);
}
1.
include "stdio.h"
main()
{char str[]="ABCD"; /*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/ clrscr();pai(str,0,4); /*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/ getch();
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
今天在家看碟,突然接到迅雷一个电话让我去笔试。遇到两个很有意思的题目,现有奖征集第一题的答案:B1套餐一份。
1.<征集答案>给你10台机器,每个机器2个cpu,2g内存,现在已知在10亿条记录的数据库里执行一次查询需要5秒,问用什么方法能让90%的查询能在100毫秒以内返回结果。
2.一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。最后就做出这一道题目,时间复杂度为O(n!), 空间复杂度为O(n)。如果有更好的算法,还请指教。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
凭印象了:
算法题:
1.连接两个单向链表,返回排序后的结果。
2.一个保存有10000个URL的文本文件,删除其中相同的URL。
3.将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。
智力题:
1.一笔画四条直线穿过3x3的9个点。
2.国王给三个囚犯每人戴了一顶帽子,帽子不是黑色就是白色,并且告诉囚犯们谁看到其它两个人都是白帽子或者知道自己戴的是黑帽子,谁就能被释放。囚犯们能看到其它的人帽子颜色,但是看不到自己的帽子颜色。过了一段时间,三个囚犯都没有说话,其中一个聪明的囚犯立刻肯定自己戴的是黑帽子,你知道为什么吗?
3.有16个硬币,A和B轮流拿,每次拿的个数只能是1,2,4之一,谁最后拿谁就输。问可以保证赢吗?
上机题:
nxn的方格,去掉一条对角线的两个对角,余下部分用面积为2的矩形覆盖,即1x2或2x1的矩形,结果是不可能完全覆盖,请编程枚举所有的覆盖情况
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
一个猴子,身带100个香蕉,他距离家50米. 这个猴子要带香蕉回去.但是他一次最多只能背50个香蕉.
而且,每走一米他就要吃掉一个香蕉(往回走也要吃香蕉).
问:这个猴子最后最多可以带多少个香蕉到家.
能不能推广到其他情况,例如500个香蕉100米?
、、、、、、、、、、、、、、、、、、、、、、、、、、、
3 人戴 5 个帽子,三蓝两红,自己看不到自己的帽子,只能看到别人的.提问时,前两个人都说不知道自己什么颜色,第三个人居然知道.
我没看到原题, 不过我觉得这道题应该有一个漏掉的说明: 每人只能戴1顶帽子. 否则,这道题目就挺繁琐了. 另外, 题目要问的可能是: 这三个人分别戴了什么颜色的帽子?
我的解(从第1个人到第3个人):
1. 蓝, 蓝, 蓝
2. 红, 红, 蓝
3. 蓝, 红, 蓝
4. 红, 蓝, 蓝
另外, 如果考虑每个人至少戴1顶帽子, 最多3顶帽子的话, 还要加上如下情况:
1. (红, 蓝), (红, 蓝), 蓝
2. (红, 蓝), 红, 蓝
3. (红, 蓝), 蓝, 蓝
4. 红, (红, 蓝), 蓝
5. 蓝, (红, 蓝), 蓝
一. 有n个文件的长度记载在一个无符号64位整数数组中unsigned__int64 file_length[n],把这n 个文件从逻辑上按序首尾拼接在一起形成一个逻辑上的大文件,然后以每块长度为unsigned block_length把这个逻辑上的大文件划分成大小相等的数据块(当然,最后一块有可能比block_length小),请定义和实现一个函数,把边界块的序号集合返回给函数的调用者(第一个数据块序号为0)。
注:边界块指的是跨多个文件的数据块。(30分)
二. 请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。
struct list
{
int value;
list* next;
};
list * merge (list *list1_head, list*list2_head);
(30分)
三. 如果两个英文单词,组成它们的字符集合相同,而且相同字符出现的次数也相同,则称这两个词匹配:比如说:同”abbc”与词 ”babc”是匹配的。有一个词典,存储在字符串数组const char* dictionary[n]中,数组的每一个元素是一个词。对于任意给出的句子。句子中的单词使用空格分割。请实现以下函数,判断句子中是否有词和词典中的词匹配。
bool is_matching( const char* dictionary[],int n, const char* sentence);
(40分)
此内容来自www.mian4.com 面试网 原文链接:http://www.mian4.com/pt.html
以下是网友对迅雷程序员笔试试题及答案的回答:
报歉,目前还没有相关答案。我来抢答案?
- 当前共有0条记录,每页0条,当前0/0页
- 上一页
- 下一页
最新更新笔试更多..
湖北成教网 武汉纺织大学成教
武汉轻工大学成教
湖北师范大学成教
武汉工程大学成教
长江大学成教
湖北科技学院成教
荆州教育学院成教
荆楚理工学院成教
湖北开放职业学院成教
湖北中医药高等专科学校成教
湖北理工学院成教
荆州理工职业学院成教
湖北国土资源职业学院成教
中南财经政法大学成教
武汉大学成教
武汉理工大学成教
武汉科技大学成教
华中农业大学成教
湖北工业大学成教
湖北中医药大学成教
武汉成人高考网
孝感成人高考网
荆州成人高考网
咸宁成人高考网
宜昌成人高考网
襄阳成人高考网
十堰成人高考网
武汉自考网
黄冈自考网
宜昌自考网
襄阳自考网
十堰自考网
湖北成人高考报名网
湖北自考报名网
湖北大学成教
湖北工业大学成教
湖北中医药大学成教
华中农业大学成教
武汉大学成教网
武汉科技大学成教
武汉理工大学成教
中南财经政法大学成教
上海成考网
上海自考网
中南财经政法大学自考
中南财经政法大学自考
华中师范大学自考招生网
武汉理工大学自考
湖北大学自考
华中农业大学自考
湖北中医药大学自考
湖北工业大学自考
华中师范大学自考招生网
湖北中医药大学成教
湖北中医药大学成教
武汉理工大学成教
武汉科技大学成教
武汉大学成教
湖北工业大学成教
湖北大学成教
华中农业大学成教
中南财经政法大学成教
华中师范大学成教
湖北中医药大学自考
武汉理工大学自考
武汉大学自考
湖北工业大学自考
湖北大学自考
华中农业大学自考
中南财经政法大学自考
华中师范大学自考