字节跳动测试工程师面试总结2019.7.17
面试形式
视频面试,时长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的农夫山泉,你该如何对它进行测试
上一篇:
5款热门的远程控制软件,让你事半功倍