美文网首页
C++笔试1

C++笔试1

作者: 小小唯大大胖 | 来源:发表于2018-03-17 22:18 被阅读0次

1.怎么防止头文件被重复声明?

#ifndef _TEST_H_ //文件一开始声明

#define _TEST_H_

…… //类的定义、声明等

#endif //文件结束后声明

每次编译的时候,在“#ifndef _TEST_H_”这句就判断是否已经编译过这个头文件,若有,则跳过。

2.指针和引用的区别?

①.指针指向一个对象的地址;引用是一个对象的别名。

②.指针可以改变指的对象;引用一旦指定某个对象就不能改变。

③.指针可以为空;引用不可为空。

3.winsocket建立连接的过程?

服务器端:

socket()建立套接字,绑定bind()并监听listen(),用accept()等待客户端连接;发现有客户端连接后,等待接收数据,并建立一个新的套接字,自身重新开始等待连接。

客户端:

socket()建立套接字,连接connect()服务器,使用send()和recv(),在套接字上读写数据,直至数据交换完毕,closesocket()关闭套按字。

4.STL是什么?有什么作用?写出你平常使用的三种STL容器并简要说明?

STL = Standard Template Library,标准模板库,一些“容器”的集合,有list、vector、set、map等。标准化组件,从而不用重复开发,使用现成的组件。

常用的有:list—链表的形式存储数据;vector—可扩容的的数组;queue—FIFO队列;map—键值的映射关系。

5.. 堆和栈的区别与联系  

①、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

 ②、堆区(heap)一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事。

 区别:

 1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生内存溢出。

 2. 空间大小:堆内存几乎是没有什么限制。栈一般都是有一定的空间大小。

 3. 碎片问题:对于堆来讲,频繁的new/delete会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题。

 4. 分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。 5. 分配效率:栈的效率比较高。堆的效率比栈要低得多。  

 6. 重载和覆盖的区别与联系 

重载是指不同的函数使用相同的函数名,但函数的参数个数或类型不通。调用的使用根据函数的参数来区别不同的函数。 覆盖是指派生类中重新对基类的虚函数重新实现。即函数名和参数都一样,只是函数的实现体不一样。

 7. 什么是多重继承,好处及缺点 

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。 优点:可以使用多重继承编写非常复杂、但很紧凑的代码,如C++ ATL库。 缺点:出现二义性、虚函数、访问权限等问题,容易产生混淆。

8.不用第三个变量 交换两个int型的值(必须用C实现)

 int a = 2, b = 3; a=a+b; b=a-b; a=a-b;

9.32位机器下的sizeof取值?

10.网络的三次握手过程

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 

 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

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

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

11.链表删除操作 

      此处实现删除链表中的第二个元素。 

      int * p, * q ,* list //p,q为指针类型, list为已存在的链表      

       p=list; //p指向list的第一个元素       

      q=list; //q指向list的第一个元素 

    if(p->next != null) //list链表的元素超过一个 

    {

        q=q->next; //q指向第二个元素 

        p->next = q->next  //p->next指向第三个元素   

        delete q; //释放链表的第二个元素空间

 }

12. 写一个程序,堆可以访问,栈不可以访问。

     写一个程序,栈可以访问,堆不可以访问。

相关文章

  • C++笔试1

    1.怎么防止头文件被重复声明? #ifndef _TEST_H_//文件一开始声明 #define _TEST_H...

  • 斗鱼面试-C++研发工程师

    斗鱼面试-c++研发工程师 笔试 现场笔试,2个小时 技术面: 1:两个面试官,对着笔试卷子提问 2:类中的函数地...

  • C++笔试整理

    1、new 、delete 、malloc 、free 的关系malloc 与 free 是 C++/C 语言的标...

  • 路线

    超级详细Linux环境后台开发C++学习路线,已拿鹅厂offer 另一篇文章面试经验:《腾讯C++后台开发面试笔试...

  • 笔试1

  • C++笔试常用模板

    字符串切分 STL中最大堆与最小堆的使用 生成0~N的随机数 int转string与string转int int ...

  • 「面试必备」最新整理出的腾讯C++后台开发面试笔记

    文章是由笔试面试腾讯笔记整理而来,主要是针对面试的C++后台开发岗位,涵盖了大部分C++后台开发相关可能会考察和被...

  • 10道C++输出易错笔试题收集(敢进来挑战吗?)

    下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去。我从中选...

  • 某游戏彩票外企Java笔试题

    第一轮笔试 笔试形式:paper test题目难易程度:中等笔试时间:1个小时笔试语言:题目和答题全部用英文 1 ...

  • 感悟与展望

    在经历几天C++基本笔试题的摧残后,我终于明白自己还是不喜欢写代码,单纯的C++工程师对于我来说还是枯燥乏味了一点...

网友评论

      本文标题:C++笔试1

      本文链接:https://www.haomeiwen.com/subject/rikudxtx.html