招聘|腾讯一面二面题目

腾讯一面

1、new&delete 和malloc&free的区别

一、基本概念
malloc/free:
1、函数原型及说明:
void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

2.内存操作:
malloc函数的参数是接受需要分配的内存字节数,如果内存能够满足请求量,那么将会返回:指向被分配的内存块起始位置
free函数释放的是指针指向的内存(不是释放的指针本身,不会删除指针本身),其中指针必须指向所释放内存空间的首地址

new/free:
1.操作时发生事件:
new的时候会有两个事件发生:1).内存被分配(通过operator new 函数)2).为被分配的内存调用一个或多个构造函数构建对象
delete的时候,也有两件事发生:1).为将被释放的内存调用一个或多个析构函数2).释放内存(通过operator delete 函数)
2.特殊应用:
使用delete是未加括号,delete便假设删除对象是单一对象。否则便假设删除对象是个数组
因此,如果在调用new时使用了[],则在调用delete时也使用[],如果你在调用new的时候没有[],那么也不应该在调用时使用[]。

二、malloc/free 和new/delete 的本质区别:
1.malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符
2.new能够自动分配空间大小
3.对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能对对象完成动态内存分配和初始化工作的运算符new,以及一个能对对象完成清理与释放内存工作的运算符delete---简而言之 new/delete能进行对对象进行构造和析构函数的调用进而对内存进行更加详细的工作,而malloc/free不能。

三、联系
既然new/delete的功能完全覆盖了malloc/free,为什么C++还保留malloc/free呢?因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete,malloc/free必须配对使用。
参考:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/16/2593754.html 2、select 和pool的区别
3、内存分配有几种方式?请举例说明
静态存储区 栈 堆 的内存分配
1,从静态存储区域分配内存。程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全局变量。
2,在栈上创建。在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数结束时这些存储单元自动被释放。
处理器的指定集中有关于栈内存的分配运算,因此效率比较高,但是分配的内存容量有限。
3,在堆上分配内存,亦称动态内存分配,程序在运行的时候用malloc函数或new运算符申请任意大小的内存,程序员
要用free函数或delete运算符释放内存。动态内存使用非常灵活,但问题也很多。

答:四种:静态区,bss,堆,栈
4、解释i-node

inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
可以用stat命令,查看某个文件的inode信息:
见:http://www.cnblogs.com/adforce/p/3522433.html 5、UDP缓存多大
6、线程&进程
7、进程间通信方式
8、设计题:约10亿qq用户,每个用户可以设定100字符以内的个人签名,请设计一个服务器如何高效支持用户对签名的查询,平均每秒有1000个用户请求。

腾讯二面

1、面对一个高中生,给他讲讲快速排序
2、为什么选择腾讯,腾讯为什么选择你,分别给出三个点儿理由【狂晕】
3、给他推荐自己最喜欢的小说、电影【晕死】
4、对简历的一些内容做些询问

附加面试内容【每个问题讨论的都比较细】:
1、现有具有关联关系的数据,数据量很大超过几百G,如何对数据进行检索,如何设计一个分布式文件系统来做?为什么会有同步问题?举例说明。如何进行同步?如果系统的某个节点崩溃咋办?如果主服务器崩溃呢?
2、现有n多字符串(n>10亿),可能有不少重复出现的,如何管理这些字符串?支持添加,更新,修改,删除等功能。请自己实现一个内存池,来辅助实现这个功能。
3、Hash如何构建,hash函数
4、某公司要安排一个年度聚会,公司人员按照管理层次来组织是一个树状结构,每个人都为总裁准备了一份一定价值的礼物,但是总裁不希望雇员和他的直接上司同时参加,设计一个算法,生成一张客人表,使得总裁收到的礼物总价值最大,并分析算法复杂度。
5、盐糖问题:俩桶,分别盛有盐和唐,现有一小勺,挖一勺盐放到盛有糖的桶里(前题是不会溢出)搅匀,再挖一勺盐糖混合物到盛盐的桶里,问:盐桶中的糖多还是糖桶中的盐多:-)
1周后收到hr面试,基本工资谈了下薪水13W,工作性质还可以。


【招聘|腾讯一面二面题目】转自:http://www.mianwww.com/html/2014/05/21179.html

    推荐阅读