C++岗位求职面试八股文系列文章
第一篇:语言基础
第二篇:设计模式
第三篇:数据库
第四篇:计算机网络
第五篇:操作系统
第六篇:LInux
第七篇:数据结构
第八篇:智力题
第一篇:语言基础(1)
- C++岗位求职面试八股文系列文章
- [1]简述下C++语言的特点
- [2]简述下C语言的特点
- [3]为什么嵌入式用C多
- [4]面向对象的特征并简述
- [5]面向过程与面向对象
- [6]智能指针
- [7]野指针:悬空指针:空指针
- [8]野指针避免办法
- [9]指针数组和数组指针
- [10]Sprintf strcpy memcpy
- [11]区间迭代用过哪些,迭代器与数组异同
- [12]stack/queue/优先队列/红黑数
- [13]字符串指针变量/字符数组/字符指针数组
- [14]数组名和指针(这里为指向数组首元素的指针)区别?
- [15]char str[]与char *str的区别
- [16]字符和字符串处理函数
- [17]C++中新增了string,它与C语言中的 char *有什么区别吗?它是如何实现的
- [18]什么情况用指针当参数,什么时候用引用,为什么?
- [19]静态绑定和动态绑定
- [20]strlen和sizeof区别?
- [后续]见C++岗位求职面试八股文第二篇
第二篇:语言基础(1))
[1]简述下C++语言的特点
C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。
C++有三大特性(1)封装。(2)继承。(3)多态;
C++语言编写出的程序结构清晰、易于扩充,程序可读性好。
C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;
C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try—catch等等;
C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL(Standard Template Library)。
同时,C++是不断在发展的语言。C++后续版本更是发展了不少新特性,如C++11中引入了nullptr、auto变量、Lambda匿名函数、右值引用、智能指针。
[2]简述下C语言的特点
C语言有出色的可移植性 ,能在多种不同体系结构的软/硬平台上运行
简洁紧凑,使用灵活的语法机制 ,并能直接访问硬件。
C语言具有很高的运行效率,直接操作底层寄存器,
[3]为什么嵌入式用C多
能够直接访问硬件的语言有汇编和C语言,汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。
[4]面向对象的特征并简述
包括四大基本特征和五大基本原则。
特征:抽象、继承、多态、封装
原则:单一职责原则、开放封闭原则、替换原则、依赖原则、接口分离原则
[4]面向对象的特征并简述
包括四大基本特征和五大基本原则。
特征:抽象、继承、多态、封装
原则:单一职责原则、开放封闭原则、替换原则、依赖原则、接口分离原则
[5]面向过程与面向对象
面向过程的语言:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;
缺点:没有面向对象易维护、易复用、易扩展
面向对象的语言:
优点:易维护、易复用、易扩展,
缺点:性能比面向过程低
[6]智能指针
智能指针的作用是,能够处理内存泄露问题和悬空指针问题(未释放内存、释放内存但指针没置空)
https://blog.csdn.net/sjp11/article/details/123899141
智能指针的实现:
成员变量:ptr指针对象,ptrcount引用计数,mt互斥锁
成员函数:构造,析构,赋值=,解引用*,拷贝,->
[7]野指针:悬空指针:空指针
野指针是没有被初始化过的指针,指向的位置是不可知的(随机的、不正确的、没有明确限制的)。此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。
成因:指针变量未初始化、指针释放后之后未置空、指针操作超越变量作用域
解决:初始化时置 NULL、释放时置 NULL
悬空指针:指针最初指向的内存