(2013PPS校园招聘杭州站)PPS研发类笔试题目


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三次握手的序列图


另一张试卷:

1、解释MVC模型

2、IPC机制

3、判断大端小端

int Is_big_endian()
{
	int x =1;
	if(*(char*)&x==1)
		return 0;
	else  return 1;
}

bool Is_big_endian()
{
	union check
	{
		int i;
		char ch;
	}c;

	c.i = 1;
	 return (c.ch!=1);
}


4、判断一个128位的整数是否为素数。

5、TCP服务器服务器端使用到的Socket API函数,按照使用的顺序。

6、C++指针与引用的区别。

1)  指针是一个实体,而引用仅是个别名;
2)  引用使用时无需解引用(*),指针需要解引用;
3)  引用只能在定义时被初始化一次,之后不可变;指针可变;
4)  引用没有 const,指针有 const,const 的指针不可变;
5)  引用不能为空,指针可以为空;
6)  “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
        typeid(T) == typeid(T&) 恒为真,sizeof(T) == sizeof(T&) 恒为真,
              但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。
7)  指针和引用的自增(++)运算意义不一样;


7、C++的类型转换操作符,给出例子。

8、STL中的两种容器的实现

9、MFC和QT的消息机制的区别






   

你可能感兴趣的:(mvc,vector,list,socket,服务器,存储)