1.C++中的define有什么用?
宏定义在形式及使用上都像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列操作,因此效率很高,这是它在C中使用的主要原因。
但是使用宏定义只是做预处理器符号表中的简单替换,因此不能享受C++编译器严格的类型检查,另外他的返回值也不能被强制转换为可转换的合适的类型。另外,由于C++引入了类及类的访问控制,无法用宏来实现。
所以引入了inline。
inline定义了类的内联函数,代码被放在符号表中,在使用时直接进行替换,没有了调用的开销,效率也很高。并且inline也是个函数,会检查参数类型,这样也就消除了宏的隐患。最后,inline函数可以作为类的成员函数,也就可以访问所在类的保护成员和私有成员。
inline的劣势是,如果函数太复杂会导致代码膨胀。
2.写一个冒泡排序,然后优化,最后递归实现。
说说优化:根据提示,我修改代码,做了是否已经排好序的判断。不知道是否有更优方法。
void sort(vector<int>& arr)
{
int len = arr.size();
bool flag = false;
for(int i = len-1; i >= 0; i--)
{
for(int j = 0; j < i; j++)
{
if(arr[j] > arr[j+1])
{
swap(arr[j], arr[j+1]);
flag = true;
}
}
if(!flag) break;
}
}
3.为什么要用hive?
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
4.支撑向量机是什么
SVM,Support Vector Machine
5.使用过哪些shell命令。
我说scp,他问scp用什么协议实现的,TCP/UDP?
6.C++的多态是怎样实现?
虚函数实现的。假如B类继承自A类,A类定义了一个虚函数,说说B的对象里面有什么,是怎样存储的,重点是虚表的实现。
7.问我看了什么书?
千万要答自己看的特别熟的书。我答程序员的自我修养,四个月前简单看了一下,然后他问ELF是什么?我就懵逼了。