C++面试总结

总结一下今天面试的C++题目(偏向基础,比较简单)

  • 简单讲一下对C++的理解?

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

          封装、抽象、继承、多态

          标准的 C++ 由三个重要部分组成:

          核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。

          C++ 标准库,提供了大量的函数,用于操作文件、字符串等。

          标准模板库(STL),提供了大量的方法,用于操作数据结构等

  • const

const修饰的变量不可改变,定义时初始化。

         对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const。

         const可以修饰函数的形参或者返回值表明其不可改变。

         对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量。

  • static

在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0。

          static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。

          static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。

static修饰类的数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员。静态数据成员可以被初始化,但是只能在类体外进行初始化。

          static修饰成员函数时,函数为静态成员函数没有this指针。 静态成员函数主要用来访问静态数据成员而不能访问非静态成员。

  • stl

序列式容器(Sequence containers),每个元素都有固定位置--取决于插入时机和地点,和元素值无关,vector、deque、list;

          Vectors:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时;

          Deques:是“double-ended queue”的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加或移除元素都非常快速。但是在中部或头部安插元素比较费时;

          Lists:双向链表,不提供随机存取(按顺序走到需存取的元素,O(n)),在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针;

          关联式容器(Associated containers),元素位置取决于特定的排序准则,和插入顺序无关,set、multiset、map、multimap;

         Sets/Multisets:内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找;

         Maps/Multimaps:Map的元素是成对的键值/实值,内部的元素依据其值自动排序,Map内的相同数值的元素只能出现一次,Multimaps内可包含 多个数值相同的元素,内部由二叉树实现(实际上基于红黑树(RB-tree)实现),便于查找;

         另外有其他容器hash_map,hash_set,hash_multiset,hash_multimap

  • C++的继承、封装、多态

封装:所谓封装就是将某些东西包装盒隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口以及特定的访问权限来使用类的成员。

          继承:继承指类之间的继承。继承分为三种共有继承(public)、私有继承(private)、受保护继承(protected),三者之间的差别如下

          public:父类成员在子类中保持原有的访问级别

          private:父类成员在子类中变为private成员,只能通过派生类的成员函数访问,不能通过派生类的对象进行访问。同时派生类不能被再次继承。

          protected:父类中的public成员会变为protected级别。

                                     父类中的protected成员依然为protected级别。
                                     父类中的private成员依然为private级别。

  • 指针和引用的区别

指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。

          引用不可以为空,当被创建的时候,必须初始化,而指针可以是空值,可以在任何时候被初始化。

          可以有const指针,但是没有const引用。

          指针可以有多级,但是引用只能是一级。

          指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。

          ”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小。

  • linux下常用的命令

文件操作的命令:

          内存查看的命令:

          ps -aux | grep 进程名

          top -p 进程名

          网络命令:

          ifconfig:查看网卡情况

          ifup/ifdown:启动和关闭网卡

          route:查看路由情况

          ping:检查网络连接状态

          tracerout:查看经过的路由和时间

          netstat:查看网络接口监听的网络端口

          host:查询主机对应的IP地址



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值