![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试
文章平均质量分 73
笔者总结多家公司面试题目,提炼出来的
Overboom
这个作者很懒,什么都没留下…
展开
-
C++面试题【某初创公司的面试题】
C++函数中值的传递方式有几种?1)值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。2)指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。3)引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递,代码逻辑上更加紧凑、清晰。引用传递做函数参数”是C++的特性,C语言不支持。引用和..原创 2021-11-30 00:30:00 · 220 阅读 · 0 评论 -
虚函数表指针与多态
多态多态就是多种形态,C++的多态分为静态多态与动态多态。静态多态就是编译器根据函数实参的类型判断出要调用哪个函数。比如函数重载和函数模板。动态多态依靠的是虚函数表和动态绑定机制,因为是在运行时根据对象的类型在虚函数表中寻找调用函数的地址来调用相应的函数,所以称为动态多态。虚函数表何时建立,compile-time 还是 run-time?在一个类的某个函数前加上virtual关键字,这个函数就变成了虚函数,当这个类中存在虚函数时,编译器会给这个类创建一个虚函数表,虚函数表里存放了这个类中所有转载 2021-11-23 23:30:00 · 451 阅读 · 0 评论 -
C/C++程序编译过程详解
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。1. 编译过程编译过程又可以分成两个阶段:编译和汇编。1.1 编译编译是读取源程序(字符流),对之进行词法和语原创 2021-11-18 22:00:00 · 264 阅读 · 0 评论 -
C++笔试100题
第一部分:C++与C语言的差异(1-181、C 和 C++ 中 struct 有什么区别?Protection行为能否定义函数c无否,但可以有函数指针c++有可以,默认是public2、C++中的 struct 和 class 有什么区别?【参考答案】从语法上讲,class和struct做类型定义时只有两点区别:(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;(二)成员的默原创 2021-11-18 14:53:23 · 526 阅读 · 0 评论 -
C语言面试考点之二
C语言关键字考点1. static关键字static函数的三个作用:函数内部static变量函数外部static变量static函数1、函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的结束而消失,下一次调用时,static变量的值,还保留着上次调用后的内容。2/3、函数外部的static变量,以及static函数,关键在于私有性,它们只属于当前文件,其它文件看不到他们。函数外部static关键字全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动原创 2021-11-18 11:24:46 · 83 阅读 · 0 评论 -
C语言面试考点之一(常见关键字)
C语言关键字考点1. static关键字static函数的三个作用:函数内部static变量函数外部static变量static函数1、函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的结束而消失,下一次调用时,static变量的值,还保留着上次调用后的内容。2/3、函数外部的static变量,以及static函数,关键在于私有性,它们只属于当前文件,其它文件看不到他们。函数外部static关键字全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动原创 2021-11-18 10:26:23 · 246 阅读 · 0 评论 -
链表反转问题
方法一实现链表翻转最直接的方法就是:从链表的头部开始遍历每个结点,改变每个结点的指向,即将原本指向下一个结点的指针改为指向上一个结点。遍历原链表,将结点依次插入到新链表的头部。要完成这一步操作,我们需要新添加两个指针(分别命名为P和tmp):P 指针用于遍历链表,并将遍历到的结点插入到新链表中; tmp 指针永远指向指针 P 所在结点的下一个结点,充当原链表在每次移除头部结点后的新头指针;List * reverse(List * H){ if(H == NULL || H...原创 2021-03-27 13:44:02 · 177 阅读 · 0 评论 -
面试 --- C考点
C语言相关知识点预处理器(Processor)用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出...原创 2020-03-02 19:35:36 · 344 阅读 · 0 评论