• 【字节跳动实习面经(测试开发岗 一面)四个字:破涕为笑】


    字节跳动实习面经(测试开发岗 一面)

    至于在今年秋招那么严峻的情况下,我一个双非本科还能免笔试直接进入面试环节,我其实也是糊里糊涂的。故事是这么来的,小明在BOSS直聘上投简历,然后一个陌生的HR找到了小明,问小明对对测试开发岗有兴趣吗,小明一看,毕竟是字节啊!果断将自己的简历发了过去。晚上就惊喜的收到了字节面试邀请的电话和邮件,开心了一晚上没睡着!

    一.自我介绍

    巴拉巴拉一大堆有的没的,说说自己在学校写了啥代码、获得了啥奖、有没有得过奖学金之类的,

    可能是我没有项目、比赛的奖项也不是ACM那种含金量高的,所以面试官就没有问我关于简历的内容,

    就直接开始问我问题了。

    二、C语言

    当时脑抽,只记起来extern C,还是第一个问题,面试官就一脸茫然。

    extern关键字的作用

    全局变量

    全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。

    extern “C”

    extern “C” 既可以修饰一句 C++ 代码,也可以修饰一段 C++ 代码,它的功能是让编译器以处理 C 语言代码的方式来处理修饰的 C++ 代码。

    static关键字的作用

    面试的时候只讲了个大概,很多细节当时脑袋瓜子嗡嗡的没说出来。

    静态全局变量

    静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。

    静态全局变量不能被其它文件所用;

    其它文件中可以定义相同名字的变量,不会发生冲突;

    静态局部变量

    该变量在全局数据区分配内存;

    静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;

    静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;

    它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

    静态函数

    静态函数不能被其它文件所用;

    其它文件中可以定义相同名字的函数,不会发生冲突;

    静态成员变量

    静态数据成员和普通数据成员一样遵从public,protected,private访问规则;

    因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;

    静态成员函数

    出现在类体外的函数定义不能指定关键字static;

    静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

    非静态成员函数可以任意地访问静态成员函数和静态数据成员;

    静态成员函数不能访问非静态成员函数和非静态数据成员;

    由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

    三、C++

    他居然没问智能指针、右值引用、对象

    继承

    讲了一下继承的public、proteed、private、多继承、菱形继承

    虚函数

    从虚函数扯到了多态的定义,再到多态的动静态,再到虚表。

    四、计算机网络:

    七层模型与五层模型

    直接口述了一下七层模型的内容,最顶上的一层的名字一时没想起来。

    tcp与udp

    其实他问的是tcp/ip协议是什么,然后恰好我中午看了tcp和udp的区别,我就和面试管说我知道这个,然后他就让我答了一下好,还是说了4到5点内容的。

    三次握手

    直接说的没学,所以就跳过了

    http协议

    同上。

    五、操作系统:

    进程

    讲了一下进程和程序的区别,PCB(pcb里进程的状态当时忘记讲了,面试结束了才想起来),进程的调度算法的名字,上下文切换。

    进程间通信

    恰好学到了匿名管道,就只讲了匿名管道相关,然后列举了其他通信的名字如消息队列。

    线程

    直接说的没学,所以就跳过了

    六、数据库

    讲了一下学了select、insert、delete,但他对这些好像并不感兴趣。

    索引

    直接说的没学,所以就跳过了

    七、场景:如何给登录界面设计测试用例

    面试前几天才看了这个,但紧张的让我忘了,只讲出来测试结果正确相关。

    八、测开方向

    常见测试方法

    经典黑盒白盒、单元、集成、系统

    黑盒测试与白盒测试

    说了一下两者的定义,还好中午看了点,但没完全记住

    单元测试、集成测试、系统测试

    简单说了下我自己根据字面意思的理解

    用上述测试方法给上述场景设计测试用例

    用那个场景举了一些例子,大概率等同于瞎编,毕竟没接触过

    九、思考题(经典中的经典)

    有两个没有刻度的杯子,一个水龙头,一个5L,一个6L,问怎么得到3L

    很久之前看过,但忘了,好歹面试时想出来了。

    我是这么说的:

    先给5L的杯子装满,然后倒入6L,两个杯子同时放水,这样5L里就有1L,再把6L倒空,在同时放水,6L就有4L,

    再把5倒空,同时放水,5L里就有2L,再把6L倒空,同时放水,这样当5L满时,6L里就恰好3L。

    我以为我答的很不错,面试官来了句只有一个水龙头,你再好好想想。

    然后我脑子又抽了,说把5L杯子放到6L里,当6L满把5L拿出来,重复三次,一听完,面试官就笑了,委婉的说了一下(真实意思:你脑洞真够大的)。

    面试结束我才反应过来,什么同时放水,改一下放水顺序不就OK了吗,整个面试,我最大的遗憾!!!

    十、算法题

    剑指 Offer II 119. 最长连续序列

    当时的思路是直接sort()然后遍历记录len然后更新max,就直接写了,毕竟之前没做过

    面试官:当前算法的时间复杂度是多少呢

    我:忽略排序的话是O(N),

    面试官:那到底是多少

    我:O(N*LOG N)+ O(N),然后取最大

    面试官:有没有O(N)的算法呢?

    想了一下没出来

    面试官:优化时间复杂度的方法有哪些

    我:减少循环次数和层数

    面试官:其实还有空间换时间

    我:对对对。

    面试官:你在想一想

    其实我想到了哈希,去找-1的和+1的

    他又问:什么可以减少比较次数

    我直接蒙了。

    最后哈希没搞出来,面试就结束了

    十一、提问环节

    我问了下base,然后交流了下家里蹲大学的学习心得。[笑哭]

    十二、总结

    这次面试简直就像天上掉馅饼一般,虽然我可能并没有把握住

    这次面试可以说是我的第一次正式面试,面了一小时十五分钟,就当涨经验了。

    1. 所以说,铁子们,简历一定要海投,万一馅饼真砸到你身上呢!!!
    2. 剑指offer一定要全部过一遍,最好每一题都知道最优解!!!
    3. 多看面经总是有好处的!!!
    4. 经过这次面试,我发现得自己把知识点串起来讲一遍,不然面试时脑瓜子嗡嗡的!!!
    5. 面试时可以适当的引导面试官,让他问你你想让他问的,亲测,真的好用!!!

    但愿能过(满怀希望,虽然不大),过了我能开心的睡不着的!

  • 相关阅读:
    AWS SAP-C02教程11-解决方案
    【Unity3D】分离路面导航
    二叉树神级遍历:Morris遍历
    【无标题】
    走进Web3万链互联:跨链&跨层、锁定+铸造与哈希时间锁定
    element Cascader 级联选择器动态通过接口获取二级三级数据
    正点原子Linux MINI板系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs)
    《Redis系列教程》
    ROS机械臂 Movelt 学习笔记2 | Move Group 接口 C++
    人工智能第2版学习——盲目搜索3
  • 原文地址:https://blog.csdn.net/m0_52882232/article/details/127991003