字节日常实习测试开发一面复盘

面试题目:https://www.nowcoder.com/discuss/452780062417457152

1)自我介绍

简单介绍了一分钟,只有基本信息和项目的名称和选择测开岗位的原因.

2)了解一下基本情况,目前所在地,能实习几个月。。。

字节希望能实习至少六个月, 我说大约五六个月

3)介绍简历中的第一个项目

问的比较细致,大概十分钟,有时候可能不知道面试官到底想问的是什么点u

4)测试的基础理论了解程度

回答:知道一些简单的理论知识,比如黑盒测试当中的等价类划分、边界值分析,白盒测试的静态源码分析。

又问给一个实际案例能用这些方法写出测试值吗,回答了不能哈哈哈哈哈

【在此总结一下软件测试相关知识点吧】

见帖子:https://www.nowcoder.com/discuss/454219091373518848?sourceSSR=users

5)在浏览器输入一个网址后会发生什么

回答:域名解析,建立HTTP/HTTPS连接等等,具体流程没有完全记清楚,回答了个大概流程

又问:都设计到哪些通信协议呢?ARP协议和RARP协议?

6)了解洪泛攻击吗?原理是什么

补充回答:

( 洪泛攻击利用TCP三次握手机制,利用伪造的IP地址向被攻击端发送请求,而被攻击端发出的响应报文将永远到达不了,从而 等待连接关闭的过程资源浪费。如果有大量的连接,主机的资源将被耗尽,从而达到攻击的目的

洪泛攻击也是DOS攻击的一种)

7)一个智力题

你雇用了一个矿工,需要工作一周,报酬是一根金条。你需要每天都付给矿工报酬,也就是每天给1/7根金条,但是你只能切 两次金条,问你怎么支付。

在面试官的引导下勉强回答了出来,在1/7和3/7处各切一刀

  • 主要用的开发语言

回答python,然后问了一些语法相关的内容:元组和列表的区别,python3和python2的区别,python的多线程如何实现的 (用了什么锁我记得),python如何捕获异常,深拷贝浅拷贝的区别,使用深拷贝用什么方法(deepcopy()函数),python的 内存管理(如何管理的,以及内存空间有哪些类型,堆和栈的区别,如何申请堆空间),python中闭包的概念

补充回答:

8)元组和列表的区别:

列表用[]表示,元组用()表示

列表中的数据可变,元组不可变

列表中一般存放同构元素(数据类型一致的元素),元组一般用于存放异构数据(比如 一个人的姓名,升高,体重,类似数据库的一个记录)

9)python3和python2的区别:

print函数

/除法,python2中结果是整形,python结果是浮点类型

捕获异常的语法有变化: except exc,val ---> except exc as val (except 异常类型 as 异常值, 异常值在2和3中都可以省略)

python2中不等号有两种表示方式:<> 和 !=, python 只能用!=表示\

另外还有一些模块被改名

10)python如何实现多线程:

有两种方式来创建多线程, 一种是继承threading.Thread类, 重写run方法 ,另一种是实例化threading.Thread类方法, 将线程需要执行的任务函数作为参数传入线程 (两种方法都是使用threading模块)

Thread类中常用方法:

start() 启动线程,等待cpu调度

run() 线程被cpu调度后自动执行的方法

join() 调用该方法会使主调用线程阻塞,直到被调用线程线程运行结束或超时

线程锁:

cpu在多个线程之间随机调用, 不加锁的话会造成程序结果不可预期,为了保证数据安全,需要使用线程锁,即同一时刻只允许一个线程操作(使用join方法,会让多线程变成顺序执行, 属于因噎废食的做法)

python在threading模块中定义了几种线程锁类,分别是:

Lock 互斥锁: 互斥锁是一种独占锁,同一时刻只有一个线程可以访问共享的数据

RLock 可重入锁

Semaphore 信号锁: 非互斥锁,允许一定数量的线程同时更改数据

Event 事件锁

Condition 条件锁

全局解释锁:

GIL(global interpreter Lock)使得即使在多核CPU的情况下一个时刻只能执行一个线程

python对多线程下的CPU密集型任务不够友好,对IO密集型的任务友好

为什么不能去掉GIL: 难度过大,牵扯东西过多,一直没能去除成功

因此在python中想要充分利用多核CPU,就用多进程.因为每个进程有独立的GIL,互不干扰

参考:

https://www.liujiangblog.com/course/python/79

11)数据类型转换:

可以分为两种:

隐式类型转换-自动完成 (比如int+float=float)

显示类型转换-使用类型转换函数 (比如,int(), float(), str(),list())

12)如何捕获异常

try except else语句

try{}

except 异常类型

else...

13)python内存管理

python内存管理机制有:引入计数、垃圾回收、内存池机制

在python中每个对象都有指向该对象的引用总数---引用计数

当一个对象的引用计数降为0时,该对象就要被回收

内存池机制:python中分为大内存和小内存,大内存使用malloc分配,小内存使用内存池分配

14)python内存分区:

python内存划分为五个部分:

栈:存储python的变量

堆:存储python的对象

方法区:存储python的.class 和 .function

本地方法栈:存储和操作系统相关的变量

寄存器:存储和cpu相关的变量

15)python深拷贝和浅拷贝:

浅拷贝是对引用的拷贝,仅复制地址,不开辟新的空间,使用copy.copy()或者直接赋值=

深拷贝是对对象的资源拷贝,需要开辟新的地址来存放数据,使用copy.deepcopy()

16)闭包:

概念: 在一个函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数变量,则可能产生闭包

简单来说就是:某个内部函数被当作对象返回时,夹带了这个内部函数之外的变量,这就形成了一个闭包

装饰器:

「装饰器」作为 Python 高级语言特性中的重要部分,是修改函数的一种超级便捷的方式,适当使用能够有效提高代码的可读性和可维护性,非常的便利灵活。

「装饰器」本质上就是一个函数,这个函数的特点是可以接受其它的函数当作它的参数,并将其替换成一个新的函数(即返回给另一个函数)

def first(fun):
    def second():
        print('start')
        fun()
        print('end')
        print fun.__name__
    return second

17)算法题:用两个栈模拟队列

见过这题,但是没实际做过哈哈哈哈哈哈,只记得大致思路

面试官耐心的提示了半天...... 最终写的也不是很满意

(面试中算法题不需要实际运行,能写出大致思路就行)

leetcode: 232. 用栈实现队列

全部评论
老哥有无推荐的测试资料啊
1 回复 分享
发布于 2023-02-14 22:09 重庆
考虑小红书测开日常实习吗,base上海招个日常实习生,组内直招,不强制要求实习经历
点赞 回复 分享
发布于 2023-02-14 22:58 上海
老哥能问问你准备的啥项目吗
点赞 回复 分享
发布于 2023-02-21 05:37 江西
https://www.nowcoder.com/discuss/454219091373518848?sourceSSR=users 哥这个链接可以开放一下吗
点赞 回复 分享
发布于 02-19 15:52 美国

相关推荐

11 106 评论
分享
牛客网
牛客企业服务