面试形式
视频面试,时长30分钟
内容
(1)自我介绍
(2)项目说明介绍
(3)操作系统原理(死锁/线程和进程)
(4)数据库
PS:(3)(4)根本没有接触过,所以当面试官问到时,就直接pass了
(5)介绍一下C++的引用和指针区别
- 引⽤只能在定义时初始化⼀次,之后不能改变指向其它变量(从⼀⽽终);指
针变量的值可变。引用可以认为是一种特殊的指针。 - 引⽤必须指向有效的变量,指针可以为空。
- sizeof指针对象和引⽤对象的意义不⼀样。 sizeof引⽤得到的是所指向的变量的
⼤⼩,⽽sizeof指针是对象地址的⼤⼩。 - 指针和引⽤⾃增(++)⾃减(–)意义不⼀样。
- 相对⽽⾔,引⽤⽐指针更安全。
- 回答还可包括:常引用/引用作为函数参数时/引用作为返回参数时等内容。
(6)C++是类型安全的吗?
总结:
- 类型安全是指同一段内存在不同的地方,会被强制要求使用相同的办法来解释(内存中的数据是用类型来解释的)。
- 类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。
- Java语言是类型安全的,除非强制类型转换。
- C++不是类型安全的,因为同一段内存可以用不同的数据类型来解释,比如1用int来解释就是1,用boolean来解释就是true
(7)C++的存储方式有几种
内存的三种分配方式:
- 从静态存储区分配:此时的内存在程序编译的时候已经分配好,并且在程序的整个运行期间都存在。全局变量,static变量等在此存储。
- 在栈区分配:相关代码执行时创建,执行结束时被自动释放。局部变量在此存储。栈内存分配运算内置于处理器的指令集中,效率高,但容量有限。
- 在堆区分配:动态分配内存。用new/malloc时开辟,delete/free时释放。生存期由用户指定,灵活。但有内存泄露等问题。
(8)编程题:将m元钱,随机放入n个红包中
#include <iostream>
#include <vector>
#include <ctime>
int main()
{
double dm;
int in;
vector<double> vdres;
cin>>dm>>in;
for(int i =0; i < in-1; i++)
{
double dtmp = rand()%10;
double dtmp1 = (double)dtmp/10*dm;
res.push_back(dtmp1);
dm -= dtmp1;
}
res.push_back(dm);
for(int i = 0; i < in ; i++)
cout<<vdres[o]<<endl;
return 0;
}
该算法的问题在于先抢的人有大的概率会拿到较多的钱
(9)简答题:如果给你250ml的农夫山泉,你该如何对它进行测试