2014.09.24面试总结

来源:互联网 发布:o2o软件开发 编辑:程序博客网 时间:2024/05/16 11:41

笔试:

1.有这么一个宏定义:

define MINUS(x,y) x-y//get x-y value

问MINUS(5,5)*5的结果是多少?

    以为宏展开后会变成这种情况:

x-y//get x-y value*5

    这样*5实际上是被注释掉了,结果应该为0.

    后来实际编程测试发现结果是-20,即宏定义中的注释语句并不属于宏,原式=5-5*5


2.定义一个宏,完成对两个int型变量的交换

#define SWAP(a,b) { (a)=(a)^(b); (b)=(a)^(b); (a)=(a)^(b); }int a=1 , b=2;SWAP(a,b);

在宏内最后一个语句(a)=(a)^(b)后面犹豫要不要加分号';',因为宏调用时是SWAP(a,b);的形式,后面会附带一个分号。实际测试后发现必须要加分号,两个分号连在一起不会影响编译和运行结果,形如;};结尾的语句也不会有问题


面试:

1.什么是多态?自己对多态的理解?多态的好处?C++如何实现多态?

    一个接口,多种实现,通过一个接口能完成不同的任务,代码复用,代码可扩展,用父类管理子类,静态绑定,动态绑定。


2.const关键字有几种用法?

    常量,返回常量的函数,常量参数,常量指针,指针常量,成员常量,成员常函数


3.static关键字有几种用法?

    文件内变量,文件内函数,函数内变量,类内变量,类内成员函数


4.TCP三次握手、四次断开示意图。

    略


5.socket编程中有没有用过select()和epoll()这两种函数?各有什么作用?

见http://blog.csdn.net/this_capslock/article/details/39649001


6.编写一个函数,对两个已经排序好的单链表进行合并。

   找到头结点,每次将较小的结点插入,最后将剩下的结点插入


7.编写一个函数,判断一棵树是不是平衡二叉树。
    递归思想,后序遍历




0 0
原创粉丝点击