2019.08.02 云从科技C++后台开发
公司坐标:重庆
岗位:C++后台开发
面试时长:45分钟
主要问题记录:
(1)手写代码
冒泡算法的实现:
/** | |
* 冒泡排序:C++ | |
* | |
* @author skywang | |
* @date 2014/03/11 | |
*/ | |
#include <iostream> | |
using namespace std; | |
/* | |
* 冒泡排序 | |
* | |
* 参数说明: | |
* a -- 待排序的数组 | |
* n -- 数组的长度 | |
*/ | |
void bubbleSort1(int* a, int n) | |
{ | |
int i,j,tmp; | |
for (i=n-1; i>0; i--) | |
{ | |
// 将a[0...i]中最大的数据放在末尾 | |
for (j=0; j<i; j++) | |
{ | |
if (a[j] > a[j+1]) | |
{ | |
// 交换a[j]和a[j+1] //当用swap()函数进行交换时,swap是包含在std中的 //另外补充C++中sort函数是包含在头文件<algorithm>中 |
|
tmp = a[j]; | |
a[j] = a[j+1]; | |
a[j+1] = tmp; | |
} | |
} | |
} | |
} | |
int main() | |
{ | |
int i; | |
int a[] = {20,40,30,10,60,50}; | |
int ilen = (sizeof(a)) / (sizeof(a[0])); | |
//这里用sizeof()求解数组的长度,在笔试的时候没有想出来 先对数组随意进行初始化,主要是通过这个表示数组的长度 |
|
cout << "before sort:"; | |
for (i=0; i<ilen; i++) | |
cout << a[i] << " "; | |
cout << endl; | |
bubbleSort1(a, ilen); | |
//这里调用之前定义的冒泡算法,注意!!!没有前面的函数返回类型哦(void) | |
cout << "after sort:"; | |
for (i=0; i<ilen; i++) | |
cout << a[i] << " "; | |
cout << endl; | |
return 0; //注意在写程序的时候其实可以先把主体的框架写出来,然后在里面填东西即可。 |
|
} |
(2)数据结构中排序算法的时间复杂度
快排:O(nlogn) 冒泡:O(n^2) 选择:O(n^2) 插入:O(n^2)
希尔:O(nlogn) 归并:O(nlogn) 堆排:O(nlogn)
稳定的有:冒泡、插入、归并
(3)C++内容
a.多态是咋回事(多态分为静态多态和动态多态,静态是重载,在编译时进行;动态多态是靠虚函数机制实现,在运行期间动态绑定。基类指针指向子类的对象,会调用在子类中重写的函数)
b.类继承的方式?为什么会有这些方式,作用是什么?
继承的访问限定符有:
public / protected /private
我们都知道很多类都有自己的数据成员以及函数,在编写程序时,会有很多类的拥有相同的数据成员和函数,为了节省时间以及代码量,我们把这些公共的数据和函数封装成一个类,后面的类只要继承这个类即可。
c.sizeof()
32位系统下某某些变量的sizeof()
其中有一个字符数组其中包含转义字符求它的sizeof()没求出来。。
char a[]="\\123456\123456\t";
sizeof(a)=12
区分转义字符‘\’与‘/’
(4)网络编程了解吗??
并不了解。
每个早起的清晨都很可爱