- 首先自我介绍
- 实现Buffer结构体的成员函数
#include<iostream>
using namespace std;
class Buffer
{
public:
typedef unsigned char byte;
Buffer(const size_t buffer_size);
Buffer(const Buffer& obj);
Buffer(Buffer&& obj);
Buffer& operator=(const Buffer& obj);
Buffer& operator=(Buffer&& obj);
~Buffer();
private:
size_t buf_size{ 0 };
byte* buf{ nullptr };
};
#include<iostream>
using namespace std;
class Buffer
{
public:
typedef unsigned char byte;
Buffer(const size_t buffer_size)
:buf_size(buffer_size)
{
buf = new byte[buf_size];
}
Buffer(const Buffer& obj)
{
buf_size = obj.buf_size;
buf = new byte[buf_size];
for (int i = 0; i < buf_size; i++)
{
buf[i] = obj.buf[i];
}
}
Buffer(Buffer&& obj)
{
buf_size = obj.buf_size;
buf = obj.buf;
obj.buf = nullptr;
}
Buffer& operator=(const Buffer& obj)
{
if (this == &obj)
{
return *this;
}
delete[]buf;
buf = nullptr;
buf_size = obj.buf_size;
buf = new byte[buf_size];
for (int i = 0; i < buf_size; i++)
{
buf[i] = obj.buf[i];
}
return *this;
}
Buffer& operator=(Buffer&& obj)
{
if (this == &obj)
{
return *this;
}
delete[]buf;
buf = obj.buf;
obj.buf = nullptr;
return *this;
}
~Buffer()
{
delete[]buf;
buf = nullptr;
}
private:
size_t buf_size{ 0 };
byte* buf{ nullptr };
};
- C和C++相比,你更喜欢用哪个 C++吧
- C语言是C++的子集,C++可以很好兼容C语言。但是C++又有很多新特性,如引用、智能指针、auto变量等。
- C++是面对对象的编程语言;C语言是面对过程的编程语言。
- C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而C++对此增加了不少新特性来改善安全性,如const常量、引用、cast转换、智能指针、try—catch等等;
- C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。C++的STL库相对于C语言的函数库更灵活、更通用
- C++的多态性:在基类里面给所有的派生类可以保留统一的虚函数接口,等待派生类重写,通过使用多态,可以通过基类的指针访问不同派生类对象的同名覆盖方法。(不用提供很多接口,每一个接口对应一个派生类对象,只需要提供一个接口就行,指针指向谁就访问谁),更符合软件开-闭原则。
- 写一个排序算法吧 我写了一个快排算法
#include<iostream>
using namespace std;
int Partation(int arr[], int l, int r)
{
int val = arr[l];
while (l < r)
{
while (l < r)
{
if (arr[r] < val)
{
break;
}
r--;
}
if (l < r)
{
arr[l] = arr[r];
l++;
}
while (l < r)
{
if (arr[l] > val)
{
break;
}
l++;
}
if (l < r)
{
arr[r] = arr[l];
r--;
}
}
arr[l] = val;
return l;
}
void QuickSort(int arr[], int l, int r)
{
if (l >= r)
return;
int pos = Partation(arr, l, r);
QuickSort(arr, l, pos - 1);
QuickSort(arr, pos + 1, r);
}
说一下思路: 选取一个基准数,把小于基准数的元素都调整到基准数的左边,把大于基准数的元素都调整到基准数的右边,然后对基准数左边和右边的序列继续进行这样的操作,直到整个序列变成有序的。
分析快排的时间复杂度:最好和平均时间复杂度:O(nlogn),其中Partition这部分的时间复杂度是O(n), 最坏平均复杂度:O(n^2)
-
你怎么看待员工和老板之间的关系? 员工和公司的关系其实就是互惠互利的,公司给员工提供了一个平台去实践去成长,员工为企业也创造了价值。我们利用知识和经验为公司创造价值,公司给我们物质回报。通常情况下,你付出的越多,公司给你的回报也越高。
-
如果你和同事闹矛盾怎么解决? 我很少与人发生矛盾,因为矛盾不会带来任何好处,反而会失去友谊、信任。如果发生了冲突我会先冷静下来,查出问题所在,如果真的是自己做错了,我会主动地与他沟通,或者是请他吃个饭解决。
-
如果评年终奖没有你,你会怎么做? 我会比较我自己和获得年终奖同事的差距,如果我确实做得不够好,我会找到差距,弥补自己的不足;如果我做得也很好但是却没有评上,我会询问自己没有评上的原因在哪。
8.最后问你你还有什么问题要问我的吗?