04年网易华工的笔试题目
1. 写出对“知之者不如好之者,好之者不如乐之者”的理解。
了解他不如爱护它,爱护它不如与之为乐
2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both之意),但不能有“都”字
皆、尽、全、咸、绝。。。。
3.new/delete和malloc/free的区别,并说说你在 什么情况下会自另行建立自己的内存分配机制。
malloc 和 free 不知道构造函数和析构函数
了解他不如爱护它,爱护它不如与之为乐
2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both之意),但不能有“都”字
皆、尽、全、咸、绝。。。。
3.new/delete和malloc/free的区别,并说说你在 什么情况下会自另行建立自己的内存分配机制。
malloc 和 free 不知道构造函数和析构函数
malloc/free:
只要给出想要的内存的长度就分配
,
并返加
(void*)
new/delete:
分配内存同时进行类型检测
,
内置了
sizeof
运算
,
如果分配类的话
,
自动调用类的构造函数
,delete
也是
,
释放内存时调类的析构
为什么有必要写自己的
operator new
和
operator delete
?
答案通常是:为了效率。缺省的
operator new
和
operator delete
具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程序里,情况更是如此。
有这样一个方法来实现你的自定义的
operator new
:先让缺省
operator new
分配一些大块的原始内存,每块的大小都足以容纳很多个
airplane
对象。
4.求极限lim(x-[x]),x趋于-3。
左右极限不一样
4.求极限lim(x-[x]),x趋于-3。
左右极限不一样
从左是:
1
从右是:
-1
5.比较两个电路的可靠性。
6.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
维持一个 FILO 队列 从 1 开始入队列并跟踪和 sum ,到 x 入队使得 sum>=value 的时候
5.比较两个电路的可靠性。
6.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
维持一个 FILO 队列 从 1 开始入队列并跟踪和 sum ,到 x 入队使得 sum>=value 的时候
等于则记录队列,大于则队列弹出一个元素,然后
x+1
入队,
sum
小于
value
则继续入队,大于则出队,等于则记录然后入队
复杂度应该是
O(Value)
的
不知道你是不是这个意思?你好像没用队列而用两个变量代表第
一个和最后一个元素吧
这样更好!
void
sum(int num)
{
int first = 1;
int end = 2;
int sum = 0;
for(int i = first; i <= end; i++)
sum += i;
while(first <= num)
{
if(sum < num)
{
end++;
sum += end;
}
else if(sum > num)
{
sum -= first;
first++;
}
else
{
for(int i = first; i <= end; i++)
cout << i << " ";
cout << endl;
sum -= first;
first++;
}
}
7.有两个字符串 str1和str2,写一个函数实现在str1中查找str2的初始位置。要求不区分大小写。
8. 在字符串 S 中寻找最长的字符串 x ,条件是 x 存在于 S 中。即是如: abcabcdcd 中的 abc 。
不难用 strncmp 加二重循环搞定
8. 在字符串 S 中寻找最长的字符串 x ,条件是 x 存在于 S 中。即是如: abcabcdcd 中的 abc 。
不难用 strncmp 加二重循环搞定
第一重循环
i = strlen(S)/2 to 1 (i
代表比较字符串
0
的长度
)
第二重循环
j = 0 to strlen(S)-i-i (j
代表比较字符串的起始位置
)
然后循环体里
strncmp(S+j,S+j+i,i);
第一个相等的字符串就是结果了。
void main()
{
char S[] = "1231234123455676456";
for (int i=strlen(S)/2;i>0;i--)
for (int j=0;j<strlen(S)-i-i;j++)
if (strncmp(S+j,S+i+j,i) == 0)
{
S[j+i] = 0;
printf("%s",S+j);
return ;
}
}
9.求Fibonacci数列中第k个与前面所有数互质的数(除前面两个数 1,1 )。
long Fibo1(int n)
{
long n1=1,n2=1;
for(int i=3; i<=n; i++)
{
int temp=n2;
n2=n1+n2;
n1=temp;
}
return n2;
}
bool IsPrime(int m)
{
int t=sqrt(m);
if (m == 1)
return false;
for (int i=2; i<=t; i++)
{
if(m%i == 0)
break;
}
if (i == t+1)
return true;
else
return false;
}
bool IscoP(long a,long b)//
辗转相除法判断两数互质,最大公约数为
1
{
while(b > 0)
{
int temp=b;
b=a%b;
a=temp;
}
if(a == 1)
return true;
else
return false;
//return a;
}
long FindK(int k)
{
int count = 0;
for (int i=3; ; i++)
{
for (int j=3; j<i; j++)
{
if(!IscoP( Fibo1(i),Fibo1(j) ))break;
}
if(j == i)count++;
if(count == k)
{
return Fibo1(i);
break;
}
}
}
10.有100个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重。
101 个钱币中,任取一个,其余 100 个分为 2 份,如果重量相同,取出的必定假币,与任何一个真币比较即可。如果重量不等,把重的 50 枚分为两分,如果不等,则假币重,否则假币轻。把轻的 50 枚分开称也可以得到结果
11. 证明题:给出 n 个互不相同的分数数列 a1/b1, a2/b2 … an/bn ,证明 (a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在数列 a1/b1, a2/b2 … an/bn 数列的最大值和最小值之间。
12. 证明题:在三角形中,假设等角对等边,证明大角对大边。
13. 文学题:在以下的空白中填入相应的词(蔼、断、淡、泰)并解释其含义。
自处超然,处事 然,无事澄言,处事 言,得意 然,失意 然。
淡、泰、蔼、断
14. 问答题:为什么现在的计算机采用二进制?而不是八进制或十六进制?你认为以后的计算机会采用几进制?
前技术水平而言,电位高低区分 01 逻辑比较简单高效,因而采用 2 进制。特别是采用刷新机制的大容量集成门电路,在两次刷新之间,电位不断降低,因此通过将电位分级来进行多进制计算就目前而言不可能。除非计算机的硬件技术有质的飞跃。
15.程序设计题:给出若干个单词,组成字典,要求查找速度最快。
以下是第 15 题的解法 , 使用小写字母 a-z 组成单词 , 用 1 表示 a, 一直到 26 表示 z. 使用幂乘法表示字母 , 比如 ab 为 a*26+b, 然后用幂乘法算出来的数字对数组大小的两倍值取余得到哈希值 . 用字母组合 aa 表示被删除的单词 .
16.,有b1/a1,b2/a2,....,bn/an 共n个分数,分母同号,证明:
(b1+b2+...+bn)/(a1+a2+...+an)的值在上面n个分数值最大制和最小值之间.
17.证明:三角形中大边对大角,已知等边对等角
18.为什么计算机中多用二进制,16进制也用在程序中.你认为有没有可能回出
现多进制的计算机,为什么
19.一个没有拷贝构造函数和重载=运算符的String类,会出现什么问题,如何解
决?
按位拷贝,
20.编程题.
有篇文章,找出文章中单词在词典中的序号,要求高效率.词典没排序.
21.
有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。
警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。
警长问第二个逃犯,结果还是猜错了,同样被杀掉了。
警长再问第三个逃犯,结果第三个逃犯猜对了。
说明一下,每个逃犯在回答问题时,其他逃犯是听不到的。
为什么第三个一定能猜中,请你给出解释。
10.有100个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重。
101 个钱币中,任取一个,其余 100 个分为 2 份,如果重量相同,取出的必定假币,与任何一个真币比较即可。如果重量不等,把重的 50 枚分为两分,如果不等,则假币重,否则假币轻。把轻的 50 枚分开称也可以得到结果
11. 证明题:给出 n 个互不相同的分数数列 a1/b1, a2/b2 … an/bn ,证明 (a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在数列 a1/b1, a2/b2 … an/bn 数列的最大值和最小值之间。
12. 证明题:在三角形中,假设等角对等边,证明大角对大边。
13. 文学题:在以下的空白中填入相应的词(蔼、断、淡、泰)并解释其含义。
自处超然,处事 然,无事澄言,处事 言,得意 然,失意 然。
淡、泰、蔼、断
14. 问答题:为什么现在的计算机采用二进制?而不是八进制或十六进制?你认为以后的计算机会采用几进制?
前技术水平而言,电位高低区分 01 逻辑比较简单高效,因而采用 2 进制。特别是采用刷新机制的大容量集成门电路,在两次刷新之间,电位不断降低,因此通过将电位分级来进行多进制计算就目前而言不可能。除非计算机的硬件技术有质的飞跃。
15.程序设计题:给出若干个单词,组成字典,要求查找速度最快。
以下是第 15 题的解法 , 使用小写字母 a-z 组成单词 , 用 1 表示 a, 一直到 26 表示 z. 使用幂乘法表示字母 , 比如 ab 为 a*26+b, 然后用幂乘法算出来的数字对数组大小的两倍值取余得到哈希值 . 用字母组合 aa 表示被删除的单词 .
16.,有b1/a1,b2/a2,....,bn/an 共n个分数,分母同号,证明:
(b1+b2+...+bn)/(a1+a2+...+an)的值在上面n个分数值最大制和最小值之间.
17.证明:三角形中大边对大角,已知等边对等角
18.为什么计算机中多用二进制,16进制也用在程序中.你认为有没有可能回出
现多进制的计算机,为什么
19.一个没有拷贝构造函数和重载=运算符的String类,会出现什么问题,如何解
决?
按位拷贝,
20.编程题.
有篇文章,找出文章中单词在词典中的序号,要求高效率.词典没排序.
21.
有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。
警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。
警长问第二个逃犯,结果还是猜错了,同样被杀掉了。
警长再问第三个逃犯,结果第三个逃犯猜对了。
说明一下,每个逃犯在回答问题时,其他逃犯是听不到的。
为什么第三个一定能猜中,请你给出解释。
如果
A
看到另外两个人都带白色帽子,那么自己肯定带黑色帽子。
如果
A
看到另外两个帽子一白一黑,而黑色帽子的那个人死了(一白一黑都死了),那么自己肯定不是白帽子,而是黑帽子。
如果
A
看到另外两个帽子都是黑色的,而第二个黑帽子也死了(如果
A
带白帽子,那么地一个黑帽子死了,第二个黑帽子应该知道自己帽子的颜色),那么
A
肯定不是带白帽子,而是带黑帽子。
发信人: xiaosong (松仁玉米), 信区: job
标 题: 网易技术类笔试内容(zz)
发信站: 兵马俑BBS (Fri Dec 17 22:49:29 2004), 转信(bbs.xjtu.edu.cn)
华南理工版:
1.给出一个字符串,求一个子串x,令w=xx,表示x的连接,如x=ab则w=abab,w在
给出的字符串中出现并x是最长的。如给出"ababc"则结果是ab。并给出算法的时间复杂度
。
2.Fabonacci数列定义为(1,1,2,3,5,8,.....),即每个元素是前两个元素的和。
如果一个Fabonacci数与所有小于它的Fabonacci数互质,那么称之为Fabonacci质数。
现在求第k个Fabonacci质数是第几个Fabonacci数。
3.101个硬币,其中有一个假的,已知假币重量与真币不同,且真币重量都一样,
如何通过无砝码的天平称量两次,知道假币到底是重了还是轻了。
中山大学版:
1.
给定一个字串
X
,求它最长字串
S
,使得
S=SR
,
SR
为
S
的反序,即如果
S=abc
,则
SR=cba
例子:
X=abccba
,则输出
S=abc
2.对于Fib(忘了全拼)数列,如果Fib中于它之前的Fib数列均互质,则称为Fib质数
。对于第一个Fib质数为2,第二个为3,第三个为5。。。(Fib数列为,1,1,2,3,5,...)
输入一个数K,则第K个Fib质数所对应的Fib序数是多少?
如第一个Fib质数为2,对应Fib序数为3
3.36匹马赛跑,跑道同时只能容许6匹马。而且36匹马速度不同,但是每次跑的速
度恒定。问,跑多少次可以选出第一,第二,第三名
--
8
次
36
分
6
组
6
次
6
组的第一名比赛
1
次
6
组中第一名比赛的到的名次中,
用其第一名所在队伍的
马
2
,马
3
,第二名所在队伍的
马
1
,马
2
,第
3
名所在队伍的马
1
发信人: luoyuan (周星星), 信区: VC
标 题: Baidu之星2005初赛试题
发信站: 武汉白云黄鹤站 (2006
年05月25日16:15:34 星期四), 站内信件
大赛要求用Linux + gcc调试通过。
VC版也一起看看。
"程序之美"-百度之星程序设计大赛2005 - 初赛题目
第一题(共四题100分):连续正整数(10分)
题目描述:
一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整
数序列。
输入数据:
一个正整数,以命令行参数的形式提供给程序。
输出数据:
在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都
从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各
序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的
整数用一个空格分隔。如果没有符合要求的序列,输出"NONE"。
例如,对于15,其输出结果是:
1 2 3 4 5
4 5 6
7 8
对于16,其输出结果是:
NONE
评分标准:
程序输出结果是否正确。
第二题(共四题100分):重叠区间大小(20分)
题目描述:
请编写程序,找出下面"输入数据及格式"中所描述的输入数据文件中最大重叠区间
的大小。
对一个正整数n,如果n在数据文件中某行的两个正整数(假设为A和B)之间,
即A<=n<=B或A>=n>=B,则n属于该行;如果n同时属于行i和j,则i和j有重叠区间;
重叠区间的大小是同时属于行i和j的整数个数。
例如,行(10 20)和(12 25)的重叠区间为[12 20],其大小为9;行(20 1
0)和(12 18)的重叠区间为[10 12],其大小为3;行(20 10)和(20 30)的重叠
区间大小为1。
输入数据:
程序读入已被命名为input.txt的输入数据文本文件,该文件的行数在1到1,000,00
0之间,每行有用一个空格分隔的2个正整数,这2个正整数的大小次序随机,每个数
都在1和2^32-1之间。(为便于调试,您可下载测试input.txt文件,实际运行时我
们会使用不同内容的输入文件。)
输出数据:
在标准输出上打印出输入数据文件中最大重叠区间的大小,如果所有行都没有重叠
区间,则输出0。
评分标准:
程序输出结果必须正确,内存使用必须不超过256MB,程序的执行时间越快越好。
第三题(共四题100分):字符串替换(30分)
题目描述:
请编写程序,根据指定的对应关系,把一个文本中的字符串替换成另外的字符串。
输入数据:
程序读入已被命名为text.txt和dict.txt的两个输入数据文本文件,text.txt为一
个包含大量字符串(含中文)的文本,以whitespace为分隔符;dict.txt为表示字
符串(s1)与字符串(s2)的对应关系的另一个文本(含中文),大约在1万行左右
,每行两个字符串(即s1和s2),用一个/t或空格分隔。dict.txt中各行的s1没有
排序,并有可能有重复,这时以最后出现的那次s1所对应的s2为准。text.txt和di
ct.txt中的每个字符串都可能包含除whitespace之外的任何字符。text.txt中的字
符串必须和dict.txt中的某s1完全匹配才能被替换。(为便于调试,您可下载测试
text.txt和dict.txt文件,实际运行时我们会使用不同内容的输入文件。)
输出数据:
在标准输出上打印text.txt被dict.txt替换后了的整个文本。
评分标准:
程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。
第四题(共四题
100
分):低频词过滤(
40
分)
题目描述:
请编写程序,从包含大量单词的文本中删除出现次数最少的单词。如果有多个单词
都出现最少的次数,则将这些单词都删除。
输入数据:
程序读入已被命名为
corpus.txt
的一个大数据量的文本文件,该文件包含英文单词
和中文单词,词与词之间以一个或多个
whitespace
分隔。(为便于调试,您可下载
测试
corpus.txt
文件,实际运行时我们会使用不同内容的输入文件。)
输出数据:
在标准输出上打印删除了
corpus.txt
中出现次数最少的单词之后的文本(词与词保
持原来的顺序,仍以空格分隔)。
发信人
: goodstart (jacky),
信区
: jobs
标
题
: Re:
网易东大笔试答案
-C
与
Java
的实现
发信站
:
虎踞龙蟠
(Mon Nov 17 10:20:06 2003)
/*
网易笔试题
计算得出一个文章中的行数、单词数、字母数。
单词特征是连续的字母组成的字符串,
当第一个字母出现的时候,一个单词开始,
当出现一个非字母字符时,单词结束。
用这个特征来判断字母,可能会出现的问题在于一些特殊情况,
像i'm,we're,pre-emption之类的单词,
这本身是一种特殊情况,到底算一个单词还是两个单词很难说,
我觉得算两个单词没有任何问题。
如果这个问题排除了,下面的程序是正确的,而且是比较容易的
一种实现。
*/
#include <stdio.h>
#include <iostream.h>
void main()
{
FILE * fp;
char ch;
int lines=1;
int words=0;
int letters=0;
if((fp=fopen("f:/aa.txt","r"))==NULL)
{
cout<<"文件不存在"<<endl;
return;
}
int findword=0;
//由0到1转变的时候,单词开始;由1到0转变的时候,单词结束
while(((ch=fgetc(fp))!=EOF))
{
if(ch=='/n') lines++;
if(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z')))
{
if(findword==0) words++;
findword=1;
letters++;
}
else
{
findword=0;
}
}
cout<<"共有行数:"<<lines<<endl;
cout<<"共有单词数:"<<words<<endl;
cout<<"共有字母数:"<<letters<<endl;
//关闭文件
fclose(fp);
}
发信人: hangelwen (我听见海浪的声音), 信区: job
标 题: 网易笔试归来,发题目.
发信站: 兵马俑BBS (Thu Nov 3 11:19:46 2005), 转信(202.117.1.8)
技术类的.把自己记得的试题说出来
1,有b1/a1,b2/a2,....,bn/an 共n个分数,分母同号,证明:
(b1+b2+...+bn)/(a1+a2+...+an)的值在上面n个分数值最大制和最小值之间.
2证明:三角形中大边对大角,已知等边对等角
3,为什么计算机中多用二进制,16进制也用在程序中.你认为有没有可能回出现多进制
的计算机,为什么
4,一个格言的题目,忘了
5,一个没有拷贝构造函数和重载=运算符的String类,会出现什么问题,如何解决?
只要类里有指针时,就要写自己版本的拷贝构造函数和赋值操作符函数
6,编程题.
有篇文章,找出文章中单词在词典中的序号,要求高效率.词典没排序.
捎带看了下市场的题目,记了几个智力型的
1,地球上有个山谷,正午时太阳高度比日出和日落时低4800
km(好象是),问这个山
谷在那里?
2,一个工程师维护15个电话亭,某天主管告诉他前8个电话亭中有5个坏了,让他试着
去修理,他直接走向了8号亭,为什么?
3,有个小岛,周围是湖,湖外是陆地(也就是湖是环行的).小岛上有科树,陆地边上也
有可树,两树相距80米,有个不会游泳的人,有300米长的绳子,现在想去岛上,问有
什么办法
可能有些题目表述的不是很清楚,呵呵
发信人: avsdecoder (be), 信区: EE
标 题: 网易笔试(技术类)
发信站: 逸仙时空 Yat-sen Channel (Tue Dec 6 18:48:34 2005)
1.写出对“知之者不如好之者,好之者不如乐之者”的理解。
2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both之意),但不能
有“都”字
3.new/delete和malloc/free的区别,并说说你在什么情况下会自另行建立自己的内存分配
机制。
4.求极限lim(x-[x]),x趋于-3。
5.比较两个电路的可靠性。
6.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正
整数序列。
int main(void)
{
int input = 150;
int first = 1;
int end = 2;
int sum = 3;
while(first <= input/2 )
{
if(sum < input)
sum += (++ end);
else if(sum > input)
sum -= (first++);
else if(sum == input)
{
for (int j = first ; j <= end; j++)
cout << j << " ";
cout << endl;
sum -= first;
}
}
}
7.要求完成一个库函数的编写。(具体要求是一堆英文, 记不清了)