30岁测试大妈被大厂裁掉后(持续更新)面试准备2
最近面试【测试开发岗】的题,答案如下
- 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相关推荐
- 30岁测试开发年薪不足80万,还要被面试官diss混得太差?
近日,有网友发帖称:"30岁去应聘测试开发,拿不到七八十万的年薪确实有点丢人了,还被面试官diss混得太差了",网友们看完都炸了. 来看看网友们都是怎么说的. @有网友说: ...
- 30岁测试工程师对取消大小周的看法,“我宁愿在996里哭,也不愿在955里笑”
又到一年的尾声了,互联网人的心情再起波澜,取消"996".大裁员.年终奖缩水接踵而来 有的因加班减少导致收入不及预期,家庭开支捉襟见肘:有的遭遇公司以"优化"之 ...
- 假如在40岁时一定会被裁掉?你需要提前办好这几件事!
版权:来源 金融市场部 ID:moneymatrix 如果你知道自己40岁的时候一定会被裁员,那你会做什么? 甲骨文的这次裁员,并不是因为公司亏损,很可能是政治因素.哪怕你技术能力很再杰出,业绩很好 ...
- 测试员职场最大的危机不是30岁,而是中年被裁!
最近热播的现实主义大剧,<都挺好>引发全民追剧,这是因为剧情跟现实实在是太贴近了. 不管是重男轻女问题还是养老问题,亦或者是原生家庭问题,都十分尖锐,直戳人心! 1 除了这些热议的话题之外 ...
- 干Java开发快30岁了,没有核心竞争力,该怎么跳槽面试?
今年互联网大环境的确不怎么好,互联网公司纷纷陷入裁员风波并缩减规模,这就导致更多程序员需要去竞争更少的就业岗位,搞的整个IT 行业越来越卷.作为Java程序员的我们就更不用说了,除去加班的可能性,每天 ...
- 2022年秋招/春招/提前批/大厂面经整理(持续更新中~)
文章目录 阿里面经 阿里巴巴国际技术部一二面面经 (C++) 阿里巴巴云原生高可用架构 C++ 一面面经 阿里面试(已OC) 阿里云 云网络cc++研发暑期实习面经 阿里云C++后端暑期实习面经 阿里 ...
- 30岁的前端程序员月薪多少才达标?
30岁的前端程序员月薪多少才达标? 01 朋友毕业就进入了前端行业,一晃就是6年.眼见着事业进入瓶颈期,他开始自责给不了家人更富足的生活. 30岁的他,月薪接近3W,但面对年迈的父母,上学的孩子以及上 ...
- 在开课吧学python的经历-28岁,年薪30万,工作5年,被裁掉只用了5分钟
原标题:28岁,年薪30万,工作5年,被裁掉只用了5分钟 "我太失败了!" 某个周五晚上,叶子给我发来信息. 叶子毕业后,就在这家公司做人力,两年来任劳任怨,说她已经有3年经验一点 ...
- 华为真的会裁掉35岁以上的程序员吗?
推荐阅读: 这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试 毫不夸张的说,这份SpringBoot学习指南能解决你遇到的98%的问题 给跪了!这套万人期待的 SQL ...
最新文章
- Sobel算子及cvSobel
- 循环神经网络(RNN)模型与前向反向传播算法
- Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)
- PyTorch学习问题记录
- @Autowired和@Resource注解的区别?
- gdb调试多进程程序
- 2018生活消费趋势:越来越多95后开始泡枸杞
- Foxmail安装以及使用
- UGUI ScrollRect使用
- 前端 视频标签 video的一些特殊属性详解
- 测试ai模糊软件,“马赛克视频”AI还原软件被疯传!测试效果出乎意料!
- WPS如何设置快捷键|为设置颜色添加快捷键
- 数据的逻辑结构包括那些?
- matlab中inf是什么意思,simulink中inf什么意思
- DM05-奇异点处理总结
- HDU - 1859 最小长方形
- 【052】Emoji Mix-Emoji表情趣味合成
- iOS UILabel 单词自动换行
- 前所未有灾难性事件!韩国数据中心锂电池着火致互联网大瘫痪!
- 【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(21):正定二次型
热门文章
- js逆向-某市公共资源交易网
- 视频:三亚行-乘风破浪会有时
- skimage.morphology.dilation 运行错误
- ip地址计算可用计算机数,可用网络地址数,可用主机地址数都是如何算的?
- python使用近似公式计算e_python如何算自然底数e
- 苹果赢嘛了,首次登顶中国手机市场年度一哥,国产手机无力抗衡
- STM32F103ZET6程序移植到C8T6
- CRMEB知识付费系统小课堂——模版消息修改
- [软件更新]迅雷(Thunder) 5.9.1.922 修正版(0602)
- Python学习实例(一)温度转换