作为应届生遇到的笔试题

来源:互联网 发布:spss 23 mac 许可证 编辑:程序博客网 时间:2024/05/24 01:49

1,最快的方法判断一个数是不是2的幂次方(网易)。

        思路,如果系2的幂次方转换成2进制的话,有1个1,后面一堆0;方法:num&(num-1)==0即可。
但是为了更合理,我们来考虑下有没有不一般的情况,1,负数?用-8,-9来测试一下,与了后不是0,通过。2, 2的分数次幂。不过这个不会搞。。。。悲剧
        在网上搜了下,发现还可以扩展一下,如果系2的幂次方,判断系几次幂。可以设置一个计数器,用循环移位来改变计数值。while(num!=0){num>>=1;i++}

2,线程死锁
   考了银行家算法和剥夺资源的方式的作用分别是什么,当时不会,回来百度百科看就明白了。

3,图灵机停机
     看了一下午也不懂,没办法,放弃了
------------------------------------------------------------------------------------------------------------------------------------------------------
4,

一道关于C++ 继承/虚函数 笔试题

#include "stdafx.h"#include "stdio.h"#include "string.h"class Father{public:name(){printf("father name\n");};virtual call(){printf("father call\n");};};class Son: public Father{public:name(){printf("Son name\n");};virtual call(){printf("Son call\n");};};main(){Son *Son1=new Son();Father *father1=(Father *)Son1;father1->call();father1->name();((Son *)(father1))->call();((Son *)(father1))->name();Father *f2=new Father();Son *s2=(Son*)f2;s2->call();s2->name();((Father *)(s2))->call();((Father *)(s2))->name();}
output::
Son callfather nameSon callSon namefather callSon namefather callfather name

虚函数的调用通过虚函数指针来调用,如果new的对象是Son的,则不管它转化成什么指针,它的指针都是Son内部的,与指针类型无关,只与指针地址有关

非虚函数的调用则由指针类型决定

本条转自http://www.cnblogs.com/yangyh/archive/2011/06/04/2072393.html?TPSecNotice ,我觉得解释得很清楚,一直都很乱,以后不会了。

-----------------------------------------------------------------------------------------------------------------------------------