网易笔试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.写出对“知之者不如好之者,好之者不如乐之者”的理解。
答:了解他不如爱护它,爱护它不如与之为乐
2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both之意),但不能有“都”字
答:皆、尽、全、咸、绝。。。。
delete和malloc/free的区别,并说说你在什么情况下会自另行建立自己的内存分配机制。答:malloc和free不知道构造函数和析构函数
malloc/free:只要给出想要的内存的长度就分配,并返加(void*)
new/delete:分配内存同时进行类型检测,内置了sizeof运算,如果分配类的话,自动调用类的构造函数,delete也是,释放内存时调类的析构
4.为什么有必要写自己的operator new和operator delete?
答:为了效率。缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程序里,情况更是如此。
有这样一个方法来实现你的自定义的operator new:先让缺省operator new分配一些大块的原始内存,每块的大小都足以容纳很多个airplane对象。
5.求极限lim(x-[x]),x趋于-3。
答:左右极限不一样
从左是:1
从右是:-1
6.比较两个电路的可靠性。
7.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
答:维持一个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)
{
first++;
}
else
{
for(int i = first; i <= end; i++)
cout << i << " ";
cout << endl;
sum -= first;
first++;
}
}
8.有两个字符串str1和str2,写一个函数实现在str1中查找str2的初始位置。要求不区分大小写。
9.在字符串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[] = "676456";
for (int i=strlen(S)/2;i>0;i--)
for (int j=0;j if (strncmp(S+j,S+i+j,i) == 0) { S[j+i] = 0; printf("%s",S+j); return ; } } 10.求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)100个真币和一个假币,只知道真币与假币不等重,要求只称两次,得出是真币重还是假币重。101个钱币中,任取一个,其余100个分为2份,如果重量相同,取出的必定假币,与任何一个真币比较即可。如果重量不等,把重的50枚分为两分,如果不等,则假币重,否则假币轻。把轻的50枚分开称也可以得到结果 12.证明题:给出n个互不相同的分数数列a1/b1, a2/b2… an/bn ,证明(a1 + a2 + … + an) / (b1 + b2 + … + bn) 的值在数列a1/b1, a2/b2… an/bn 数列的最大值和最小值之间。 13. 证明题:在三角形中,假设等角对等边,证明大角对大边。 14. 文学题:在以下的空白中填入相应的词(蔼、断、淡、泰)并解释其含义。 答:自处超然,处事然,无事澄言,处事言,得意然,失意然。淡、泰、蔼、断 15. 问答题:为什么现在的计算机采用二进制而不是八进制或十六进制你认为以后的计算机会采用几进制 答:前技术水平而言,电位高低区分01逻辑比较简单高效,因而采用2进制。特别是采用刷新机制的大容量集成门电路,在两次刷新之间,电位不断降低,因此通过将电位分级来进行多进制计算就目前而言不可能。除非计算机的硬件技术有质的飞跃。 16.程序设计题:给出若干个单词,组成字典,要求查找速度最快。 答:使用小写字母a-z组成单词,用1表示a,一直到26表示z.使用幂乘法表示字母,比如ab 为a*26+b,然后用幂乘法算出来的数字对数组大小的两倍值取余得到哈希值.用字母组合aa 表示被删除的单词. 17.有b1/a1,b2/a2,....,bn/an 共n个分数,分母同号,证明:(b1+b2+...+bn)/(a1+a2+...+an)的值在上面n个分数值最大制和最小值之间. 18.证明:三角形中大边对大角,已知等边对等角 19.为什么计算机中多用二进制,16进制也用在程序中.你认为有没有可能回出现多进制的计算机,为什么? 20.一个没有拷贝构造函数和重载=运算符的String类,会出现什么问题,如何解决 答:按位拷贝 21.编程题. 有篇文章,找出文章中单词在词典中的序号,要求高效率.词典没排序. 22.有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白