测试开发面试题-某大厂

引言:大厂面试主要看重一下几个方面:
  • 大厂喜欢编程能力强的,并且要有实战经验的
  • 大厂喜欢基础知识扎实的哥哥姐姐
  • 大厂喜欢有自己独到见解的哥哥姐姐
1、python如何管理项目:版本控制,虚拟环境

学习django的时候在用的虚机环境的管理方式。Pip install virtualenv就好了,就可以在一个不同项目间管理不同的包,就不用担心包的版本冲突,或者Python2和3的切换了。就像一个一个的房子吧,有点像docker,个人认为。对比之下java是用maven做管理,面试的也会问到maven如何处理冲突,(答案不全,后续补充)

2、py2和py3的区别
一、为什么要了解Python3和Python2的区别

随着时间进入2020年这个节点,Python官方发表声明不在维护Python2版本的技术更新,成为了Python开发领域一个重要拐点。

目前,大部分公司的项目都是以前基于Python2版本开发,许多项目延续到如今还在使用,至于原因,当然是项目直接迁移升级成Python3成本过高。

于是出现了一种解决方案,这些继续使用Python2版本的公司,可以在技术社区通过付费购买维护服务的方式,让专业技术团队,针对性的维护Python2版本开发的项目。

1.公司项目基于Python2需要维护
2.维护需要专业技术人员
专业技术团队,大家想想,Python是近年越来越火,新生力量,绝大部分都是从Python3起步开始学习,所以掌握的都是新知识,其实很少人知道具体区别,并且加以运用。

3.绝大新生力量仅会Python3
综上所述,一个开发人员,在掌握Python3版本开发技术的前提下,熟练使用Python2也逐渐称为非常重要的一部分

那么,接下来我们来看看Python3和Python2版本有哪些区别吧。

二、版本区别使用
1、print

python2中print为输出语句
Python3中print是一个函数
Pyhton2无需括号 Python3需要括号

2、range 与 xrange

range()在Python2中会得到一个列表,xrange(1,3)得到一个生成器
在Python3中是生成器,没有xrange

3、字符串

Python2中存储字符串,底层使用ascii编码
python3存储字符串,使用的是Unicode

4、异常处理

python2 中的异常处理语法
Python3 中的异常处理语法

5、打开文件

Python2有打开方式

f = file()
f = open()
Python3中打开方式

f = open()
with()

6、标准输入

python2有两种标准输入

info = raw_input(“提示消息:”),输入数据全部转换为字符串

info = input(“提示消息:”),输入什么就输出什么数据类型,输入字符串加引号

Python3标准输入

info = input(“提示消息:”) 输入的为字符串类型

7、除法运算

Python2 中

/表示的是整除,但是加上浮点数就是真实除法
Python3 中

/表示的就是真实的除法,//表示的整除

8、自定义类型

Python2

保留了原始的类型继承关系的经典类,同时也支持继承 object 而衍生的新式 类,所以在多继承操作过程中会出现两种不同的数据检索方式,让中大型项目的开发变得扑 朔迷离。
Python3

废弃了经典类,只保留了新式类,也就是现在我们通用的自定义类型,直接 或者间接继承自 object。
原文链接:https://blog.csdn.net/weixin_44238683/java/article/details/106223990

3、深copy和浅copy的区别

https://www.cnblogs.com/xiaxiaoxu/p/9742452.html

4、元组和链表的区别

第一点:元组是不可变的常量对象,链表可变修改下个节点的指向
第二点:元组的每个元素没有指向下个元素,链表有next节点

5、有自己独到见解

1、如何预防生产bug的出现
2、如何去看流媒体行业的发展
3、测试过程中如何使用你的自动化工具

6、如何修改一个接口的返回值

抓包工具的断点功能,可以修改接口的request,或者respones
但是面试官不满意啊,凉凉后想到了mock,人家就是想问这个的吧,python里面有mock包。网上资料很多,我就不赘述了,因为我也是百度的,没有独到见解了。

7、一个文件很大,且里面都是ip地址,让你找出出现频率最高的10个IP。

#思路,遍历文件,对ip做个正则匹配,ip做key,个数做value。但是面试官问了,如果ip不同,文件有很大,有没有考虑结果占用的内存问题,我想到的是吧这个文件按照多少行去做切割分治,面试官再次引导,ip的可能性是2的32次方种可能。 我没有想出更好的办法。下来百度了下。
https://blog.csdn.net/cnnumen/article/details/5781226
原来面试官的引导是在ip存的时候取模的方式,将分件切割,这是不是有点像很多分库分表的意思呢。

8、Redis的了解,常见的操作

可能有实际没有使用过,回到也是天天看研发代码而来,set值并设置有效期,get一个key的值。后面做了百度。
面试中:redis的了解回答,第一,非关系性数据库,mysql是关系型数据库
第二:redis存储在缓存中,mysql在硬盘中
第三:redis读写速度快,mysql读写慢
第四:redis不安全,mysql安全,内存收到掉电影响,比如redis服务挂了
其他我就没有更深的理解了,面试管也很和蔼,一直说知道多少说多少,所以我就又吧啦吧啦了点,redis的热点问题,mysql和redis的拆离集群做负载均衡等,面试官根据我说的问了,mysql为什么要做读写服务的拆分,我只回答了我的理解,就是要读写消耗不同,服务调用评率不同,可以根据服务读任务多多分配读的mysql服务,达到资源合理利用。

9、Session,cookie,token的区别

我这session和cookie知道啊,token但是傻眼了,但是实际接触过啊,直接回到了token见到过的是作为接口入参,用于鉴权的。
下来我有思考了下,说说我对token的理解
第一点:token也可以作为session机制,返回给客户端时放入cookie,再次请求从cookie中去取
第二点:token可以有接口调用方通过计算获得,接口服务相同计算去校验。
例如:一个接口要用所有字段key值排序并md5后生成一个token传入接口做鉴权
第二点:token不放入cookie等返给客户端,减少通过cookie的攻击。
例如:获取用户信息,客户端需要请求接口A,接口A根据id找到token,token会计算出一个约定的字段和值返回给客户端,客户端再用这个字段取请求真正的用户信息接口B获取用户信息。在这个过程中没有什么我们常见的session,cookie,name等字段,防止了攻击,即使截获一个相当于乱码的串也毫无意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值