PPS 2013校园招聘 研发类笔试题目(C++)

来源:互联网 发布:递推最小二乘法 知乎 编辑:程序博客网 时间:2024/04/29 18:56

文章来源:http://www.mianshibaike.com/a/C_C__/C__/20130710/301_2.html,转载请注明。

1、vector和list的区别

区别:1)vector的对象实在一块连续的内存空间上,而list的对象可以不在来连续的内存空间上。

   2)vector元素的随机访问的效率很高,插入和删除效率较低,当vector存储的对象的构造较为复杂时,移动vector的元素需要调用对象的拷贝构造函数,效率因而很低。vector是离散存储的,访问元素时需要从头或者尾部开始时进行遍历(不能随机访问),删除和插入元素相比vector的效率高,不需要移动元素。vector的大小扩张通常是2倍的扩展。

  3)vector是单向的,list是双向的。

  4)vector适用:对象数量变化少,简单对象,随机访问元素频繁;list适用:对象数量变化大,对象复杂,插入和删除频繁。

2、C++中const的一些常用方法

1)定义一个只读的变量。(而非一个常量)

2)修饰函数的参数。当我们希望函数的实参不被改变时,用const修饰函数的形参,防止实参发生改变,特别是指针参数,防      止指针本身发生改变。

3)修饰类的成员函数,可以防止类的数据成员和this指针发生改变。

4 )修饰一个类的对象。

      例如:const CMyClass mc,这时的mc对类成员变量和成员函数的调用是有限制的:
      a、能读取类的成员变量而不能去修改它;
      b、只能调用末端有const修饰的函数。

3、输出数组的K个最大值

使用STL中的partial_sort.

partial_sort使用的是堆排序,建堆的时间复杂度为O(n),调整堆的时间度杂度为o(logn),如果调用partial_sort时middle的值为last的值,则相当于调用sort,对所有元素排序,但是堆排序是稳定的排序。假如求的是m个元素的partial_sort,则,o(n) + m*o(logn);

相比使用sort()函数使用的快速排序,其时间复杂度为n(logn)。

4、对链表进行排序

struct Node

{

int key;

Node *next
};

5、 给出只允许进程单例运行的代码

在linux/unix环境下通过文件所实现,见APUE-单实例守护进程。

为了正常运作,某些守护进程时实现为单实例的,也就是在忍一时刻只运行该守护进程的一个副本。例如,该守护进程可能需要互斥的访问一个设备。在cron守护进城的情况下,如果同时有多个实力运行,那么每个飞奔都可能试图开始某个预定的操作,于是造成了该操作系统的重复执行,很可能导致出错。


使用文件锁和记录锁机制的方法可以用来保证一个守护进城只有一个副本在运行。如果每一个守护进程创建一个文件,并且在整个文件上加上一把写锁,那就只允许创建一把这样的写锁。所以在此之后的如试图在创建一把这样的写锁就将失败,一次后序的守护进程副本指明已有一个副本正在运行。
文件和记录锁提供了一种方便的互斥机制。如果守护进程在整个文件上得到一把写锁,那么在该守护进程终止时,这把锁江北自动的删除。简化了复原苏圩的处理,出去了对以前的守护进程实力需要进城清理的有关操作。

6、读出指定目录下的txt文件,统计txt文件数目

7、tcp三次握手的序列图

文章来源:http://www.mianshibaike.com/a/C_C__/C__/20130710/301_2.html,转载请注明。


原创粉丝点击