码迷,mamicode.com
首页 > 其他好文 > 详细

常见笔试题

时间:2015-05-12 11:12:46      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:

1.sizeof和strlen的区别

①sizeof是算符,在编译期间计算;strlen是函数,在运行期间计算。

②strlen只能用char*做参数,且必须是以’\0‘结尾的,计算结果不包括’\0‘。

③数组作为strlen的参数时,退化为指针;数组作为sizeof的参数时不退化。

④sizeof计算对象在内存中所占字节,strlen计算字符长度。

如:int a[10] = {0};  sizeof(a)结果为40

 

2.TCP/IP建立、关闭连接的过程

TCP/IP通过三次握手建立一个连接

第一次握手:客户端发生SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务确认。

第二次握手:服务器收到SYN包,对客户的SYN进行确认(SYN=j+1),同时自己也发送一个ACK包(ack=k)。服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN包和ACK包,对ACK进行确认,向服务器发送确认包ACK(ack=k+1)。客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端和服务器开始传送数据。

TCP/IP通过四次挥手关闭一个连接:

1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

 

3.模板类的作用

①创建动态变化大小的数据结构。

②类型无关,高复用性;平台无关,高移植性。

 

4.C++中4种类型转换方式

static_cast:编译器隐式执行任何类型转换都可由static_cast显示完成。执行非多态的转换。

int i;
float f = 166.71;
i = static_cast<int>(f);

dynamic_cast:用于安全的沿类的继承关系向下进行类型转换。

classB
{
public:
    virtual void foo();
};// 注意dynamic_cast转换时,基类中必须有虚函数,static_cast无此限制。

class D:public B
{
};

voidfunc(B* pb)
{
    D* pd1=static_cast<D*>(pb);
    D* pd2=dynamic_cast<D*>(pb);
}

reinterpret_cast:转换指针为其他类型指针。慎用

const_cast:操纵传递对象的const属性。

①常量指针被转化成非常量的指针,并且仍然指向原来的对象;
②常量引用被转换成非常量的引用,并且仍然指向原来的对象;
const B b1;
B *b2 = const_cast<B*>(&b1);
B &b3 = const_cast<B&>(b1);

b2->m_iNum = 200;    //fine
b3.m_iNum = 300;      //fine

 

常见笔试题

标签:

原文地址:http://www.cnblogs.com/SnailProgramer/p/4496632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!