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)网络编程了解吗??

并不了解。

 

posted @ 2019-08-02 21:47  giraffeqiu  阅读(368)  评论(0编辑  收藏  举报