快捷搜索: 王者荣耀 脱发

字节跳动测试工程师面试总结2019.7.17

面试形式

视频面试,时长30分钟

内容

(1)自我介绍 (2)项目说明介绍 (3)操作系统原理(死锁/线程和进程) (4)数据库 PS:(3)(4)根本没有接触过,所以当面试官问到时,就直接pass了

(5)介绍一下C++的引用和指针区别

  1. 引⽤只能在定义时初始化⼀次,之后不能改变指向其它变量(从⼀⽽终);指 针变量的值可变。引用可以认为是一种特殊的指针。
  2. 引⽤必须指向有效的变量,指针可以为空。
  3. sizeof指针对象和引⽤对象的意义不⼀样。 sizeof引⽤得到的是所指向的变量的 ⼤⼩,⽽sizeof指针是对象地址的⼤⼩。
  4. 指针和引⽤⾃增(++)⾃减(–)意义不⼀样。
  5. 相对⽽⾔,引⽤⽐指针更安全。
  6. 回答还可包括:常引用/引用作为函数参数时/引用作为返回参数时等内容。

(6)C++是类型安全的吗? 总结:

  1. 类型安全是指同一段内存在不同的地方,会被强制要求使用相同的办法来解释(内存中的数据是用类型来解释的)。
  2. 类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。
  3. Java语言是类型安全的,除非强制类型转换。
  4. C++不是类型安全的,因为同一段内存可以用不同的数据类型来解释,比如1用int来解释就是1,用boolean来解释就是true

(7)C++的存储方式有几种 内存的三种分配方式:

  1. 从静态存储区分配:此时的内存在程序编译的时候已经分配好,并且在程序的整个运行期间都存在。全局变量,static变量等在此存储。
  2. 在栈区分配:相关代码执行时创建,执行结束时被自动释放。局部变量在此存储。栈内存分配运算内置于处理器的指令集中,效率高,但容量有限。
  3. 在堆区分配:动态分配内存。用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的农夫山泉,你该如何对它进行测试

经验分享 程序员 微信小程序 职场和发展