**
最新 测开面试题
1.自我介绍
2.具体问题
- 请您说出软件测试流程是什么样的?
- bug 等级标准怎么划分?
- 你认为测试工程师的工作职责和内容是什么?
- web测试和app测试不同点?
- APP这块,专项测试用过哪些?
- 试过程中遇到app出现crash或者ANR,你会怎么处理?
- 接口测试用例怎么写?
- 接口层面有没有遇到过什么特殊的问题,举例一下;
- 线上问题从开发角度分析?列举工作中例子介绍下。
- 如何分析一个BUg是前端的还是后端的?
10.请简要介绍一下安卓系统四层架构? - java\C\python熟悉哪个?
- 自动化测试这块?有没有接触过自动化平台?
- 讲一下你怎么搭建自动化框架的?
- 接口层面有没有遇到过什么特殊的问题,举例一下;
- 对于不熟悉的项目,有没有好的方法去了解一个系统?又没有好的方法去学习?
- 立即去测的系统,有没有快的方法去了解系统?
- 想浏览一个网站,从输入网址回车,到响应怎么样的一个流程 ?
- 接口自动化,数据反馈要和数据库做比对,链接数据库用什么函数?
- 算法题:给你一个字符串找出其中的回文字符串,对你的算法设计用例
- 算法题:给你一个字符串,查找出所有的重复子字符串。
- 网络良好的情况下,发现数据传输过程出现404的情况,你认为是什么问题?
- 如果给你250ml的农夫山泉,你该如何对它进行测试?
- 登录窗口如何设计测试用例?
- 对一个登录界面怎样设计测试用例?
3.java
-
Java中的基本类型有哪些?
byte、char、short、int、long、float、double、boolean。 -
多线程与多进程区别 ?
-
线程和进程的区别?
一般运行一个程序称为一个进程。百
进程可以创建线程,也可以创建进程。
线程是由进程管理的,线程之间度、线程和父问进程(创建线程的进程)之间可以共享内存变量答(需要使用策略的)。
进程之间一般不可以直接回共享内存变量,需要使用一些进程间的控制共享内存变量。 -
TCP三次挥手 四次握手?
-
并发处理机制?
① 配置多个Linux外部服务器,Nginx反向代理。
② 增加缓存服务器,将数据放入内存里面,增加读取速度。
③ 搭建Redis集群。
④ 做数据分离(建立历史表,用的技术是Quartz(每天定时定点的执行任务))。
⑤ 将逻辑处理涉及到多处数据库连接操作,优化成一个存储过程,只调用一次数据库,从而缩短数据库的访问时间。 -
cookie和session的区别?
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
(4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
将登陆信息等重要信息存放为SESSION -
get和post的区别?
1). Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。
2). Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
3). Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
4). Get执行效率却比Post方法好。Get是form提交的默认方法。 -
http 和https区别?
1)、是否免费:
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用;http一般是免费的。
2)、安全性:
http是超文本传输协议,信息是明文传输;https则是具有安全性的ssl加密传输协议。
3)、连接方式:
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4)、连接复杂程度:
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 -
内存泄漏和内存溢出的区别;?
内存泄露 :是指程序在申请内存后,无法释放已申请的内存空间就造成了内存泄漏,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
我们知道了内存泄漏的原因而内存溢出则有可能是因为我们我们多次内存泄漏堆积后的后果则变成了内存溢出
内存溢出: 指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出,简单来说就是自己所需要使用的空间比我们拥有的内存大内存不够使用所造成的内存溢出。 -
map底层实现?
Map是以键值对来存储对象的,它的底层实际上是数组和链表来组成的;
***当使用put方法时,通过key.hashcode对数组长度取余,先查找出数组位置是否存在对象;
a。存在,则把里面的链表拿出来,判断链表里面是否存在key值与传递过来的key值一样的对象,
– 存在,则把传递过来的value取代链表key对应的value,
– 不存在,则直接通过链表的add()方法加到链表后面;
b.如果不存在,则直接放到数组中。
***当使用get方法时,通过key.hashcode对数组长度取余,先查找出数组位置是否存在对象;
a.如果不存在,则返回为空,
b.如果存在,则遍历链表,判断链表里面是否存在key值与传递过来的key值一样的对象,
– 存在,则把key值对应的value取出返回,
– 不存在,则返回为空;
4.python
1.Python 装饰器?
代码的复用,且不想改变函数内部代码,它不会破坏代码的实现,且能完成代码的复用
1).从代码的稳定性出发的:
针对某个被封装的函数进行代码上的修改,但又不想去改它具体的实现,就可以使用装饰器来改变这个函数的行为!
2).从代码的复用性出发的:
例如,定义个一个打印时间的逻辑实现;
把打印时间这个操作,然后把它封装到装饰器后,若后面有打印时间的操作,我们就可以使用@decorator强行加载到一个调用函数上,就可以实现打印时间功能
2.Python中浅拷贝和深拷贝的区别?
3.对字典1和2进行合并?
dict1 = {‘a’: 10, ‘b’: 8} ; dict2 = {‘d’: 6, ‘c’: 4}
答案:
ls = list(dict1 ) + list(dict2)
Dict3 =dict(ls);
或者直接使用dict()
Dict3 =dict(dict1 ,dict2)
再或者使用update()
Dict3 =dict1 .update(dict2)
4.Python如何计算1-100的和?
答案:
Sum =0
for i in range(1,101):
Sum =sum+i
Print(sum)
5.Python中5个常用标准库?
Os,Sys, Time,Datetime,Re。
6.python 常用的框架有哪些?
像web框架: flask、django、Web2py、Tornado
爬虫: Scrapy、Crawley、Portia
7.Python常见六大基本类型如下:
String(字符串) ③.List(列表) ④.Tuple(元组) ⑤.Set(集合) ⑥.Dictionary(字典)”
5.linux
1.你知道linux 基本命令?
lsof -i:端口号 、 netstat -anpl |grep 程序名
sed -n ‘/开始时间日期/,/结束时间日期/p’ all.log : 查看某个时间段的日志信息
grep ‘2022-01-06 11:42’test.log :查看2022年01月6号11点42分的日志信息
tar -zxvf tamcat.tar.gz :解压tomcat
#rm-rf/var/log/* :删除日志
cat /proc/cpuinfo # 查看CPU信息
rpm -qa # 查看所有安装的软件包
ps -ef # 查看所有进程
tail /head test.txt # 从尾/头开始输入test文件的内容,默认10行
tail -n 10 /e/Desktop/1.txt 查看后十行:
2.linux 中 grep 和 find 的区别?
grep搜索的是文本,find搜索的是文件,换句话说就是grep是查找匹配条件的行,find是搜索匹配条件的文件。
3.查询cpu等情况的命令?
top M
free
4.文件夹下面还有文件,我想把文件及文件下的内容都复制下,用什么命令?
cp -a path1/dir1 path2/ :连同文件夹和其下面所有内容拷贝到其它地方
5.如何用命令查看文件超过100M大小的文件
find. /-type f -size +100M
-
请用命令写出在/usr文件下查找名字为name.TXT的文件
find ./usr -name “name.txt” -
在Linux系统中,一个文件的访问权限是755,代表什么含义?
是指所有者拥有可读、可写、可执行权限,所属组与其他用户仅拥有可读与可执行权限。 -
如何查看系统的端口号占用情况?
lsof -i :端口号 或者 netstat -anp | grep “端口号”
6.mysql
1.mysql中in 和exsits的区别?
1)、in是把外表和内表做hash连接,先查询内表 , 再把内表结果与外表匹配;会先进行子查询获取结果集,然后主查询匹配子查询的结果集,返回数据
2).子查询使用 exists,会先进行主查询,将查询到的每行数据循环带入子查询校验是否存在,过滤出整体的返回数据;
3)、在外表大的时用in效率更快,内表大用exists更快。如果查询的两个表大小相当,那么用in和exists差别不大
4). 不管外表与内表的大小,not exists 的效率一般要高于 not in,跟子查询的索引访问类型有关
2.数据库想查前100条用什么命令?
mysql中用 limit
3.数据库:查改删,比如有三张表(学生信息表,课程信息表,考试成绩表)
比如,
1)查询每个学员的总分,总分由高到底排序,输出包括姓名和总分
SELECT t.name
,SUM(score) AS score FROM t_score AS s LEFT JOIN t_student AS t
ON s.student_id
= t.student_id
LEFT JOIN t_class AS c
ON c.class_id
=s.class_id
GROUP BY t.student_id
ORDER BY SUM(score) DESC
2、将学生李华的英文成绩更改为88
UPDATE t_score SET t_score.score
= 88
WHERE t_score.student_id
=
(SELECT student_id FROM t_student WHERE t_student.name
=‘李华’ )
AND t_score.class_id
=
(SELECT class_id FROM t_class WHERE t_class.name
=‘英语’)
3、将姓名为李华的学员,从考试成绩中删除
DELETE FROM t_score
WHERE t_score.student_id
=
(SELECT student_id FROM t_student WHERE t_student.name
=‘李华’ )
7.性能
1.你做过性能测试吗?用什么工具?
2. 列举几个性能指标,这些指标怎么监控?
资源指标:CPU,内存,IO,网络
系统指标:并发量,响应时间,TPS,错误率等
3.项目中出现的性能瓶颈有哪些?然后说一下分析步骤.
瓶颈大概有:
1)、TPS波动较大
2)、高并发下大量报错
3)、压测过程中TPS不断下降,CPU使用率不断降低
4)、并发数不断增加,TPS上不去,CPU使用率较低
4.数据库下响应时间比较慢,有一个拐点,CPU指标不正常,查链接数据怎么查?
先分析可能原因:
1)、计算资源不足
2)、系统层面未进行基本的优化,或不同进程间资源抢占
3)、MySQL配置不科学
4)、垃圾SQL满天飞