腾讯研发工程师A笔试卷
2016-02-29 13:25
260 查看
1. Internet物理地址和IP地址转换采用什么协议?
ARP(AddressResolutionProtocol)(地址解析协议) 和RARP(反地址解析协议)
2. static有什么用途?
类型声明符在C语言里面主要有三个用途:
声明静态局部变量
声明静态外部全局变量
声明静态外部函数
3. 引用与指针有什么区别?
指针是一个实体,而引用仅是个别名;
引用使用时无需解引用(*),指针需要解引用;
引用只能在定义时被初始化一次,之后不可变;指针可变;
引用没有 const,指针有 const;
引用不能为空,指针可以为空;
“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
指针和引用的自增(++)运算意义不一样;
从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。
4. 描述实时系统的基本特性?
在特定时间内完成特定的任务,实时性与可靠性。
所谓“实时操作系统”,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配,因此其处理事务的能力较强、速度较快。 应该说,实时操作系统是在早期的操作系统基础上发展起来的,早期的操作系统的各种资源都是事先已经分配好的,工作期间这些资源不能再重新进行分配。因此其处理事务的能力较差、速度较慢,现在则称之为“非实时操作系统”。但“非实时操作系统”诞生时,其功能、性能等在当时也是非常强的,人们在未认识到更好的操作系统之前并不将其这样称呼。将来如果新的、功能更强的、实时性能更高的操作系统出现,也许现在称之为“实时”的操作系统则可能将让位于新的“实时操作系统”了。从这方面讲“实时操作系统”是一个相对的概念的;
5. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
生存周期不同;
全局变量:全局区(静态区)(static):全局变量和静态变量是存储在一起的,初始化过的全局变量和静态变量在同一块区域,未初始化的全局变量和静态变量存放在一块相邻的区域内。此区域由系统在程序结束后释放;
局部变量:放在堆栈中。由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
作用范围不同;
全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。
局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回;
7. 堆栈溢出一般是由什么原因导致的?
堆栈溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite
recursion)产生,但也可能仅仅是过多的堆栈层级。
8. 什么函数不能声明为虚函数?
静态成员函数不可以是虚函数,因为静态成员函数全局通用,不受限于某个具体对象
构造函数不可以是虚函数,虚函数主要是针对对象而言,而构造函数是在对象创建之前,所以构造函数的虚函数是没有意义的
内联函数不可以是虚函数,因为内联函数不能再运行中动态确定其位置
9. 写出float x 与“零值”比较的if语句?
if (fabs(x) < 0.00001f)
10. 不能做switch()的参数类型是?
除了整型,枚举类型,字符型,其他的都不行。譬如:字符串,浮点型这些非constexpr(非常量表达式)都不可以作为switch的参数类型。
ARP(AddressResolutionProtocol)(地址解析协议) 和RARP(反地址解析协议)
2. static有什么用途?
类型声明符在C语言里面主要有三个用途:
声明静态局部变量
声明静态外部全局变量
声明静态外部函数
3. 引用与指针有什么区别?
指针是一个实体,而引用仅是个别名;
引用使用时无需解引用(*),指针需要解引用;
引用只能在定义时被初始化一次,之后不可变;指针可变;
引用没有 const,指针有 const;
引用不能为空,指针可以为空;
“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
指针和引用的自增(++)运算意义不一样;
从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。
4. 描述实时系统的基本特性?
在特定时间内完成特定的任务,实时性与可靠性。
所谓“实时操作系统”,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配,因此其处理事务的能力较强、速度较快。 应该说,实时操作系统是在早期的操作系统基础上发展起来的,早期的操作系统的各种资源都是事先已经分配好的,工作期间这些资源不能再重新进行分配。因此其处理事务的能力较差、速度较慢,现在则称之为“非实时操作系统”。但“非实时操作系统”诞生时,其功能、性能等在当时也是非常强的,人们在未认识到更好的操作系统之前并不将其这样称呼。将来如果新的、功能更强的、实时性能更高的操作系统出现,也许现在称之为“实时”的操作系统则可能将让位于新的“实时操作系统”了。从这方面讲“实时操作系统”是一个相对的概念的;
5. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
生存周期不同;
全局变量:全局区(静态区)(static):全局变量和静态变量是存储在一起的,初始化过的全局变量和静态变量在同一块区域,未初始化的全局变量和静态变量存放在一块相邻的区域内。此区域由系统在程序结束后释放;
局部变量:放在堆栈中。由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
作用范围不同;
全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。
局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回;
7. 堆栈溢出一般是由什么原因导致的?
堆栈溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite
recursion)产生,但也可能仅仅是过多的堆栈层级。
8. 什么函数不能声明为虚函数?
静态成员函数不可以是虚函数,因为静态成员函数全局通用,不受限于某个具体对象
构造函数不可以是虚函数,虚函数主要是针对对象而言,而构造函数是在对象创建之前,所以构造函数的虚函数是没有意义的
内联函数不可以是虚函数,因为内联函数不能再运行中动态确定其位置
9. 写出float x 与“零值”比较的if语句?
if (fabs(x) < 0.00001f)
10. 不能做switch()的参数类型是?
除了整型,枚举类型,字符型,其他的都不行。譬如:字符串,浮点型这些非constexpr(非常量表达式)都不可以作为switch的参数类型。
相关文章推荐
- 数字签名是什么?
- Unity3D DLL加密
- cookielib和urllib2模块相结合模拟网站登录
- 学车后的领悟
- Mysql5.5源码安装步骤笔记记录
- 矩阵与线性方程组专题
- 项目经理之什么是项目管理
- Mybatis 批量插入的方法
- 动态规划(一)
- 动态规划(一)
- python学习(1)启程
- Android学习笔记之View(一):LayoutInflater
- Android学习笔记之View(二)
- Array中对象的排序
- 项目经理之项目经理的基本特征
- cassandra介绍
- windows下cocos2dx3.4中打包apk的方法
- 插入排序算法分析
- Android Activity学习 <二> Activity间通讯
- UIViewAlertForUnsatisfiableConstraints