实习笔记:C++面试题

介绍

总结记录实习过程中的学习笔记,本文记录C++相关面试题。

相关链接

知识点

什么是多态,多态有什么用途

  • 定义:“一个接口,多种方法”,程序在运行时才决定调用的函数。
  • 实现:C++多态性主要是通过虚函数实现的,虚函数允许子类重写override(注意和overload的区别,overload是重载,是允许同名函数的表现,这些函数参数列表/类型不同)。
  • 目的:接口重用。封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。
  • 声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。

各个排序算法的时间复杂度和稳定性

排序方式 平均复杂度 最大复杂度 最小复杂度 空间复杂度 稳定性
插入排序 O(n^2) O(n^2) O(n) O(1) 稳定
冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定
快速排序 O(nlog_{2}n) O(n^2) O(nlog_{2}n) O(1) 不稳定
选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定