腾讯笔试题回顾:C/C++基础与高精度算法

3星 · 超过75%的资源 需积分: 14 12 下载量 7 浏览量 更新于2024-09-19 收藏 77KB DOC 举报
"这是腾讯2012年的笔试题,主要涉及C/C++编程语言的基础知识,包括宏定义、文件操作、高精度算法、数据结构以及简单的操作系统概念。这些题目旨在测试应聘者的编程思维和基本技能,而非深入的专业理论知识。" 在这些笔试题中,我们可以提炼出以下几个重要的知识点: 1. **宏定义**: - 题目要求定义一个宏,比较两个数`a`和`b`的大小,但不能使用大于、小于或`if`语句。这通常可以通过位运算来实现,例如利用`a - b`的结果的符号位来进行判断。 2. **文件操作和调试**: - 输出源文件的标题和当前执行行的行数,这涉及到预处理器宏如`__FILE__`和`__LINE__`,它们在编译时会被替换为包含源文件名和当前行号的字符串常量。 3. **高精度算法**: - 如何处理小数点后位数不限的两个数相乘,这是一个典型的高精度计算问题,可以通过动态分配内存和模拟十进制乘法的过程来解决。 4. **病毒编写**: - 虽然这个问题在实际中不道德也不推荐,但它考察的是编程者对系统调用、文件操作和进程控制的理解。理解病毒行为可以帮助我们更好地防御和分析恶意软件。 5. **逻辑与策略问题**: - 四个人过桥问题是一个经典的逻辑谜题,需要合理规划每个人的行动,利用最短时间完成任务。这涉及到了优化和算法设计。 6. **C/C++基础知识**: - `sizeof`函数的使用,它是C/C++中的一个操作符,用于返回类型或变量的大小。 - 选择题涵盖C/C++、操作系统(如Linux)的基础知识,例如语言特性、数据结构等。 - 程序填空题涉及链表操作,如两个链表的交叉合并,以及MFC中的树结构序列化。 7. **程序流程控制**: - for循环的嵌套和条件判断,如`for(int i)`和`printf`语句的顺序执行,以及`for`循环中的`sum`累加。 - `for(i=0;i<10;++i,sum+=i);`的执行结果需要理解逗号运算符的优先级。 8. **数据结构**: - 二叉查找树中元素的比较次数,需要了解二叉查找树的性质。 - 模10哈希链表的最长长度,涉及到哈希冲突和链表的长度计算。 9. **函数调用**: - `fun((exp1,exp2),(exp3,exp4,exp5))`的实参数量,这涉及到C语言中的参数传递规则,以及逗号运算符的使用。 这些题目覆盖了编程语言基础、数据结构、算法设计、操作系统和逻辑推理等多个方面,是评估程序员基础技能的良好测试。对于准备面试或提升编程能力的人来说,这些都是宝贵的学习资料。