网易笔试

1. 写出对“知之者不如好之者,好之者不如乐之者”的理解。
了解他不如爱护它,爱护它不如与之为乐
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。
左右极限不一样
从左是:1
从右是:-1
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加二重循环搞定
第一重循环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顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。

警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。

警长问第二个逃犯,结果还是猜错了,同样被杀掉了。

警长再问第三个逃犯,结果第三个逃犯猜对了。

说明一下,每个逃犯在回答问题时,其他逃犯是听不到的。

为什么第三个一定能猜中,请你给出解释。
如果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,地球上有个山谷,正午时太阳高度比日出和日落时低4800km(好象是),问这个山
谷在那里?
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.要求完成一个库函数的编写。(具体要求是一堆英文, 记不清了)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tvtvtvtv/archive/2006/11/22/1404054.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值