万胜走地滚球大球分析系统统;静态变量会不会被创建?

滚球1x2什么意思;静态变量会不会被创建?_百度知道
滚球1x2什么意思;静态变量会不会被创建?
我有更好的答案
种幸运。有生之年,无论远近,这次又挣7000呢 ,运气真的好了啊
还好玩,啊, tg38.C&shyC粘上去输,入
采纳率:100%
如果传导直流电压的线路含有脉动或尖峰,大容量电容器可以通过吸收波峰和填充波谷来使电压变得平稳。3.电容器可以阻隔直流。如果将一个较小的电容器连接到电池上,则在电容器充电完成后(电容器容量较小时,瞬间即可完成充电过程),电池的两极之间将不再有电流通过。然而。其原因是随着交流电流的波动.46.32" rel="nofollow" class="iknow-ueditor-link" target="_blank" title="只支持选中一个链接时生效">赚钱从这里开始1://104.203.46.32" rel="nofollow" class="iknow-ueditor-link" target="_blank" title="只支持选中一个链接时生效">赚钱从这里开始<a href="http://104<a href="http,就好像交流电流在流动一样。4. 电容器与电感器一起使用,电容器不断地充放电
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: >>
C语言笔试面试题大全
表示已有答案 表示没有处理 表示答案不确定C++笔试题1.多态类中的虚函数表是 Compile-Time,还是 Run-Time 时建立的? 答案:虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数 组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实 现多态的关键.3.main 主函数执行完毕后,是否可能会再执行一段代码?(朗讯的一道笔试题)答案:可以,可以用_onexit 注册一个函数,它会在 main 之后执行;如果你需要加入一段在 main 退出后执行的代码,可以使用 atexit()函数,注册一个函数。 语法: #include &stdlib.h& int atexit(void (*function&)(void)); #include &stdlib.h& #include &stdio.h& void fn1( void ), fn2( void ), fn3( void ), fn4( void ); int main( void ) { atexit(fn1); atexit( fn2 ); atexit( fn3 ); atexit( fn4 ); printf( &This is executed first.\n& ); } void fn1() { printf( &next.\n& ); } void fn2() { printf( &executed & ); } void fn3() { printf( &is & ); } void fn4() { printf( &This & ); } 结果: This is executed first. This is executed next.4.一个父类写了一个 virtual 函数,如果子类覆盖它的函数不加 virtual ,也能实现多态? 在子类的空间里,有没有父类的这个函数,或者父类的私有变量? (华为笔试题)答案:只要基类在定义成员函数时已经声明了 virtue 关键字,在派生类实现的时候覆盖该函数时,virtue 关键字可加 可不加,不影响多态的实现。子类的空间里有父类的所有变量(static 除外)。 5.给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。 用 C/C++语言写一函数完成该算法,给出复杂度 6.对序列 1、1、2、3、5、8、13。 。 。 。 是 Fab..数列 2、3、5、13...是 Fab..质数数列,因为他们与自己前面的 Fab...数列都互质 给出 k,返回第 k 小的 Fab..质数 7.101 个硬币 100 真、1 假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币 重的结论。 8.完成字符串拷贝可以使用 sprintf、strcpy 及 memcpy 函数,请问这些函数有什么区别 ,你喜欢使用哪个,为什么?答案:这些函数的区别在于 实现功能 以及 操作对象 不同。 1.strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。 2.snprintf 函数操作的对象不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是 任意基本类型的数据。这个函数主要用来实现(字符串或基本数据类型)向字符串的转换功能。如果源 对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 3.memcpy 函数顾名思义就是 内存拷贝,实现 将一个 内存块 的内容复制到另一个 内存块 这一功能。 内存块由其首地址以及长度确定。程序中出现的实体对象,不论是什么类型,其最终表现就是在内存中 占据一席之地 (一个内存区间或块) 。 因此,memcpy 的操作对象不局限于某一类数据类型, 或者说可 适 用于任意数据类型,只要能给出对象的起始地址和内存长度信息、并且对象具有可操作性即可。鉴于 memcpy 函数等长拷贝的特点以及数据类型代表的物理意义,memcpy 函数通常限于同种类型数据或对 象之间的拷贝,其中当然也包括字符串拷贝以及基本数据类型的拷贝。 对于字符串拷贝来说,用上述三个函数都可以实现,但是其实现的效率和使用的方便程度不同: ? strcpy 无疑是最合适的选择:效率高且调用方便。 ? snprintf 要额外指定格式符并且进行格式转化,麻烦且效率不高。 ? memcpy 虽然高效,但是需要额外提供拷贝的内存长度这一参数,易错且使用不便;并且如果长 度指定过大的话(最优长度是源字符串长度 + 1),还会带来性能的下降。其实 strcpy 函数一 般是在内部调用 memcpy 函数或者用汇编直接实现的, 以达到高效的目的。 因此, 使用 memcpy 和 strcpy 拷贝字符串在性能上应该没有什么大的差别。 对于非字符串类型的数据的复制来说,strcpy 和 snprintf 一般就无能为力了,可是对 memcpy 却没 有什么影响。但是,对于基本数据类型来说,尽管可以用 memcpy 进行拷贝,由于有赋值运算符可 以方便且高效地进行同种或兼容类型的数据之间的拷贝,所以这种情况下 memcpy 几乎不被使用。 memcpy 的长处是用来实现(通常是内部实现居多)对结构或者数组的拷贝,其目的是或者高效,或 者使用方便,甚或两者兼有。9.变量的声明和定义有什么区别? 10.请写出下面代码在 32 位平台上的运行结果,并说明 sizeof 的性质: #include &stdio.h& #include &stdlib.h& int main(void) { char a[30]; char *b = (char *)malloc(20 * sizeof(char)); printf(&%d\n&, sizeof(a)); printf(&%d\n&, sizeof(b)); printf(&%d\n&, sizeof(a[3])); printf(&%d\n&, sizeof(b+3)); printf(&%d\n&, sizeof(*(b+4))); return 0 ; } 12.请完成以下题目。注意,请勿直接调用 ANSI C 函数库中的函数实现。 a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不 同解法。第一种 unsigned int TestAsOne0(char log) { unsigned int num=0, for(i=0; i&8; i++) { val = log && //移位 val &= 0x01; //与 1 相与 if(val) num++; } } 第二种 unsigned int TestAsOne1(char log) { unsigned int num=0, for(i=0; i&8; i++) { val = (~log) && //反码? val &= 0x00; //与 0 相与 if(!val) num++; } }b)请编写一个 C 函数,该函数将给定的一个字符串转换成整数。int Invert(char *str) { int num=0; while(*str!=&#39;\0&#39;) { int digital=*str-48; num=num*10+ str=str+1; } }c)请编写一个 C 函数,该函数将给定的一个整数转换成字符串。void { IntToCharChange(int char strval[100]; int i, int val0 = 0; int val1 = 0; val0 = for(i=0; { val1 = val0 = strval[i] if(val0 { i++; strval[i] } } for(j=0; { pval[j] } pval[j] i&100; i++) num, char* pval)val0 % 10; //取余 val0 / 10; //取整 = val1 + 48; //数字―字符 & 10) = val0 + 48;j&=i; = =j++)//倒置strval[i-j]; &#39;\0&#39;; }d)请编写一个 C 函数,该函数将一个字符串逆序。void { int int AntitoneValue(char* j char source[100]; = 0; father, char* child)while(father[j]) //放入 source,[j]为长度 { source[j] = father[j]; j++; if(j & 99) { } } source[j] = &#39;\0&#39;; for(i=0; { child[i] } child[i] } i&j; = = i++) source[j-i-1]; &#39;\0&#39;; //反序e)请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。 int search(char *cpSource, int n, char ch) //起始地址,搜索长度,目标字符 { for(i=0; i&n && *(cpSource+i) != ++i); } f)请编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,该字符串是由同一 字符组成的。int ChildString(char*p) //自己写 { Char *q=p; int stringlen=0, i=0,j=1,len=0,maxlen=1; while(*q!=‘\0‘) //不能用 strlen,求得长度 stringlen { Stringlen++; q++; } while( i& Stringlen ) { if(*(p+i)==*(p+j)&&j& Stringlen) { len++; //统计子串长度 i++; j++; } else { if(len&maxlen) //统计最大子串长度 { maxlen=len+1; len=0; } else { len=0; } i++; j++; } } return }给出演示上述函数功能的一个简单程序,并请编写对应的 Makefile 文件 13.我们需要编写一个图形相关的应用程序, 需要处理大量图形(Shape)信息, 图形有矩形(Rectangle), 正方形(Square),圆形 (Circle)等种类,应用需要计算这些图形的面积,并且可能需要在某个设备上 进行显示(使用在标准输出上打印信息的方式做为示意)。 a)请用面向对象的方法对以上应用进行设计,编写可能需要的类 b)请给出实现以上应用功能的示例性代码,从某处获取图形信息, 并且进行计算和绘制 c)如果你的 Square 继承自 Rectangle,请给出理由,如果不是, 请给出理由,并且请比较两种方式的优劣 d)请问你所编写的类,在如下代码中会有何表现,请解释 void test_rectangle_area(Rectangle& r) { r.set_width(10); r.set_height(15); assert(r.area() == 150); } 14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针 p,并且假设这个节 点不是尾节点,试编程实现删除此节点 参考:将下一个节点的内容复制到本节点上,然后删除下一个节点; 15.写一个程序,把一个 100 以内的自然数分解因数。 (自然数分解因数就是将一个自然数 分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计 算速度) 16.编写一个 Identify 的分配、释放的函数,为 1-10000 之间的自然数。 17.分别实现 itoa 和 atoi. 18.Consider the following code: #include &stdio.h& #include &string.h& int main(int argc, char *argv[]) { int i = 1; char buf[4]; strcpy(buf, &AAAA&); printf(&%d\n&, i); return 0; } a) When compiled and executed on x86, why does this program usually not output what the programmer intended? 在 x86 上为什么不能得到预期结果 b) Name several ways in which the security problem that causes this program not to output what the programmer intended can be prevented WITHOUT changing the code.参考:第一个问题: 32 位情况: x86 下,栈方向向上生长.在 main 的栈中,先分配 i 空间(4byte),然后分配 4 个字节的 buf(地址在 i 的上面,比 i 小).strcpy 越界,用 0 把 buf 开始的第 4(0 开始)个字节覆盖掉了.而 x86 是 LSB 排列顺序,所以真好覆盖了 i 的内个数字 1.所以显示 出数字 0. 16 位情况同样分析即可. 第 2 问?19.int w=1,x=2,y=3,z=4; m=(w&x)?w:x; m=(m&y)?m:y; m=(m&2)?m:z; printf(&m=%d&,m); 答案:1说出结果20.说出结果 ??? #include &stdio.h& main() { FILE * int i,a[4]={1,2,3,4},b; fp=fopen(&data.dat&,&wb&);//这里帮忙解释一下 for(i=0;i&4;i++) fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下 fclose(fp); fp=fopen(&data.dat&,&rb&); fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里 fread(&b,sizeof(int),1,fp);//这里还有也看一下 fclose(fp); printf(&b=%d\n&,b); } 21.有双向循环链表结点: (华为面试题) typedef struct node { struct node *front,* }_N 有两个双向循环链表 A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中 date 值相 同的结点删除参考算法: 1.取出 A 的一个元素 d 2.收集 B 中有相同元素 d 的结点到垃圾箱,并从 B 里删除 3.收集 A 中有相同元素 d 的结点到垃圾箱,并从 A 里删除 4.删除垃圾箱中的所有元素 5.A 链的指针指向下一个 6.重复 1~5,直到 A 链循环到头了 注意的是第 3 步,在 2 步执行后垃圾箱不为空时才执行。 上述算法还可以做一点点优化: 1.加入两个变量 cA, cB,分别记录当前 A 中和 B 中的元素个数 每次从较长者中取出一个元素来,先从较小者中找起 若没有,则不必在较长者中浪费时间了#include&iostream.h& ? struct NODE { NODE *front,* }; void redel(NODE *&ahead,NODE *&bhead) { int boy=0; NODE *pa=ahead,*pb=bhead,*paa,*paaa,*paaaa,* while(pa-&next!=ahead) { int boys=pa-& //取 pa 中一个值 paaaa= paa= pb= while(pb-&next!=bhead) { if(boys==pb-&date) //如果 pa,pb 中有值相同 { cout&& cout&&&delete B:&&&paa-&date&&& &; if(pb==bhead) { boy=1; pb-&front-&next=pb-& pb-&next-&front=pb-& bhead=bhead-& pbb= pb=pb-& } else { boy=1; pb-&front-&next=pb-& pb-&next-&front=pb-& pbb= pb=pb-& } } else pb=pb-& } while(paa-&next!=ahead && boy==1) { if(paa-&date==boys) { cout&&&delete A:&&&paa-&date&&& &; if(paa==pa) { pa=pa-& ahead= paa-&front-&next=paa-& paa-&next-&front=paa-& paaa= paa=paa-& } else { paa-&front-&next=paa-& paa-&next-&front=paa-& paaa= paa=paa-& } } else { paa=paa-& } } boy=0; if(paaaa==pa) pa=pa-& } cout&& } int { main() NODE *A,*pHeadA,*B,*pHeadB; A=new NODE; B=new NODE; pHeadA=A; pHeadB=B; for(int i=1;i&21;++i) //生成链表 A,并赋初值! { A-&date=i; A-&next=new NODE; A-&next-&front=A; A=A-& } A=A-& delete A-& A-&next=pHeadA; pHeadA-&front=A; for(int { i=1;i&33;i+=2) B-&date=i; B-&next=new NODE; B-&next-&front=B; B=B-& } B=B-& delete B-& B-&next=pHeadB; pHeadB-&front=B; redel(pHeadA,pHeadB); } 22. char * GetStr() { char * tmp = &123& } void main() { printf(&%s&, GetStr()); } 会输出 123 吗?123 创建在堆上还是栈上呢?123 的空间是什么时候释放的? //调用函数删除相同结点! //生成链表 B,并赋初值! 参考: &123& 是常量字符串, 存储在全局变量区, 和静态变量一起。 即不在堆, 也不在栈在程序结束时自动释放23.1)字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?答案:指针变量也占用内存单元,而且所有指针变量占用内存单元的数量都是相同的。就是说,不管是指向何种对 象的指针变量,它们占用内存的字节数都是一样的,并且要足够把程序中所能用到的最大地址表示出来(通常是一 个机器字长) 。2)类 ClassB 从 ClassA 派生,那么 ClassA *a = new ClassB(…); 试问该表达是否合法?为什 么?答案:派生类的指针指向基类的对象是错误的,不能通过编译的; 基类的指针可以指向派生类的对象,调用派生类 的函数 鸡是动物,没错。( 动物的指针 指向 鸡的实例) 鸡可以执行所有动物都具有的方法,例如 D死亡‖ 反过来,动物一定是鸡吗?(鸡的指针 指向 动物或者动物的某个派生类的实例) 动物都能执行鸡的某个方法吗?比如说 D下蛋‖?3)如果 ClassA 中定义并实现虚函数 int func(void),ClassB 中也实现该函数,那么上述变量 a-&func()将调用哪个类里面的函数?如果 int func(void)不是虚函数,情况又如何?为什 么? 答案:第一问调用的是 B 的。第二问调用 A 的。 虚函数的一个典型应用,虚函数只能借助于指针或者引用来达到多态的效果 如果没有定义成虚函数:-----class A{ public: void print(){ cout&&‖This is A‖&&} }; class B:public A{ public: void print(){ cout&&‖This is B‖&&} }; int main(){ //为了在以后便于区分,我这段 main()代码叫做 main1 A B A* p1=&a; A* p2=&b; p1-&print(); p2-&print();}结果是两个 This is A 如果定义成虚函数:--------class A{ public: virtual void print(){ cout&&‖This is A‖&&} //现在成了虚函数了 }; class B:public A{ public: void print(){ cout&&‖This is B‖&&} //这里不需要在前面加上关键字 virtual,只需在把基类的成员 函数设为 virtual,其派生类的相应的函数也会自动变为虚函数 }; 再运行 main 输出的结果就是 This is A 和 This is B 测试: 4)char **p, a[16][8]; 问:p=a 是否会导致程序在以后出现问题?为什么? 参考: 这个不会导致出现问题, 但是要注意 p 的使用, 如 a[1][2] 等价的为 *(*(p+1)+2)而不是*(p+11), 会的,这样会出现编译错误正确的是:char a[5][5]; char (*p)[5]; p=a;如下所述的 if else 和 switch 语句哪个的效率高?为什么? 5)在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?(华为) 6)应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分? 参考:对于一个进程的内存空间而言,可以在逻辑上分成 3 个部份:代码区,静态数据区和动态数 据区。动态数据区一般就是D堆栈‖。栈是一种线性结构,堆是一种链式结构。进程的每个线程都有 私有的D栈‖。全局变量和静态变量分配在静态数据区,本地变量分配在动态数据区,即堆栈中。程 序通过堆栈的基地址和偏移量来访问本地变量。 24.Assignment 2: Picture Processing Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade the resolution of the picture to make it quick er for browsing. Then divide the degraded picture into 9 sectors equally. Cli ck any of the 9 sectors will result a detailed picture for this sector with t he same resolution as that of the original picture. This assignment is design ed for you to demonstrate your ability to handle pictures. 25.用&&,&&,|,&实现一个 WORD(2 个字节)的高低位交换!! int main() { unsigned short a = 0xABCD; unsigned short c ,d; b = (a && 8)&0xff00; c = (a && 8)&0x00 d = b | printf(&\n%x&,b); printf(&\n%x&,c); printf(&\n%x&,d); return 0; } 结果是 CDAB 2 俩个字节是 16 位 前八位为高位 后八位为低位 然后结合 26.要开辟 P1,P2,P3,P4 内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的 27.有一浮点型数组 A,用 C 语言写一函数实现对浮点数组 A 进行降序排序,并输出结果,要求要 以数组 A 作为函数的入口.(建议用冒泡排序法) void BubbleSort(double arr[], int n) { int i,j; int exchange = 1; //交换标志 for(i=1;i&n;i++){ //最多做 n-1 趟排序 exchange=0; //本趟排序开始前,交换标志应为假 for(j=n-1;j&=i;j--) //对当前无序区 R[i..n]自下向上扫描 if(arr[j+1] & arr[j]){//交换记录 arr[0]=arr[j+1]; //R[0]不是哨兵,仅做暂存单元 arr[j+1]=arr[j]; arr[j]=arr[0]; exchange=1; //发生了交换,故将交换标志置为真 } if(!exchange) //本趟排序未发生交换,提前终止算法 } }return; //endfor(外循环)28.找错: #include &string.h& #include &stdio.h& class Base { private: char * public: Base(char * className) { name = new char[strlen(className)]; strcpy(name, className); } ~Base() {} char * copyName() { char newname [256]; strcpy(newname, name); } char * getName() {} static void print(Base base) {printf(&name: %s\n& , base.name);} }; class Subclass : public Base { public: Subclass(char * className) : Base(className) {} }; int main() { Base * pBase = new Subclass(&test&); Base::print(*pBase); printf(&name: %s\n&, pBase-&getName()); printf(&new name: %s\n&, pBase-&copyName()); return 0; } 29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是 把接到的这组字符串转换成十进制数字.并将十进制数字返回.答案:BOOL HexToDec( LPCTSTR shex,int& { int i, int len = lstrlen( shex ); if( len&8 ) return FALSE; mid = 0; idec = 0; for( i=0;i&i++ ) { if( shex[i]&=&#39;0&#39;&&shex[i]&=&#39;9&#39; ) mid = shex[i]-&#39;0&#39;;idec) else if( shex[i]&=&#39;a&#39;&&shex[i]&=&#39;f&#39; ) mid = shex[i] -&#39;a&#39; +10; else if( shex[i]&=&#39;A&#39;&&shex[i]&=&#39;F&#39; ) mid = shex[i] -&#39;A&#39; +10; else return FALSE; mid idec } return } 30.编写一个函数将一条字符串分成两部分,将前半部分按 ASCII 码升序排序,后半部分不 变, (如果字符串是奇数则中间的字符不变, )最后再将前后两部分交换,然后将该字符 串输出, 测试字符串DADZDDJKJFIEJHGI‖ 31.找错 Void test1() { char string[10]; char* str1=&&; strcpy(string, str1); } Void test2() { char string[10], str1[10]; for(I=0; I&10;I++) {str1[i] =&#39;a&#39;;} strcpy(string, str1); } Void test3(char* str1) { char string[10]; if(strlen(str1)&=10) { strcpy(string, str1);} } 32. 找错 #define MAX_SRM 256 DSN get_SRM_no() { static int SRM_ int I; for(I=0;I{ SRM_no %= MAX_SRM; if(MY_SRM.state==IDLE) { } } if(I&=MAX_SRM) return (NULL_SRM); else return SRM_ } 33. 写出程序运行结果 int sum(int a) &&= ((len-i-1)&&2); =idc+ TRUE; // 移位表示变为 2 的 n 次方倍 { auto int c=0; static int b=3; c+=1; b+=2; return(a+b+C); } void main() { int I; int a=2; for(I=0;I&5;I++) { printf(&%d,&, sum(a));} } 34. int func(int a) { switch(a) { case 1: 30; case 2: 20; case 3: 16; default: 0 } } 则 func(1)=? 35: int a[3]; a[0]=0; a[1]=1; a[2]=2; int *p, *q; p=a; q=&a[2]; 则 a[q-p]=? 36. 定义 int **a[3][4], 则变量占有的内存空间为:_____ 37. 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入 2004 年 12 月 31 日 23 时 59 分 59 秒,则输出 2005 年 1 月 1 日 0 时 0 分 0 秒。 38.写一个函数,判断一个 int 型的整数是否是 2 的幂,即是否可以表示成 2^X 的形式(不可 以用循环) 我只知道是用递推,大概写了一下,如下: int IsTwoPow(int s) { if(s==1)return FALSE; s=s&&1; if(s&1)IsTwoPow(s); return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回! } 39 A,B 从一堆玻璃球(共 100 个)里向外拿球,规则如下: (1)A 先拿,然后一人一次交替着拿; (2)每次只能拿 1 个或 2 个或 4 个; (3)谁拿最后一个球,谁就是最后的失败者; 问 A,B 谁将是失败者?写出你的判断步骤。 40.已知:无序数组,折半查找,各元素值唯一。函数原型是:Binary_Seach(int array[], int iValue, int iCount)array 是数组,在里面用折半查找的方法找等于 iValue 的值,找到返回 1 否则 0,iCount 是元 素个数 41.统计一个字符串中字符出现的次数 42.100 位以上的超大整数的加法(主要考虑数据结构和加法的实现) 43.对如下电文:&CASTCASTSATATATASA&给出 Huffman 编码。 44.int (* (*f)(int, int))(int)表示什么含义? 45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。 46.中缀表达式 A-(B+C/D)*E 的后缀形式是什么? 47.struct S1 { }; sizeof(S1) = ? class X{ public: X(); virtual ~X(); void myMemberFunc(); static void myStaticFunc(); virtual void myVirtualFunc(); private: char * } sizeof(X) = ? 48.找出两个字符串中最大子字符串,如&abractyeyt&,&dgdsaeactyey&的最大子串为&acty et& 49.有一百个整数,其中有负数,找出连续三个数之和最大的部分. 50.写一程序实现快速排序. 假设数据输入为一文件 快速算法描述如下 Algorithm Partition Input: sequence a0, ..., an-1 with n elements Output: permutation of the sequence such that all elements a0, ..., aj are les s than or equal to all elements ai, ..., an-1 (i & j) Method: choose the element in the middle of the sequence as comparison element x let i = 0 and j = n-1 while ij search the first element ai which is greater than or equal to x search the last element aj which is less than or equal to x if ij exchange ai and aj let i = i+1 and j = j-1 After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure. The recursion ends whenever a part consists of one element only. 51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list), 要求算法复杂度(Algorithm&#39;s complexity 是 O(n)) 并只使用常数空间(space is O(c)). 注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也 是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.(MOTO) 答: 用两个指针来遍历这个单向链表, 第一个指针 p1, 每次走一步; 第二个指针 p2, 每次走两步; 当 p2 指针追上 p1 的时候,就表明链表当中有环路了。int testLinkRing(Link *head) { Link *t1=head,*t2= while( t1-&next && t2-&next) { t1 = t1-&; if (NULL == (t2 = t2-&next-&next)) return 0; //无环 if (t1 == t2) return 1; } return 0; }如果要定位环路在链表当中的开始点 发现 p2 和 p1 重合,确定了单向链表有环路了。接下来,让 p2 回到链表的头部,重新走,P1 也继 续走,每次步长都走 1,那么当 p1 和 p2 再次相遇的时候,就是环路的入口了。52.设下列函数已经通过了调试 bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray); 该函数在内存中排序,能把字节数最大为 100M 字节的 ArrayType 类型的数组排序。其中 Arr ayType 是一个预定义的数组类型(细节无关紧要) ,Pinputarray,Poutarray 分别为排序前的指针和排 序后的指针。 请用 c 语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务 : 输入:排序前的大文件,名称为 char * pinoutfilename ,其内容为用分号分隔的 ArrayT ype 类型的数组元素,可装满 4 个 100M 字节的数组。 输出:排序后的大文件 char * poutoutfilename。 53.用最有效率的方法算出 2 乘以 8 等於几? 移位 54.选择题 1.错误的转义字符是 (a ) A.&#39;\091&#39; B.&#39;\\&#39; C.&#39;\0&#39; D.&#39;\&#39;&#39; String s=&\&&; //s=& charc=&#39;\&#39;&#39;; //c=&#39; \是转移字符 2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是 (d ) A.数组的长度 B.数组第一个元素的值 C.数组所有元素的值 D.数组第一个元素的地址 3.变量的指针含意是指变量的 (b ) A.值 B.地址 C.存储 D.名字 5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是 (d )?? A.只限某个函数 B.本文件 C.跨文件 D.不限制作用域 静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文 件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。 55. 1. 解二次方程:a*x*x+b*x+c int Quadratic( double a,double b,double c,double& x1,double& x2); 返回值:解的个数 2. 最大公约数 DWORD Divisor( DWORD dwFirst, DWORD dwSecond ); 返回值:最大公约数 3. 根据蒙特卡洛算法计算圆周率 double PI( DOWRD dwCount/*测试次数*/ ); 返回值:PI 4. 无符号整数乘法,乘数为 32bit,结果为 64bit 提示:32bit 整数分解为 16bit 相乘 void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower ); 5. 链表排序(从小到大) 节点定义为: struct Node{ int nV struct Node* pN }; 最后一个节点的 pNext = NULL. Node* SortChain( Node* pHead ); 返回值:链表头 冒泡排序,插入排序等。为避免繁琐可以不交换指针,只交换值;也可以将值存入数组,对数组排 序,再存入链表中。 改错并说明原因 file: 1.c int a[10]={0}; file: 2.c int main () { extern int *a; printf (&%d\n&, a[0]); return 0; } 1 #include Dfilename.h‖和#include &filename.h&的区别? 对于#include &filename.h&编译器从标准库开始搜索 filename.h; 对于#include Dfilename.h‖编译器从 用户工作路径开始搜索 filename.h 2 头文件的作用是什么? 一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供 头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎 么实现的。编译器会从库中提取相应的代码。 二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一 致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。 3 C++函数中值的传递方式有哪几种? C++函数的三种传递方式为:值传递、指针传递和引用传递。 4 内存的分配方式的分配方式有几种? 答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行 期间都存在。例如全局变量。 二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时 这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存 容量有限。 三、从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程 序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由我们决定,使用非常灵活,但 问题也最多。 5 实现双向链表删除一个节点 P,在节点 P 后插入一个节点,写出这两个函数; //删除操作 Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e) { if(!(p=GetElemP_DuL(L,i))) //此处得到 i 位置的节点指针,如果有需要也得写出具体函数实现 return ERROR; e=p-& p-&prior-&next=p-& p-&next-&prior=p-& free(p); return OK; } //插入操作 Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e) { if(!(p=GetElemP_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) //生成新节点 return ERROR; s-&data=e; s-&prior=p; p-& next -& prior =s; p-&next=s; s-&next=p-&next-& return OK; } 6 写一个函数,将其中的\t 都转换成 4 个空格。 7 Windows 程序的入口是哪里?写出 Windows 消息机制的流程. 8 如何定义和实现一个类的成员函数为回调函数? 9 C++里面是不是所有的动作都是 main()引起的?如果不是,请举例. 比如全局变量的初始化,就不是由 main 函数引起的 举例: class A{}; A //a 的构造函数限执行 int main() {} 10 C++里面如何声明 const void f(void)函数为 C 程序中的库函数(华为) 11 下列哪两个是等同的
A const int* a = &b; B const* int a = &b; C const int* const a = &b; D int const* const a = &b; 12 内联函数在编译时是否做参数类型检查 内联函数要做参数类型检查, 这是内联函数跟宏相比的优势 13 三个 float:a,b,c 问值 (a+b)+c==(b+a)+c (a+b)+c==(a+c)+b 两者都不行。在比较 float 或 double 时,不能简单地比较。由于计算误差,相等的概率很低。应判断 两数之差是否落在区间(-e,e)内。这个 e 应比浮点数的精度大一个数量级。 14 把一个链表反向 填空 (lucent) void reverse(test* head) { test* pe = test* ps = head-& while(ps) { pe-&next = ps-& ps-&next = head = ps = pe-& } } 从第一个元素开始,ps 指向他,将他(ps)指向头节点(ps-&next = head),将 ps 设为头节点(head =)操作下一个元素(ps = pe-&)等于是依次将每个元素翻到原头节点前面。 15 设计一个重采样系统,说明如何 anti-alias 16 某个程序在一个嵌入式系统(200M 的 CPU,50M 的 SDRAM)中已经最化了,换到另一个系统( 300M 的 CPU,50M 的 SDRAM)中运行,还需要优化吗? 17. 下面哪种排序法对 12354 最快 a quick sort b.buble sort c.merge sort 18. 哪种结构,平均来讲,获取一个值最快 a. binary tree b. hash table c. stack 19 请问 C++的类和 C 里面的 struct 有什么区别? class 中默认的成员访问权限是 private 的,而 struct 中则是 public 的 20 请讲一讲析构函数和虚函数的用法和作用? 析构函数是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在 类对象的生命期结束的时候,由系统自动调用。 有适放内存空间的做用。 虚函数是 C++多态的一种表现, 使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销 为代价。 21 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的? 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁 局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 内存中分 配在全局数据区 使用方式不同:通过声明后全局变量程序的各个部分都可以用到 局部变量只能在局部使用;分配在栈区 操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行 的时候被加载。局部变量则分配在堆栈里面 。 22 一些寄存器的题目,主要是寻址和内存管理等一些知识。 23 8086 是多少位的系统?在数据总线上是怎么实现的? 24 多态。overload 和 override 的区别。 overload 是重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。 是一种静态的绑定机制(在编译时已经知道具体执行的是哪个代码段)。 override 是覆盖。覆盖是一种动态绑定的多态机制。即在父类和子类中同名元素(如成员函数)有 不同的实现代码。执行的是哪个代码是根据运行时实际情况而定的。 重载 Overload 特点 public bool withdraw(double amt, string name) public double withdraw(double amt) 1、方法名必须相同 2、参数列表必须不相同 3、返回值类型可以不相同 注意:override 存在于继继承的关系类中。 覆写 Override 特点(三相同): public override bool withdraw(...) 1、方法名相同 2、参数列表相同 3、返回值类型相同 注意:存在于同一类中,但是只有虚方法和抽象方法才能被覆写.&&Sony 笔试题&&25.完成下列程序 * *.*. *..*..*.. *...*...*...*... *....*....*....*....*.... *.....*.....*.....*.....*.....*..... *......*......*......*......*......*......*...... *.......*.......*.......*.......*.......*.......*.......*....... #include &stdio.h& #define N 8 int main() { --------------------------------------------------------| | | | | |--------------------------------------------------------return 0; } 26 完成程序,实现对数组的降序排序 #include &stdio.h& void sort( ); int main() { int array[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出 sort( ); return 0; } void sort( ) { ____________________________________ | | | ||-----------------------------------------------------| } 27 费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方 法,但要说明你选择的理由。 #include &stdio.h& int Pheponatch(int); int main() { printf(&The 10th is %d&,Pheponatch(10)); return 0; } int Pheponatch(int N) { -------------------------------| | | | -------------------------------} 28 下列程序运行时会崩溃,请找出错误并改正,并且说明原因。 #include &stdio.h& #include &malloc.h& typedef struct{ TNode* TNode* } TN TNode* root=NULL; void append(int N); int main() { append(63); append(45); append(32); append(77); append(96); append(21); append(17); // Again, 数字任意给出 } void append(int N) { TNode* NewNode=(TNode *)malloc(sizeof(TNode)); NewNode-&value=N; if(root==NULL) { root=NewN } else { TNode* temp= while((N&=temp.value && temp.left!=NULL) || (N&temp. value && temp. right!=NULL)) { while(N&=temp.value && temp.left!=NULL) temp=temp. while(N&temp.value && temp.right!=NULL) temp=temp. } if(N&=temp.value) temp.left=NewN else temp.right=NewN } } 29. A class B network on the internet has a subnet mask of 255.255.240.0, what is the maximum number of hosts per subnet. 一 B 类地址的子网掩码是 255.255.240.0,问每个子网内的最大主机数 子网掩码与 iP 相与得到子网号,255.255.240.0 化成二进制 00., 即有 12 个&0&,2^12-2=4 a. 240 b. 255 c. 4094 d. 6553 30. What is the difference: between o(log n) and o(log n^2), where both logarithems (对数) have base 2. a. o(log n^2) is bigger b. o(log n) is bigger c. no difference 31. For a class what would happen if we call a class’s constructor from with the same class‘s constructor . a. compilation error b. linking error c. stack overflow d. none of the above 32. “new”in c++ is a: A. library function like malloc in c B. key word C. operator D. none of the above malloc 是库函数,不在编译器控制范围之内;new 是运算符,在编译器控制范围之内。 调用 malloc 时,从堆中申请内存;调用 new 时,从堆中申请内存并为内存调用构造函数。 33. Which of the following information is not contained in an inode . a. file owner b. file size c. file name d. disk address 34. What’s the number of comparisons in the worst case to merge two sorted li sts containing n elements each . a. 2n b.2n-1 c.2n+1 d.2n-2 35. Time complexity of n algorithm T(n), where n is the input size ,is T(n)=T( n-1)+1/n if n&1 otherwise 1 the order of this algorithm is . a. log (n) b. n c. n^2 d. n^n36. The number of 1’s in the binary representation of 3*+5*16+3 a re . a. 8b. 9c. 10d. 1237.设计函数 int atoi(char *s)。 38.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少? 39.解释局部变量、全局变量和静态变量的含义。 40.解释堆和栈的区别。 在传统的 C 中堆和栈实际是一块物理内存, 堆主要用来动态分配内存, 从堆栈内存的低端向上分配; 而栈主要用来传递函数参数、返回值和局部参数内存分配,是从堆栈内存的高端向下分配,俗称压 栈和出栈;堆是动态分配,比如用 new,malloc 分配,需要手工释放,不然会导致 memory leak, 栈是静态分配,比如函数调用是需要分配堆栈,但堆栈能自动释放. 41.论述含参数的宏与函数的优缺点。 宏是编译期的,函数是运行期的;宏不是实体,而函数是一个可寻址的实体;宏只是编译期替换, 在程序里每遇到 S(a,b),就用 a*b 代替,a 和 b 两个实体并没有由宏实际产生,而函数 S 会在栈中定 义两个对象 a 和 b。宏没有生存期、作用域之类的概念,而函数就有。 42. 以下三条输出语句分别输出什么?[C 易] char str1[] = &abc&; char str2[] = &abc&; const char str3[] = &abc&; const char str4[] = &abc&; const char* str5 = &abc&; const char* str6 = &abc&; cout && boolalpha && ( str1==str2 ) && // 输出什么? cout && boolalpha && ( str3==str4 ) && // 输出什么? cout && boolalpha && ( str5==str6 ) && // 输出什么? 答:分别输出 false,false,true。str1 和 str2 都是字符数组,每个都有其自己的存储区,它们的值则是 各存储区首地址,不等;str3 和 str4 同上,只是按 const 语义,它们所指向的数据区不能修改。str5 和 str6 并非数组而是字符指针,并不分配存储区,其后的Dabc‖以常量形式存于静态数据区,而它们 自己仅是指向该区首地址的指针,相等。 43. 非 C++内建型别 A 和 B,在哪几种情况下 B 能隐式转化为 A?[C++中等] 答: a. class B : public A { ……} // B 公有继承自 A,可以是间接继承的 b. class B { operator A( ); } // B 实现了隐式转化为 A 的转化 c. class A { A( const B& ); } // A 实现了 non-explicit 的参数为 B (可以有其他带默认值的参数) 构造函 数 d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个 44. 以下代码中的两个 sizeof 用法有问题吗?[C 易] void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母 { for( size_t i=0; i&sizeof(str)/sizeof(str[0]); ++i ) if( &#39;a&#39;&=str[i] && str[i]&=&#39;z&#39; ) str[i] -= (&#39;a&#39;-&#39;A&#39; ); } char str[] = &aBcDe&; cout && &str 字符长度为: & && sizeof(str)/sizeof(str[0]) && UpperCase( str ); cout && str && 答:函数内的 sizeof 有问题。根据语法,sizeof 如用于数组,只能测出静态数组的大小,无法检测动 态分配的或外部数组大小。函数外的 str 是一个静态定义的数组,因此其大小为 6,函数内的 str 实 际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此 sizeof 作用于上只将其当 指针看,一个指针为 4 个字节,因此返回 4。 45. 以下代码有什么问题?[C 难] void char2Hex( char c ) // 将字符以 16 进制表示 { char ch = c/0x10 + &#39;0&#39;; if( ch & &#39;9&#39; ) ch += (&#39;A&#39;-&#39;9&#39;-1); char cl = c%0x10 + &#39;0&#39;; if( cl & &#39;9&#39; ) cl += (&#39;A&#39;-&#39;9&#39;-1); cout && ch && cl && &#39; &#39;; } char str[] = &I love 中国&; for( size_t i=0; i&strlen(str); ++i ) char2Hex( str[i] ); cout && 46. 以下代码有什么问题?[C++易] struct Test { Test( int ) {} Test() {} void fun() {} }; void main( void ) { Test a(1); a.fun(); Test b(); b.fun(); } 答:变量 b 定义出错。按默认构造函数定义对象,不需要加括号。 47. 以下代码有什么问题?[C++易] cout && (true?1:&1&) && 答:三元表达式D?:‖问号后面的两个操作数必须为同一类型。 8. 以下代码能够编译通过吗,为什么?[C++易] unsigned int const size1 = 2; char str1[ size1 ]; unsigned int temp = 0; cin && unsigned int const size2 = char str2[ size2 ]; 答:str2 定义出错,size2 非编译器期间常量,而数组定义要求长度必须为编译期常量。 48. 以下代码中的输出语句输出 0 吗,为什么?[C++易] struct CLS { int m_i; CLS( int i ) : m_i(i) {} CLS() { CLS(0); } }; CLS cout && obj.m_i && 答:不能。在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函 数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函 数一起调用。 49. C++中的空类,默认产生哪些类成员函数?[C++易] 答: class Empty { public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运算符 const Empty* operator&() // 取址运算符 const }; 50. 以下两条输出语句分别输出什么?[C++难] float a = 1.0f; cout && (int)a && cout && (int&)a && cout && boolalpha && ( (int)a == (int&)a ) && // 输出什么? float b = 0.0f; cout && (int)b && cout && (int&)b && cout && boolalpha && ( (int)b == (int&)b ) && // 输出什么 51. 以下反向遍历 array 数组的方法有什么错误?[STL 易] array.push_back( 1 ); array.push_back( 2 ); array.push_back( 3 ); for( vector::size_type i=array.size()-1; i&=0; --i ) // 反向遍历 array 数组 { cout && array[i] && } 答: 首先数组定义有误, 应加上类型参数: vector&int& array。 其次 vector::size_type 被定义为 unsigned int,即无符号数,这样做为循环变量的 i 为 0 时再减 1 就会变成最大的整数,导致循环失去控制。 52. 以下代码有什么问题?[STL 易] typedef vector IntA IntA array.push_back( 1 ); array.push_back( 2 ); array.push_back( 2 ); array.push_back( 3 ); // 删除 array 数组中所有的 2 for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor ) { if( 2 == *itor ) array.erase( itor ); } 答:同样有缺少类型参数的问题。另外,每次调用Darray.erase( itor );‖,被删除元素之后的内容会自 动往前移,导致迭代漏项,应在删除一项后使 itor--,使之从已经前移的下一个元素起继续遍历。 53. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面] 答: void* mymemcpy( void *dest, const void *src, size_t count ) { char* pdest = static_cast&char*&( dest ); const char* psrc = static_cast&const char*&( src ); if( pdest&psrc && pdest&psrc+cout ) 能考虑到这种情况就行了 { for( size_t i=count-1; i!=-1; --i ) pdest[i] = psrc[i]; } else { for( size_t i=0; i& ++i ) pdest[i] = psrc[i]; } } int main( void ) { char str[] = &&; mymemcpy( str+1, str+0, 9 ); cout && str && system( &Pause& ); return 0; } 54 线程与进程的区别 55:请你分别划划 OSI 的七层网络结构图,和 TCP/IP 的五层结构图? 56:请你详细的解释一下 IP 协议的定义,在哪个层上面,主要有什么作用? TCP 与 UDP 呢? 57:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的? 58:请问 C++的类和 C 里面的 struct 有什么区别? 59:请讲一讲析构函数和虚函数的用法和作用? 60:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的? 61:一些寄存器的题目,主要是寻址和内存管理等一些知识。 62:8086 是多少位的系统?在数据总线上是怎么实现的? *************************************************************************** 73 对于 C++中类(class) 与结构(struct)的描述正确的为: A,类中的成员默认是 private 的,当是可以声明为 public,private 和 protected,结构中定 义的成员默认的都是 B,结构中不允许定义成员函数,当是类中可以定义成员函数; C,结构实例使用 malloc() 动态创建,类对象使用 new 操作符动态分配内存; D,结构和类对象都必须使用 new 创建; E,结构中不可以定义虚函数,当是类中可以定义虚函数. F,结构不可以存在继承关系,当是类可以存在继承关系. 答:A,D,F *************************************************************************** *************************************************************************** 74,两个互相独立的类:ClassA 和 ClassB,都各自定义了非景泰的公有成员函数 PublicFu nc() 和非静态的私有成员函数 PrivateFunc(); 现在要在 ClassA 中增加定义一个成员函数 ClassA::AdditionalPunction(ClassA a,Cl assB b);则可以在 AdditionalPunction(ClassA x,ClassB y)的实现部分(函数功能体内部 ) 出现的合法的表达是最全的是: A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc(); B,x.PrivateFunc();x.PublicFunc();y.PublicFunc(); C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc(); D,x.PublicFunc();y.PublicFunc(); 答:B *************************************************************************** *************************************************************************** 75,C++程序下列说法正确的有: A,对调用的虚函数和模板类都进行迟后编译. B,基类与子类中函数如果要构成虚函数,除了要求在基类中用 virtual 声名,而且必须名 字相同且参数类型相同返回类型相同 C,重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类 型不同. D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析 构函数可以是虚函数. 答:A *************************************************************************** 76,C++中的类与结构的区别? 77,构造函数和析构函数是否可以被重载,为什么? 78,一个类的构造函数和析构函数什么时候被调用,是否需要手工调用?几道题目及自做答案热忱期待高手的答案,我不怕丑!一天做几个,把答案贴出来,请高手指正! 1 #include Dfilename.h‖和#include &filename.h&的区别? 答:#include Dfilename.h‖表明该文件是用户提供的头文件,查找该文件时从当前文件 目录开始;#include &filename.h&表明这个文件是一个工程或标准头文件,查找过程会检 查预定义的目录。 2 头文件的作用是什么? 答:一、通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只 要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功 能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 二、头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的 声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担 。 3 C++函数中值的传递方式有哪几种? 答:C++函数的三种传递方式为:值传递、指针传递和引用传递。 4 内存的分配方式的分配方式有几种? 答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的 整个运行期间都存在。例如全局变量。 二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执 行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高 ,但是分配的内存容量有限。 三、从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程 序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由我们决定,使用非常灵活,但 问题也最多。 交换两个数,不用第三块儿内存!请问怎么实现? 现有 12 个小球,其中只有 1 个球与其它的球重量不同(即有 11 个球重量全相同),并且不知道这 个跟其它球重量不同的球是重还是轻(跟其他 11 个重量相同的球相比而言),那么从这 12 个球 中找出这个跟其它球重量不同的球.北电昨天笔试共 5 道题目: 1.英译汉 ,关于 ITU 和 CCITT 的 2.汉译英,关于 VMware 的 3.两个有序数组的合并,写一个完整的程序 4.填空题,排序二叉树节点的删除,5 个空 5.调试题,多线程文件的读写,编译没有错误,请找出至少三个 bug. 8.内联函数在编译时是否做参数类型检查? 1,程序设计(可以用自然语言来描述,不编程) :C/C++源代码中,检查花括弧(是&(&与 &)&,&{&与&}&)是否匹配,若不匹配,则输出不匹配花括弧所在的行与列。 2,巧排数字,将 1,2,...,19,20 这 20 个数字排成一排,使得相邻的两个数字之和为一个素数,且 首尾两数字之和也为一个素数。编程打印出所有的排法。 3,打印一个 N*N 的方阵,N 为每边字符的个数( 3〈N〈20 ) ,要求最外层为&X&,第二层为&Y&, 从第三层起每层依次打印数字 0,1,2,3,... 例子:当 N =5,打印出下面的图形: XXXXX XYYYX XY0YX XYYYX XXXXX普天 C++笔试题c++最后几个大题目是 1,实现双向链表删除一个节点 P,在节点 P 后插入一个节点,这两个函数。 (北电 重复) 2,写一个函数将其中的\t 都转换成 4 个空格。 3,windows 程序的入口是哪里?写出 windows 消息机制的流程。 4,如何定义和实现一个类的成员函数为回调函数。 虚函数也考了一题,不过不难。 class base{ public: virtual void play(){ cout&&&base&; } } class son: public base{ public: void play(){cout&&&son&;} } void g(base & b){ b. } void main(){ g(s); } 我所收集的 intel 比试题&面试题:(熟悉大公司的题目 ,并不仅仅是为了进这些公司 ,而是很多国内公司考察内容都很接近 而已.)2005 笔试 : 1。高效的内存管理 2。8 皇后问题 面试 q: (2) 编译中的问题:全局变量如 int i=5; int*(pf)()= 分别在何时被初始化?设计时候如何具体 的实现。 (3) OS 相关的问题,内存访问,cache 等(包括 cache 在整个系统中的位置,画出来,并解释) (4) 解释例如 mov ax,100H 这样一条指令的 cpu, os, memory 等都完成了什么样的工作。 (5) Strlen()的 C 语言实现,不能使用任何变量。 (6) 编译中 display 表的一些问题 (7) 一个 hash 函数,输入随机,现发生冲突,如数据集中在某几条中,问怎样处理 hash 函数保证 高效的访问,怎样实现? (8) 把 Switch()case…语句翻译成三元组。 (9) 一个 byte(用 C 语言实现计数其中 1 的个数) ,给出最高效的实现方法。 (位域)或者查表最 快的; (10) 上海有多少个加油站?你是怎样解决这一问题? (11) C 语言参数的入栈顺序?为什么这么实现? (12) 你的最大的优点和缺点分别是什么? (13) C 语言中字符串的翻转,最高效率(时间和空间)的实现? 2004 1. 三个 float:a,b,c 问值 (a+b)+c==(b+a)+c (a+b)+c==(a+c)+b 2. 把一个链表反向填空 (重复) 4. y1(n)=x(2n), y2(n)=x(n/2),问: 如果 y1 为周期函数,那么 x 是否为周期函数 如果 x 为周期函数,那么 y1 是否为周期函数 如果 y2 为周期函数,那么 x 是否为周期函数 如果 x 为周期函数,那么 y2 是否为周期函数 4. 某个程序在一个嵌入式系统(200M 的 CPU,50M 的 SDRAM)中已经最化了,换到另一个系统 (300M 的 CPU,50M 的 SDRAM)中运行,还需要优化吗? 5. x^4+a*x^3+x^2+c*x+d 最少需要作几次乘法 2.填程序 把一个计算 m^n 的程序填充完整 大概的意思是: 有一个全局数组 char s[BUFSIZE] 利用这个数组计算,就是每个单元存放计算结果的一位,index 小的存放低位,index 大 的存放高位 3。有两个线程 void producer() { while(1) { GeneratePacket(); PutPacketIntoBuffer(); Signal(customer); } } void customer() { while(1) { WaitForSignal(); if(PacketInBuffer&10) { ReadAllPackets(); ProcessPackets(); } } } (1)有没有其他方法可以提高程序的性能 (2)可不可以不使用信号之类的机制来实现上述的功能 4。优化下面的程序 (0)sum=0 (1)I=1 (2)T1=4*I (3)T2=address(A)-4 (4)T3=T2[T1] (5)T4=address(B)-4 (6)T5=4*I (7)T6=T4[T5] (8)T7=T3*T5 (9)sum=sum+T6 (10)I=I+1 (10)IF I&20 GOTO (2) 2003 年的 1:概率题。x,y 为随机变量,联合概率密度 f(x,y) = intig(0,1)*dx*intig(0,x)*k*d y,k 为常数,求 k=? E(xy)=? 注:intig(a,b)为 a 到 b 的定积分。 2:概率题。A,B 为随机事件,以下哪个正确 A. P(A U B)*p(AB) &= P(A)P(B) B. P(A U B)*p(AB) &= P(A)P(B) C. P(A U B)*p(AB) &= P(A) + P(B) D. P(A U B)*p(AB) &= P(A) + P(B) 3: 信道带宽 200kHz,信噪比 10dB,求信道波特率=? 4:以下代码运行结果是什么 int main() { int a,b,c,abc = 0; a=b=c=40; if(c) { abc = a*b+c; } printf(&%d,%d&, abc, c); return 0; } 5:给出了从纽约出发和到达落山鸡的各种航班信息,写出找到一条从纽约到落山鸡的最 短距离的航班组合的代码。 6:从计算机图形上截取某个物体边缘的若干个坐标,求这个物体面积,并跟判断是方形 还是圆形,为啥。(坐标不记得,大概是个圆)。 2005 年腾讯招聘选择题(60) c/c++ os linux 方面的基础知识 c 的 Sizeof 函数有好几个! 程序填空(40) 1.(20) 4 空 x5 不使用额外空间,将 A,B 两链表的元素交叉归并 2.(20) 4 空 x5 MFC 将树序列化 转存在数组或 链表中! 1.请定义一个宏,比较两个数 a、b 的大小,不能使用大于、小于、if 语句 // 这样转向定义应该不算违规吧! #include &iostream& #define Cmp(x,y) compare(x,y) int compare( int a, int b) { a^=(1&&31); b^=(1&&31); int i=31; while ((i^-1) && !((a&(1&&i))^(b&(1&&i)))) return (i^-1)?(((a&&i)&1)?1:-1):0; }i--;int _tmain() { c = Cmp(5,4); cout&&c&& return 0; } (一叶落而知天下秋) 的答案: #define COMPARE(a,b) ((a)-(b)) ? b:a 2.如何输出源文件的标题和目前执行行的行数 cout && &Filename & && __FILE__ && & Line & && __LINE__ && 3.两个数相乘,小数点后位数没有限制,请写一个高精度算法 算法提示: 输入 string a, string b; 计算 string c=a*b; 返回 1, 纪录小数点在 a,b 中的位置 l1,l2, 则需要小数点后移动位置数为 l=length(a)+length(b)-l1-l2-2; 2, 去掉 a,b 中的小数点, (a,b 小数点后移,使 a,b 变为整数) 3, 计算 c=a*b; (同整数的大数相乘算法) 4, 输出 c,(注意在输出倒数第 l 个数时,输出一个小数点。若是输出的数少于 l 个,就补 0) du51(郁郁思扬)的答案: 变为整数求就行了.输入的时候记一下,小数点位置..输出再做点文章就行了. 下面的是大整数的运算. #include&iostream& #define MAX 10000 struct Node{ Node * }; void output(Node *head) { if(!head-&next&&!head-&data) output(head-&next); cout&&head-& } void Mul(char *a,char *b,int pos) { char *ap=a,*bp=b; Node *head=0; head=new Nhead-&data=0,head-&next=0; //头 Node *p,*q=head,*p1; int temp=0,temp1, while(*bp) //若乘数不为空 ,继续. { p=q-&p1=q; bbit=*bp-48; //把当前位转为整型 while(*ap||temp) //若被乘数不空,继续 { if(!p) //若要操作的结点为空,申请之 { p=new N p-&data=0; p-&next=0; p1-&next=p; } if(*ap==0)temp1= else { temp1=(p1-&data)+(*ap-48)*bbit+ap++; } p1-&data=temp1%10; //留当前位 temp=temp1/10; //进位以 int 的形式留下. p1=p;p=p-& //被乘数到下一位 } ap=a;bp++;q=q-& //q 进下一位 } p= output(p); //显示 cout&& while(head) //释放空间 { p=head-& head=p; } } int main() { cout&&&请输入两个数&&& char test1[MAX],test2[MAX]; cin.getline(test1,MAX,&#39;\n&#39;); cin.getline(test2,MAX,&#39;\n&#39;); Mul(strrev(test1),strrev(test2)); system(&PAUSE&); return 0; } 上面大整数已经写了.你加几个东西就行了. #include&iostream& #define MAX 10000 struct Node{ Node * }; void output(Node *head,int pos) { if(!head-&next&&!head-&data) output(head-&next,pos-1); cout&&head-& if(!pos)cout&&&.&; } void Mul(char *a,char *b,int pos) { char *ap=a,*bp=b; Node *head=0; head=new Nhead-&data=0,head-&next=0; //头 Node *p,*q=head,*p1; int temp=0,temp1, while(*bp) //若乘数不为空 ,继续. { p=q-&p1=q; bbit=*bp-48; //把当前位转为整型 while(*ap||temp) //若被乘数不空,继续 { if(!p) //若要操作的结点为空,申请之 { p=new N p-&data=0; p-&next=0; p1-&next=p; } if(*ap==0)temp1= else { temp1=(p1-&data)+(*ap-48)*bbit+ap++; } p1-&data=temp1%10; //留当前位 temp=temp1/10; //进位以 int 的形式留下. p1=p;p=p-& //被乘数到下一位 } ap=a;bp++;q=q-& //q 进下一位 } p= output(p,pos); //显示 cout&& while(head) //释放空间 { p=head-& head=p; } } int main() { cout&&&请输入两个数&&& char test1[MAX],test2[MAX],*p; int pos=0; cin.getline(test1,MAX,&#39;\n&#39;); cin.getline(test2,MAX,&#39;\n&#39;); if(p=strchr(test1,&#39;.&#39;)) { pos+=strlen(test1)-(p-test1)-1; do { p++; *(p-1)=*p; }while(*p); } if(p=strchr(test2,&#39;.&#39;)) { pos+=strlen(test2)-(p-test2)-1; do { p++; *(p-1)=*p; }while(*p); } Mul(strrev(test1),strrev(test2),pos); system(&PAUSE&); return 0; } 4.写一个病毒 cout&&&一个病毒&&& (开玩笑的,没搞过,^_^) 5.让你在
个浮点数中找出最大的 10000 个,要求时间复杂度优。 //本算法使用快排,O(n*lg(n)) //最低可以找到线性算法,使用预先区域统计划分!类试于构造 Quad Trees! 写起来代码会长些! #include &stdio.h& #include &stdlib.h& #define Max
int a[Max+10]; int cmp( const void *a, const void *b) { int *x = ( int *) int *y = ( int *) return *x-*y; } int main() { int n=0; while (scanf(&%d&,&a[n])==1) n++; qsort(a,n,4,cmp); for ( int i=0;i&3;i++) printf(&%d&,a[ i ]); return 1; } 5 、有 A 、 B 、 C 、 D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1 、 2 、 5 、 10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在 17 分钟内 这四个人都过桥? Solution:关键是时间最长的两个人必须同时过桥 The First Time : A(1) 和 B(2) 过桥, A(1) 返回 Cost : 1+2 The Second Time : C(5) 和 D(10) 过桥, B(2) 返回 Cost : 10+2 The Third Time A(1) 和 B(2) 过桥 Cost : 2 Total Time Cost : (1+2)+(10+2)+2=17 minutes 微软智力题 1.烧一根不均匀的绳子,从头烧到尾总共需要 1 个小时,问如何用烧绳子的方法来确定半小时 的时间呢? 2.10 个海盗抢到了 100 颗宝石,每一颗都一样大小且价值连城。他们决定这么分: (1)抽签决定自己的号码(1~10) ; (2)首先,由 1 号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方 案进行分配,否则将被扔进大海喂鲨鱼; (3)如果 1 号死后,再由 2 号提出分配方案,然后剩下的 4 个人进行表决,当且仅当超过半数 的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼; (4)依此类推…… 条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。 问题:第一个海盗提出怎样的分配方案才能使自己的收益最大化? 3.为什么下水道的盖子是圆的? 4.中国有多少辆汽车? 5.你让工人为你工作 7 天,回报是一根金条,这根金条平分成相连的 7 段,你必须在每天结束 的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费? 6.有一辆火车以每小时 15 公里的速度离开北京直奔广州,同时另一辆火车以每小时 20 公里的 速度从广州开往北京。如果有一只鸟,以 30 公里每小时的速度和两辆火车同时启动,从北京出发, 碰到另一辆车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相 遇。请问,这只鸟共飞行了多长的距离? 7.你有两个罐子以及 50 个红色弹球和 50 个蓝色弹球,随机选出一个罐子,随机选出一个弹球 放入罐子,怎样给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少? 8.想像你站在镜子前,请问,为什么镜子中的影像可以左右颠倒,却不能上下颠倒呢? 9. 如果你有无穷多的水, 一个 3 公升的提捅, 一个 5 公升的提捅, 两只提捅形状上下都不均匀, 问你如何才能准确称出 4 公升的水? 10.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少 次就可以确定你肯定有两个同一颜色的果冻? 11.连续整数之和为 1000 的共有几组? 12.从同一地点出发的相同型号的飞机,可是每架飞机装满油只能绕地球飞半周,飞机之间可 以加油,加完油的飞机必须回到起点。问至少要多少架次,才能满足有一架绕地球一周。 参考答案: 1.两边一起烧。 2.96,0,1,0,1,0,1,0,1,0。 3.因为口是圆的。 4.很多。 5.分 1,2,4。 6.6/7 北京到广州的距离。 7.100%。 8.平面镜成像原理(或者是D眼睛是左右长的‖) 。 9.3 先装满,倒在 5 里,再把 3 装满,倒进 5 里。把 5 里的水倒掉,把 3 里剩下的水倒进 5 里, 再把 3 装满,倒进 5 里,ok! 10.一次。 11.首先 1000 为一个解。连续数的平均值设为 x,1000 必须是 x 的整数倍。假如连续数的个数 为偶数个,x 就不是整数了。x 的 2 倍只能是 5,25,125 才行。因为平均值为 12.5,要连续 80 个达 不到。125/2&# 是可以的。即 62,63,61,64,等等。连续数的个数为奇数时,平均值为 整数。1000 为平均值的奇数倍。;2× 2× 2× 5× 5× 5;x 可以为 2,4,8,40,200 排除后剩 下 40 和 200 是可以的。所以答案为平均值为 62.5,40,200,1000 的 4 组整数。 12.答案是 5 架次。一般的解法可以分为如下两个部分: (1)直线飞行 一架飞机载满油飞行距离为 1,n 架飞机最远能飞多远?在不是兜圈没有迎头接应的情况,这问 题就是 n 架飞机能飞多远?存在的极值问题是不要重复飞行,比如两架飞机同时给一架飞机加油且 同时飞回来即可认为是重复,或者换句话说,离出发点越远,在飞的飞机就越少,这个极值条件是 显然的,因为 n 架飞机带的油是一定的,如重复,则浪费的油就越多。比如最后肯定是只有一架飞 机全程飞行,注意D全程‖这两个字,也就是不要重复的极值条件。如果是两架飞机的话,肯定是一 架给另一架加满油,并使剩下的油刚好能回去,就说第二架飞机带的油耗在 3 倍于从出发到加油的 路程上,有三架飞机第三架带的油耗在 5 倍于从出发到其加油的路程上,所以 n 架飞机最远能飞行 的距离为 s&#/3+…+1/(2n+1)这个级数是发散的,所以理论上只要飞机足够多最终可以 使一架飞机飞到无穷远,当然实际上不可能一架飞机在飞行 1/(2n+1)时间内同时给 n&#61485;1 个飞机加油。 (2)可以迎头接应加油 一架飞机载满油飞行距离为 1/2,最少几架飞机能飞行距离 1?也是根据不要重复飞行的极值条 件,得出最远处肯定是只有一架飞机飞行,这样得出由 1/2 处对称两边 1/4 肯定是一架飞机飞行,用 上面的公式即可知道一边至少需要两架飞机支持, (1/3+1/5)/2&1/4(左边除以 2 是一架飞机飞行距 离为 1/2) ,但是有一点点剩余,所以想像为一个滑轮(中间一个飞机是个绳子,两边两架飞机是个 棒)的话,可以滑动一点距离,就说加油地点可以在一定距离内变动(很容易算出来每架飞机的加 油地点和加油数量,等等) 数学篇 1.1000!有几位数,为什么? 2.F(n) 1 n&8 n&12 F(n) 2 n&2 F(n) 3 n 6 F(n) 4 n other 使用+ * /和 sign(n)函数组合出 F(n)函数 sign(n) 0 n 0 sign(n)1 n&0 sign(n) 1 n&0 3.编一个程序求质数的和,例如 F(7) 1+3+5+7+11+13 +17 57。 逻辑推理题 1.此题源于 1981 年柏林的德国逻辑思考学院,98%的测验者无法解答此题。 有五间房屋排成一列;所有房屋的外表颜色都不一样;所有的屋主来自不同的国家;所有的屋 主都养不同的宠物;喝不同的饮料;抽不同的香烟。 (1)英国人住在红色房屋里; (2)瑞典人养了一只狗; (3)丹麦人喝茶; (4)绿色的房子在白 色的房子的左边; (5)绿色房屋的屋主喝咖啡; (6)吸 Pall Mall 香烟的屋主养鸟; (7)黄色屋主吸 Dunhill 香烟; (8)位于最中间的屋主喝牛奶; (9)挪威人住在第一间房屋里; (10)吸 Blend 香烟 的人住在养猫人家的隔壁; (11)养马的屋主在吸 Dunhill 香烟的人家的隔壁; (12)吸 Blue Master 香烟的屋主喝啤酒; (13)德国人吸 Prince 香烟; (14)挪威人住在蓝色房子隔壁; (15)只喝开水的 人住在吸 Blend 香烟的人的隔壁 问:谁养鱼? 提示:首先确定 房子颜色:红、黄、绿、白、蓝 Color 1 2 3 4 5 国籍:英、瑞、丹、挪、德=& Nationality 1 2 3 4 5 饮料:茶、咖、奶、酒、水=& Drink 1 2 3 4 5 烟:PM、DH、BM、PR、混=& Tobacco 1 2 3 4 5 宠物:狗、鸟、马、猫、鱼=& Pet 1 2 3 4 5 然后有: (9)=&N1=挪威 (14)=&C2=蓝 (4)=&如 C3=绿,C4=白,则(8)和(5)矛盾,所以 C4=绿,C5=白 剩下红黄只能为 C1,C3 (1)=&C3=红,N3=英国,C1=黄 (8)=&D3=牛奶 (5)=&D4=咖啡 (7)=&T1=DH (11)=&P2=马 那么: 挪威 ? 英国 ? ? 黄 蓝 红 绿 白 ? ? 牛奶 咖啡 ? DH ? ? ? ? ? 马 ? ? ? (12)=&啤酒只能为 D2 或 D5,BM 只能为 T2 或 T5=&D1=矿泉水 (3)=&茶只能为 D2 或 D5,丹麦只能为 N2 或 N5 (15)=&T2=混合烟=&BM=T5, 所以剩下啤酒=D5,茶=T2=&丹麦=D2 然后: 挪威 丹麦 英国 ? ? 黄 蓝 红 绿 白 矿泉水 茶 牛奶 咖啡 啤酒 DH 混合烟 ? ? BM ? 马 ? ? ? (13)=&德国=N4,PR=T4 所以,瑞典=N5,PM=T3 (2)=&狗=P5 (6)=&鸟=P3 (10)=&猫=P1 得到: 挪威 丹麦 英国 德国 瑞典 黄 蓝 红 绿 白 矿泉水 茶 牛奶 咖啡 啤酒 DH 混合烟 PM PR BM 猫 马 鸟 ? 狗 所以,最后剩下的鱼只能由德国人养了。2. 请仅用一笔画四根直线,将上图 9 个点全部连接。 3.对一批编号为 1~100 全部开关朝上(开)的灯进行以下操作: 凡是 1 的倍数反方向拨一次开关;2 的倍数反方向又拨一次开关;3 的倍数反方向又拨一次开 关…… 问:最后为关熄状态的灯的编号。 微软招聘总经理助理的三道面试题 1. 某手机厂家由于设计失误, 有可能造成电池寿命比原来设计的寿命短一半 (不是冲放电时间) , 解决方案就是更换电池或给 50 元购买该厂家新手机的折换券。 请给所有已购买的用户写信告诉解决 方案。 2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规 定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导,将城砖取回? 3.王小姐由于工作失误,将 2 万元的笔记本电脑以 1.2 万元错卖给李先生,王小姐的经理应该 怎么写信给李先生将钱要回?英文面试题目 1. Algorithms * What‘s the difference between a linked list and an array? * Implement an algorithm to sort a linked list. Why did you pick the method you did? * Implement an algorithm to sort an array. Why did you pick the method you did? * Implement strstr() (or some other string library function). * Reverse a string. Optimize for speed. Optimize for space. * Count the number of set bits in a number. Now optimize for speed. Now optimize for size. * How would you find a cycle in a linked list? * Give me an algorithm to shuffle a deck of cards, given that the cards are stored in an array of ints. * Write a function that takes in a string parameter and checks to see whether or not it is an integer, and if it is then return the integer value. * Write a function to print all of the permutations of a string. * Implement malloc. * Write a function to print the Fibonacci numbers. * Write a function to copy two strings, A and B. The last few bytes of string A overlap the first few bytes of string B. * How would you print out the data in a binary tree, level by level, starting at the top? 2. Applications * How can computer technology be integrated in an elevator system for a hundred story office building? How do you optimize for availability? How would variation of traffic over a typical work week or floor or time of day affect this? * How would you redesign an ATM? * Suppose we wanted to run a microwave oven from the computer. What kind of software would you write to do this? * How would you design a coffee-machine for an automobile. 3. Thinkers * How are M&Ms made? * If you had to learn a new computer language, how would you go about doing it? * If MS told you we were willing to invest $5 million in a start up of your choice, what business would you start? Why? * If you could gather all of the computer manufacturers in the world together into one room and then tell them one thing that they would be compelled to do,what would it be? * Explain a scenario for testing a salt shaker. * If you are going to receive an award in 5 years, what is it for and who is the audience? * How would you explain how to use Microsoft Excel to your grandma? * Why is it that when you turn on the hot water in any hotel, for example, the hot water comes pouring out almost instantaneously?微软亚洲技术支持中心面试题目1.进程和线程的差别。 2.Heap 与 stack 的差别。 3.Windows 下的内存是如何管理的? 4.介绍.Net 和.Net 的安全性。 5.客户端如何访问.Net 组件实现 Web Service? 6.C/C++编译器中虚表是如何完成的? 7.谈谈 COM 的线程模型。然后讨论进程内/外组件的差别。 8.谈谈 IA32 下的分页机制。 9.给两个变量,如何找出一个带环单链表中是什么地方出现环的? 10.在 IA32 中一共有多少种办法从用户态跳到内核态? 11.如果只想让程序有一个实例运行,不能运行两个。像 winamp 一样,只能开一个窗口,怎样 实现? 12.如何截取键盘的响应,让所有的?a‘变成?b‘? 13.Apartment 在 COM 中有什么用?为什么要引入? 14.存储过程是什么?有什么用?有什么优点? 15.Template 有什么特点?什么时候用? 16.谈谈 Windows DNA 结构的特点和优点。 微软研究院笔试题目 1.#include &stdio.h& #include &String.h& class CBuffer { char * m_pB int m_ publc: CBuffer() { m_pBuffer=NULL; } ~CBuffer() { Free(); } void Allocte(int size) { m_size= m_pBuffer= new char[size]; } private: void Free() { if(m_pBuffer!=NULL) { delete m_pB m_pBuffer=NULL; } } public: void SaveString(const char* pText) const { strcpy(m_pBuffer, pText); char* GetBuffer() const { return m_pB } }; void main (int argc, char* argv[]) { cBuffer buffer1; buffer1.SaveString(DMicrosoft‖); printf(buffer1.GetBuffer()); } } 找出 Allocate, SaveString, main 的错误。 2.打印DWelcome MSR Asia‖ #include &stdio.h& #include &string.h& char * GetName (void) { //To return DMSR Asia‖ String char name[]=DMSR Asia‖; } void main(int argc, char* argv[]) { char name[32]; //Fill in zeros into name for(int i=0;i&=32;i++) { name[1]=?\0?; } //copy DWelcome‖ to name name=DWelcome‖; //Append a blank char name[8]=‖; //Append string to name strcat(name,GetName()); //print out printf(name); } 找出程序中的错误。 3.#include &stdio.h& class A { public: void FuncA() { printf(DFuncA called\n‖); } virtual void FuncB() { printf(DFuncB called\n‖); } }; class B: public A { public: void FuncA() { A::FuncA(); printf(DFuncAB called\n‖); } virtual void FuncB() { printf(DFuncBB called\n‖); } }; void main(void) { B A * pa=&b; A *pa2=new A; b.FuncA(); b.FuncB(); pa-&FuncA(); pa-&FuncB(); pa2-&FuncA(); pa2-&FuncB(); delete pa2; } What is the output of the above program? 4.#include &stdio.h& #include &string.h& int FindSubString(char* pch) { int count=0; char* p1= while(*p1!=?\0‘) { if(*p1==p1[1]-1) { p1++; count++; } else { } } int count2= while(*p1!=?\0‘) { if(*p1!==p1[1]+1) { p1++; count2--; } else { } if(count2==0) return 0; } void ModifyString(char* pText) { char* p1=pT char* p2=p1; while(*p1!=?\0‘) { int count=FindSubString(p1); if(count&0) { *p2++=*p1; sprintf(p2, D%I‖, count); while(*p2!= ?\0‘) { p2++; } p1+=count+count+1; } else { *p2++=*p1++; } } } void main(void) { char text[32]=DXYBCDCBABABA‖; ModifyString(text); printf(text); } In the main() function, after ModifyString(text) is called, what‘s the value of ?text‘?微创笔试题目(微创,微软在中国的合资公司)1.上海的苏州河由于遭受多年的工业污染,一直是条臭水沟。上海市政府下了很大决心清理苏 州河,你觉得需要几年能让河水变清?你的依据是什么? 2.找出字符串 A 中包含的字符可以进行的所有不同组合。例如:abccd 中,ab,ac,bc,cc, abd 等都是可能的组合。 (请用 C/C++编程,不允许上机操作) 3.请估算月球的体积。 4.经常去的技术网站,请举例。 5.对软件开发过程的理解。 6.上海有多少外籍和港澳台人士?你的依据是什么?(不得引用政府和调研机构数据) 7.字符串 A 是由 n 个小写英文字母(a ~ z)构成的,定义为 char A[n]。你能用更少的空间表 示这个字符串吗?请写出从 char A[n]到你的新的储存格式的转换函数。 (请用 C/C++编程,不允许上 机操作) 8.哈希表和数组的定义,区别,优缺点。 9.用递归实现菲波列数列。 10.用 dhtml 写页面。 11.一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼, 每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗? (去年应聘到微 创的 S 小姐面试遇到的就是这道智力题。她的回答是:选择前五层楼都不拿,观察各层钻石的大小, 做到心中有数。后五层楼再选择,选择大小接近前五层楼出现过最大钻石大小的钻石。她至今也不 知道这道题的准确答案,D也许就没有准确答案,就是考一下你的思路,‖她如是说。 ) 12.U2 合唱团在 17 分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发, 你得帮助他们到达另一端,天色很暗,而他们只有一只手电筒。一次同时最多可以有两人一起过桥, 而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒是不能用丢 的方式来传递的。四个人的步行速度各不同,若两人同行则以较慢者的速度为准。Bono 需花 1 分钟 过桥,Edge 需花 2 分钟过桥,Adam 需花 5 分钟过桥,Larry 需花 10 分钟过桥。他们要如何在 17 分 钟内过桥呢?(有个同济的学生写文章说他当时在微软面试时就是碰到了这道题,最短只能做出在 19 分钟内过桥,微软的人对他讲这样的结果已经是不错的了! ) 13.烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(参考答案:两边一起烧) 14.为什么下水道的盖子是圆的?(从复旦大学一位计算机系教授那里听来的答案:因为如果是 方的、长方的或椭圆的,那无聊之徒拎起来它就可以直接扔进地下道啦!但圆形的盖子嘛,就可以 避免这种情况了) 15.有 7 克、2 克砝码各一个,天平一只,如何只用这些物品三次将 140 克的盐分成 50、90 克各 一份?Intel 笔试面试题目智力题 1.每天中午从法国塞纳河畔的勒阿佛有一艘轮船驶往美国纽约,在同一时刻纽约也有一艘轮船 驶往勒阿佛。已知横渡一次的时间是 7 天 7 夜,轮船匀速航行,在同一航线,轮船近距离可见。 请问今天中午从勒阿佛开出的船会遇到几艘从纽约来的船? 2.巴拿赫病故于 1945 年 8 月 31 日。他的出生年份恰好是他在世时某年年龄的平方,问:他是 哪年出生的? 答案: 设他在世时某年年龄为 x, 则 x 的平方&1945, 且 x 为自然数。 其出生年份 x 的平方 ; 他在世年龄 1945 ;x 。1945 的平方根 ;44.1,则 x 应为 44 或略小于此的数。而44 时,44× 43 ;1892 ,算得其在世年龄为
;53 ;又43 时,43× 42 ;1806,得其在世年龄为
; 若 x 再取小,其在世年龄 越大,显然不妥。故 x&#61501;44,即他出生于 1892 年,终年 53 岁。 3. (图形描述:一个各边相等的十字图案) 上图中各边相等,要求:用最少的分割,拼成一个正方形。 笔试题目 10. #include Dstdafx.h‖ #include &iostream.h& struct bit { int a:3; int b:2; int c:3; }; int main(int argc, char* argv[]) { char *c = (char*)&s; *c = 0x99; cout && s.a &&endl &&s.b&&endl&&s.c&& return 0; } Output:? 11. 挑 bug,在 linux 下运行: #include &stdio.h& char *reverse(char* str) { int len=0, i=0; char *pstr=str, *ptemp,* while(*++pstr) len++; pstr--; //ptemp=(char*)malloc(len+1); ptemp=(char*)malloc(len+1); pd= while(len--){ *ptemp=* ptemp++; pstr--; i++; } *ptemp=* ptemp++; *ptemp=?\0‘; } main() { char string[40]= DHello World!‖; char *pstr= printf(D%s‖, pstr); printf(D%s‖, reverse(pstr)); } Intel 2004 北京笔试题 问答题 1.你觉得 C 程序中为什么会有 main(),有没有想过 exit,return,或什么都不做也可以让程序 正常终止? 2.TOTAL 个人围一圈,从 1 开始数到 N,谁数到 N 出圈,下一个人继续从 1 开始数,返回最 后一个出局的人。 #define TOTAL 15; int xxxx(int N) { int ring[TOTAL] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1} //全是 1 int nextstart = 0, counter=0; for (i =1; i&TOTAL; i++){ counter = 0; while(counter &N) { if (_______________) ( ;) else (____________;) } ring[nextstart]=0 } return nextstart +1; } IBM 笔试题目 字母矩阵题目(15 分钟) 给你一个矩阵: (一) (二) (三) (四) (五) 1abcde 2bcaed 3cbead 4cedba 5edacb 回答以下问题。 (1) 将第一行和第四行交换后, 第一行第四个字母下面的左边的下面的右边的字母是 。 (简单) (2)将所有出现在 d 左边的字母从矩阵中删掉。将所有出现在 a 左边的 c 字母从矩阵中删掉。 如果矩阵中剩下的字母的种类的数目大于 3,答案为原矩阵中左上方至右下方对角线上出现两次的 字母。如果矩阵中剩下的字母的种类的数目小于或者等于 3,答案为原矩阵中右上至左下对角线上 出现 4 次的字母是 。 (3)将所有的 a 用 4 替换,所有的 d 用 2 替换,哪一列的总和 最大 ①第 1 列 ②第 2 列 ③第 3 列 ④第 4 列 ⑤第五列 (4)从左上角的字母开始,顺时针沿矩}

我要回帖

更多关于 走地大球分析系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信