网友分享的2016年2月经历的一些C、C++面试题目

匿名网友 匿名网友 发布于: 2016-03-09 00:00:00
阅读 229 收藏 0 点赞 0 评论 0

2016年2月15日  好巧网

1,STL map和STL hash_map有什么不同?说出一个就行。哪个更高效?

它们的实现不同,map的实现是基于红黑树,hash_map是用哈希表来实现的。总体来说,hash_map查找

速度更快,跟数据量无关,为常数级别。map查找时间为O(logn);hash_map对空间的要求比map高很多,是

以空间换时间。

  hash_map更有效率,因为有哈希函数。

 

2016年2月17日上午  帝联科技

1,如何打印当前源代码的行号,文件名?

使用宏  __FILE__,  __LINE__。(注意,前后都是两条下划线)。

2,20瓶饮料,2个空瓶子可以换一瓶饮料,一共可以得到多少瓶饮料?

使用一个递归函数。将 n除以2过程中的余数相加作为再次调用递归函数的n。

while(1) { t = n/2;   tmp += n%2;  cur_res += t;  if(t==0) break; }   cur_res += f(tmp, cur_res); 

3,两个线程交替输出1~100

使用两个线程进行同步,每个线程输出前对全局变量+1。设置两个信号量,A线程处理前对sem_B进行P操作,

处理后执行sem_A的V操作,B线程处理前对sem_A进行P操作,处理完执行sem_B的V操作。(可以通过设置

sem_A, sem_B的初始值来设定哪个线程开始执行)。

 

2016年2月18日下午  更美APP

1. select()你了解吗?是做什么用的?

select( )系统调用用于测试文件描述符集合中是否有文件描述符处于可读,可写或错误状态。select( )系统调用

会一直阻塞直到某个描述符进入上述状态,或者时间超时(防止无限期阻塞)。select( )返回状态发生变化的描述符总量。

在网络编程中,使用select( )系统调用来实现IO多路复用,服务器端让select同时检查监听套接字和客户的连接套接字。

2. 求n个数中第5大的数?

建立一个节点数为5的最小堆,不断进行替换和调整操作,最后剩下的堆就是n个数中最大的5个数,堆顶

就是第5大的数。因为要经历约n次调整,所以时间复杂度为n*log5

3. 解析html文件,标签对中的字符内容

打开文件,按行读取文件:

ifstream ifile;  ifile.open(” “);  vector<string> vec;  string str;  while(getline(ifile, str)) { vec.push_back(str); }

 

2016年2月19日下午  智课网

1,说说你理解的static

1)函数内的static变量只分配一次内存,再次调用函数时仍维持上次的值;2)模块内的static全局变量可以被模块内的全部

函数访问,模块外的需extern声明;3)模块内的static函数能够被本模块其他函数调用,同样其他模块使用需声明;4)类的

static成员变量属于整个类,所有的类对象只有一份拷贝,共享该变量,该成员变量在类中声明,在类外定义并初始化;

5)类的static成员函数为整个类所有,不接受this指针,只能访问static成员变量。

2,将二叉排序树转成双向链表

其实就是二叉排序树的中序遍历,每遍历一个结点,将其左子树指针指向遍历过的前一个结点,前一个结点的右子树指针指向

这个结点。

3,翻纸牌游戏,一排正反杂乱的纸牌,每翻动一张,左右两张也随之翻转,问是否可以将它们都翻成正面?如果可以,需要翻动几次?

从第1张开始,能影响第一张牌的只有自身和第2张牌。

分两类情况,1)第1张需要翻转,翻转后依次查看第2,3,。。n-1是否需要翻转,如果第i-1张需要翻转,就通过翻动第i张的

方式达到效果,最后查看第n张是否为正面向上就能确定是否有方法将所有牌翻成正面;2)第1张牌不需要翻转,那么看第2张,

情况就回到第一种情形。

 

2016年2月19日下午  映客直播

1,map容器的两张插入方法有什么不同?

由于集合的唯一性,当key已存在于map中时insert操作方式会插入不了数据,而数组方式则可以直接

覆盖之前该key对应的value。

2,HTTP的过程能叙述一下吗?

1,打开HTTP连接,2,初始化方法请求,3,设置HTTP请求头,4,发送请求,5,读取请求,6,调用方法,7,

初始化方法响应,8,设置HTTP响应头,9,发送响应,10,关闭连接。

3,多线程同步的方式有哪几种?分别用在什么地方?

Linux环境下有信号量,互斥量,条件变量和读写锁。

信号量、条件变量用于线程的同步,互斥量、读写锁用于线程互斥的访问资源。

信号量的释放在一个线程,信号量的接受在另一个线程。互斥量的加锁和解锁都在同一线程。

 

评论列表
文章目录