最近面试【测试开发岗】的题,答案如下

  • 1、输出json文件里某个键的值
  • 2、将两个数组按照键值对的形式,以json格式输出;
  • 3、元组和列表的区别;
  • 4、字符串逆序,~~时间复杂度是0和1的写法~~ ;
  • 5、测试redis的时候需要注意什么;
  • 6、写一个redis的语法;
  • 7、快排的思路;
  • 8、分糖果求值;
  • 9、返回一个字符串里只出现1次的第一个元素和位置;
  • 10、查找两个字符串a,b中的最长公共子串
  • 11、统计输出字符串中每个字符的个数
  • [牢骚]**~~2021年12月底的生活不只眼前的苟且,还有裁员和疫情。谢谢!~~**

1、输出json文件里某个键的值

// config.json
{"key": "demo",
"value": "demo value"}
import json
with open("config.json", "r") as f:json_str = f.read()
your_dict = json.loads(json_str)
# get key
print(your_dict["key"])
方法 描述 用法
json.dumps 将 Python 对象编码成 JSON 字符串 data2 = json.dumps(data)
json.loads 将已编码的 JSON 字符串解码为 Python 对象 text = json.loads(jsonData)

python教程

2、将两个数组按照键值对的形式,以json格式输出;

A = ['a',1,'c']
B = ['e',2,3]
D = dict(zip(A,B))
print(json.dumps(D))

3、元组和列表的区别;

元组和列表都属于序列,它们又都可以按照特定顺序存放一组元素,类型不受限制,只要是python支持的类型都可以。列表类似用铅笔在纸上写下的歌词,写错了能擦掉;元组类似用钢笔写的,擦不掉,除非换纸。区别:

区别 列表 元组
可变 列表为可变序列,元素可以随时修改或者删除 元组属于不可变序列,不可修改,除非整体替换
方法 列表可以使用append()\extend()\insert()\remove()\pop()方法 元组不可以删除、修改、添加,不可用上述方法
切片 列表可以使用切片访问和修改列表元素 元组支持切片访问元素,不支持修改
访问和处理速度 列表相对较慢 元组比列表访问和处理速度快,所以不修改只访问的情况下,建议用元组提高性能
字典 列表不能作为字典的键 元组可以

python教程

列表的方法 解释
列表名.append(元素对象) 添加元素
列表名a.extend(列表名b) 追加b列表到a后面
列表名.remove(元素值) 删除不确定位置的元素值
列表名.count(元素) 统计元素在列表中出现的次数
列表名.insert(索引位置,元素对象) 将指定对象插入列表的指定位置
列表名.pop() 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

4、字符串逆序,时间复杂度是0和1的写法 ;

#字符串反转
方法一:字符串切片
str = input()
print(str[::-1])简写:print(input()[::-1])方法二:reversed 函数
str = input()
a = reversed(str)
print(''.join(a))方法三:reverse 函数
while True:try:s = input()b = list(s)b.reverse()print(''.join(b))except:break
  • 时间复杂度待学习……持续更新

5、测试redis的时候需要注意什么;

redis是开源的,高性能的 key-value 数据库,可以用作数据库、缓存、消息中间件。支持多种类型数据结构。对于多数情况,使用redis的主要场景是帮助关系型数据库mysql减轻访问压力并提升查询效率。

redis测试注意点 具体描述
数据过期 是否需要设置过期时间?过期时间是否合理?设置了过期时间,数据过期后是否会删除?
redis存储空间 高峰时期redis需要的最大空间是多少?元数据+业务数据去判断;当前设置的内存大小是否能满足?
性能 关注redis的延时、超时。查询是否存在慢日志。查询是否存在异常redis日志。查询拒绝连接数是否为0。
缓存命中率 查询分析缓存命中率和缓存未命中率是否合理
1什么是雪崩,怎么引起的,2解决方法 1)缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是, 缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库;2)缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。设置热点数据永远不过期。
什么是缓存穿透,原理?3种解决方法? 某个id数据库不存在,黑客一直访问这个id,导致服务崩溃。1)接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;2)从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击;3)加一个布隆过滤器,快速判断key是否在数据库中,然后过滤数据库请求。
缓存击穿,解决方法 热点数据过期了,大量请求打在一个过期的热点数据上,导致数据库崩了。1)热点数据永不过期,如果一定时间内访问量到达一定数量,就重置过期时间,这样热点数据就不会过期;2) 互斥锁,只有一个线程取数据
数据一致性 (1)淘汰缓存是⼀种通⽤的缓存处理⽅式(2)先淘汰缓存,再写数据库的时序是毋庸置疑的(3)服务化是向业务⽅屏蔽底层数据库与缓存复杂性的⼀种通用方式
秒杀活动思路 1) 前端-秒杀开始时,更换javascript文件,灰色按钮变成可点->设置5s可点一次。2) 后端->一个uid 5s请求只能到达一次->后端增加任务队列,由队列来控制业务->使用缓存,把数据放在cache中

redis测试点
雪崩,击穿,穿透
架构-秒杀系统优化思路参考
缓存架构设计

6、写一个redis的语法;

设置键值对:
redis 127.0.0.1:6379> SET runoobkey redis
OK
取出键值对:
redis 127.0.0.1:6379> GET runoobkey
"redis"

redis教程

7、快排的思路;

快速排序其实是在冒泡排序的基础上改进的。冒泡排序是每次遍历都是两两比较,取出一个最大的放在后边。
快速排序的基本思想是:通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以此达到数据变成有序序列。
根据一趟快排的规则,先定下一个关键数据,通常都是数据的第一位,然后进行比较。

快速排序
排序算法的时间复杂度
快排

8、分糖果求值;

有N个小朋友站在一排,每个小朋友都有一个评分
你现在要按以下的规则给孩子们分糖果:
每个小朋友至少要分得一颗糖果
分数高的小朋友要他比旁边得分低的小朋友分得的糖果多
你最少要分发多少颗糖果?

class Solution:def candy(self , ratings ):res=[1]*len(ratings)for i in range(1,len(ratings)):if ratings[i]>ratings[i-1]:res[i]=res[i-1]+1for i in range(len(ratings)-1,0,-1):if ratings[i-1]>ratings[i] and res[i-1]<=res[i]:res[i-1]=res[i]+1return sum(res)

分糖果

9、返回一个字符串里只出现1次的第一个元素和位置;

Python:返回字符串中第一个不重复的字母和位置
如果是下标的话,不需要返回i+1

# -*- coding: utf-8 -*-
def first_char(str):dict1 = {}for i in range(len(str)):#累计字符的出现次数if str[i] in dict1:dict1[str[i]] += 1#只出现一次,key对应的value就记1次else:dict1[str[i]] = 1for i in range(len(str)):if dict1[str[i]] == 1:return str[i], i+1
if __name__ == '__main__':str1 = input('please input string:')print(first_char(str1))

第二种写法

while True:try:a = input()for i in a:if a.count(i) == 1:print(i)breakelse:print(-1)except:break

找出字符串中第一个只出现一次的字符

10、查找两个字符串a,b中的最长公共子串

while True:try:s1=input()s2=input()if len(s1)>len(s2):#总体思路:从短的字符串中取子串,看其在长字符串中是否存在s1,s2=s2,s1length=0for i in range(len(s1)):for j in range(i+1,len(s1)):sub=s1[i:j+1]if sub in s2 and j-i>length:res=sublength=j-iprint(res)except:break

最长公共子串

11、统计输出字符串中每个字符的个数

st = input("输入字符串")
dic = {}
for i in st:if i in dic:dic[i] +=1else :dic[i] = 1
print(dic)

[牢骚]2021年12月底的生活不只眼前的苟且,还有裁员和疫情。谢谢!

写到这里,好想唱首歌
不是英雄 不读三国
若是英雄 怎么能不懂寂寞
独自走下长坂坡 月光太温柔
~~
被裁后,听到的歌词都充满悲情【礼貌而又不失尴尬的微笑】

30岁测试大妈被大厂裁掉后(持续更新)面试准备2相关推荐

  1. 30岁测试开发年薪不足80万,还要被面试官diss混得太差?

    近日,有网友发帖称:"30岁去应聘测试开发,拿不到七八十万的年薪确实有点丢人了,还被面试官diss混得太差了",网友们看完都炸了. ​ 来看看网友们都是怎么说的. ​ @有网友说: ...

  2. 30岁测试工程师对取消大小周的看法,“我宁愿在996里哭,也不愿在955里笑”

    又到一年的尾声了,互联网人的心情再起波澜,取消"996".大裁员.年终奖缩水接踵而来 有的因加班减少导致收入不及预期,家庭开支捉襟见肘:有的遭遇公司以"优化"之 ...

  3. 假如在40岁时一定会被裁掉?你需要提前办好这几件事!

    版权:来源  金融市场部 ID:moneymatrix 如果你知道自己40岁的时候一定会被裁员,那你会做什么? 甲骨文的这次裁员,并不是因为公司亏损,很可能是政治因素.哪怕你技术能力很再杰出,业绩很好 ...

  4. 测试员职场最大的危机不是30岁,而是中年被裁!

    最近热播的现实主义大剧,<都挺好>引发全民追剧,这是因为剧情跟现实实在是太贴近了. 不管是重男轻女问题还是养老问题,亦或者是原生家庭问题,都十分尖锐,直戳人心! 1 除了这些热议的话题之外 ...

  5. 干Java开发快30岁了,没有核心竞争力,该怎么跳槽面试?

    今年互联网大环境的确不怎么好,互联网公司纷纷陷入裁员风波并缩减规模,这就导致更多程序员需要去竞争更少的就业岗位,搞的整个IT 行业越来越卷.作为Java程序员的我们就更不用说了,除去加班的可能性,每天 ...

  6. 2022年秋招/春招/提前批/大厂面经整理(持续更新中~)

    文章目录 阿里面经 阿里巴巴国际技术部一二面面经 (C++) 阿里巴巴云原生高可用架构 C++ 一面面经 阿里面试(已OC) 阿里云 云网络cc++研发暑期实习面经 阿里云C++后端暑期实习面经 阿里 ...

  7. 30岁的前端程序员月薪多少才达标?

    30岁的前端程序员月薪多少才达标? 01 朋友毕业就进入了前端行业,一晃就是6年.眼见着事业进入瓶颈期,他开始自责给不了家人更富足的生活. 30岁的他,月薪接近3W,但面对年迈的父母,上学的孩子以及上 ...

  8. 在开课吧学python的经历-28岁,年薪30万,工作5年,被裁掉只用了5分钟

    原标题:28岁,年薪30万,工作5年,被裁掉只用了5分钟 "我太失败了!" 某个周五晚上,叶子给我发来信息. 叶子毕业后,就在这家公司做人力,两年来任劳任怨,说她已经有3年经验一点 ...

  9. 华为真的会裁掉35岁以上的程序员吗?

    推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...

最新文章

  1. Sobel算子及cvSobel
  2. 循环神经网络(RNN)模型与前向反向传播算法
  3. Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
  4. PyTorch学习问题记录
  5. @Autowired和@Resource注解的区别?
  6. gdb调试多进程程序
  7. 2018生活消费趋势:越来越多95后开始泡枸杞
  8. Foxmail安装以及使用
  9. UGUI ScrollRect使用
  10. 前端 视频标签 video的一些特殊属性详解
  11. 测试ai模糊软件,“马赛克视频”AI还原软件被疯传!测试效果出乎意料!
  12. WPS如何设置快捷键|为设置颜色添加快捷键
  13. 数据的逻辑结构包括那些?
  14. matlab中inf是什么意思,simulink中inf什么意思
  15. DM05-奇异点处理总结
  16. HDU - 1859 最小长方形
  17. 【052】Emoji Mix-Emoji表情趣味合成
  18. iOS UILabel 单词自动换行
  19. 前所未有灾难性事件!韩国数据中心锂电池着火致互联网大瘫痪!
  20. 【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(21):正定二次型

热门文章

  1. js逆向-某市公共资源交易网
  2. 视频:三亚行-乘风破浪会有时
  3. skimage.morphology.dilation 运行错误
  4. ip地址计算可用计算机数,可用网络地址数,可用主机地址数都是如何算的?
  5. python使用近似公式计算e_python如何算自然底数e
  6. 苹果赢嘛了,首次登顶中国手机市场年度一哥,国产手机无力抗衡
  7. STM32F103ZET6程序移植到C8T6
  8. CRMEB知识付费系统小课堂——模版消息修改
  9. [软件更新]迅雷(Thunder) 5.9.1.922 修正版(0602)
  10. Python学习实例(一)温度转换