C/C++拾遗2

来源:互联网 发布:淘宝我的评价在哪 编辑:程序博客网 时间:2024/04/30 22:42
1、下面的程序输出什么?为什么?(某 CPU 公司面试题)
int main(int argc, char* argv[])
{
    unsigned char a = 0xA5;
    unsigned char b = ~a >> 4 + 1;
    printf("%d\n", b);
    return 0;

}

(分析:第一个坑:运算符优先级,+的优先级大于>>;第二个坑:当小类型变量和整型做运算的时候,会转化为int类型。

这个题,将得到的int型的结果再截断,最后答案:250)





6. 写程序判断一个数是否是 2 的 N 次方! (某 CPU 公司面试题)

(分析:

2的1次方:0000 0001

2的2次方:0000 0010

2的3次方:0000 0100

那么,如果一个数是2的N次方,那么这个数的二进制就只有一个1.


假设X这个数是2的N次方,(X-1 & X)必然等于0!!!





7. 有 2 个数组保存着 100 以内的自然数,编程求出两个数组的交集(两个数组中同时出现的自然数)。


#include <iostream>using namespace std;int main(){    int a[] = {1, 2, 3, 4, 5, 6};    int b[] = {3, 5, 7, 9};    int buf[100] = {0};        for(int i=0; i<sizeof(a)/sizeof(*a); i++)    {        buf[a[i]]++;    }    for(int i=0; i<sizeof(b)/sizeof(*b); i++)    {        if( buf[b[i]] )            cout << b[i] << endl;    }        return 0;}








8. 面试时如何被问及期望的薪水,该如何回答?

(打听公司底薪+500)


9. 职场新人应该注意些什么问题?

(如果有的师傅不屌你,那么你就需要主动问师傅有什么杂活可以帮你做的,给师傅节省了时间,打好了关系,他才会也才有时间教你。不要坐着耗下去,因为即便跳槽也一样。)






0 0
原创粉丝点击