9.22烽火众智

上午到烽火众智笔试,考的都是基础题,但好多还是答不出来或不确定,自己基础还是太差。深感学习心浮气躁之弊,遂想潜心修炼,每日一记,亡羊补牢,未为晚也。

以下是记下的部分笔试题目,回来研究。

1、下面程序的执行结果是:

#include
using namespace std; 

void main()
{
    char str1[] = "abc";
    char str2[] = "abc";
    const char str3[] = "abc";
    const char str4[] = "abc";
    char *str5 = str1;
    char *str6 = str1;
    char *str7 = str2;
    char *str8 = str2;

    cout << (str1 == str2) <     cout << (str3 == str4) <     cout << (str5 == str6) <     cout << (str7 == str8) < }

以上是我自己在VC6.0中输入的,原题只有main函数体中的内容。

若不加using namespace std;  则报错cout无法识别。

运行结果:0

                  0

                  1

                  1

而自己答的是1 1 0 0 ,竟没有一个对的。

现分析原因。

单步运行,在watch窗口中看各表达式的值:

 

显然,str1、str2、str3、str4、分别是存放字符串的地址,它们是不同的变量,地址当然各不相同。

而且都是在栈上分配的内存,每个变量分配了4字节的内存空间。

str5、str6为str1的内存首地址,str、str8为str2的内存首地址。

至此,答案很显然了。

队和站的区别,常看才能掌握http://blog.csdn.net/hairetz/article/details/4141043

2、写一个C函数,判断大小端

我写的是:

int is_Big_endian()
{
    return (0x01>>1) >0 ? 1:0;
}

后来一想觉得不大对,因为0x01是以整型参与运算的,移位后的结果恐怕不能确定。

http://blog.csdn.net/yujianrong/article/details/6071595这是网上找的方法,第三种比较好懂:

unsigned char chk_cpu(void)

{

    int data=0x0011;

    char temp = *(char*)&data;

    if(temp == 0)

              return 0;

    else

               return 1;

}

这题恐怕也要泡汤了。

还有单向链表的插入、删除、查询,string类型的构造函数、析构函数和赋值函数,手写代码,实在太生疏。

网络通信的模型、路由器工作原理等,看来还要恶补。

 

你可能感兴趣的:(笔试面试)