测试开发基本面试知识
微信测试用例
朋友圈:www.cnblogs.com/shallwebegi…
聊天:www.cnblogs.com/shallwebegi…
页面:wenku.baidu.com/view/d68043…
矿泉水瓶测试用例
微信收发红包需要注意的地方
hashset和hashmap区别
| hashmap | hashset |
|---|---|
| 继承Map接口 | 继承Set接口 |
| 存储健值对 | 只存储对象 |
| 使用健对象计算hashcode | 使用成员对象计算hashcode |
| 允许重复元素 | 不允许重复元素 |
| 继承Collection接口 | |
| 内部使用了hashmap的key | |
| 对象需要实现equals和hashcode方法 |
http和https区别
| http | https(http+ssl) |
|---|---|
| 超文本传输协议 | 安全套接字层超文本传输协议 |
| 明文传输 | 通信加密 |
| 不需要证书 | 需要CA证书 |
| 端口80 | 端口443 |
| 连接简单,无状态 | 可加密传输、身份认证 |
编程题:最长不重复子串
编程题:字符串反转
给定字符串,反转,但元音字母位置不变。
def demo(s):
if len(s) == 0:
return
arr = []
for i in s:
arr.append(i)
yuan = "aeiou"
left = 0
right = len(arr)-1
while left < right:
while arr[left] in yuan and left<right:
left += 1
while arr[right] in yuan and left<right:
right -= 1
arr[left], arr[right] = arr[right], arr[left]
left += 1
right -= 1
return ''.join(arr)
print(demo("abcdef"))
SQL题:分别筛选出男女个数
SELECT sex, count(sex) FROM table_1 group by sex;
select count(man) as 男, count(woman) as 女 from table_1;
RPC和HTTP
测试开发面试题
zhuanlan.zhihu.com/p/395569156
数据库面试题
软件分类
- 系统软件。管理、监控和维护电脑资源。
- 应用软件。解决实际问题的程序。
- 程序设计语言。用于编写程序。
接口测试
主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
支付宝付款码测试用例
测试微信群发红包 拼手气红包
黑盒测试的方法
边界值测试、等价类划分、错误推测法、场景法 、因果图法、判定表组成法、正交实验设计。
白盒测试方法
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
软件测试的流程
- 测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议
- 测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
- 测试设计阶段:主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
- 测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束
- 测试评估阶段:出测试报告,确认是否可以上线
创建索引的原则
事务隔离级别
baijiahao.baidu.com/s?id=166209…
解决的实际问题:
- 脏读:读到了其他事务未提交读数据。
- 可重复读:针对UPDATE操作,两次读取的内容一致。MySQL默认。
- 不可重复读:针对UPDATE操作,两次读取的内容不一致。大多数默认。需锁行。
- 幻读:针对INSERT操作。修改完后发现还有数据没有同步过来。需锁表。
隔离级别:
- 读未提交read uncommitted:不加锁。
- 读提交read committed:大多数数据库默认。
- 可重复读repeatable read:mysql默认。
- 串行化serializable:读时共享锁,写时排它锁。
| 事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交(read-uncommitted) | 是 | 是 | 是 |
| 读提交(read-committed) | 否 | 是 | 是 |
| 可重复读(repeatable-read) | 否 | 否 | 是 |
| 串行化(serializable) | 否 | 否 | 否 |
行级锁、页级锁、表级锁
| 行锁 | 页锁 | 表锁 |
|---|---|---|
| 引擎INNODB | 引擎BDB | 引擎MyISAM |
| 单独的一行记录加锁 | 一次锁定相邻的一组记录 | 锁住整个表 |
| 冲突少,速度慢 | 居中 | 冲突多,速度快 |
| 开销大,加锁慢 | 居中 | 开销小,加锁快 |
| 会出现死锁 | 会出现死锁 | 不会出现死锁 |
| 锁定颗粒度最小 | 居中 | 锁定颗粒度最大 |
| 发生锁冲突概率最低 | 居中 | 发生锁冲突概率最高 |
| 并发度最高 | 居中 | 并发度最低 |
| 适合有大量按索引条件并发更新少量不同的数据,又有并发查询的应用,如OLTP系统 | 适合以查询为主,少量按索引条件更新数据的应用,如WEB应用 | |
| 共享锁、排他锁 | 表共享读锁、表独占写锁 |
InnoDB:通过索引条件检索数据时,使用行锁;否则使用表锁。
数据库三范式
(需求 > 性能 > 表结构)
数据库设计所需要满足的规范,不会发生insert、delete、update操作异常。
- 第一范式:列不可再分。
- 第二范式:属性完全依赖于主键。
- 第三范式:属性直接依赖于主键。
cookie和session
会话跟踪技术。
| cookie | session |
|---|---|
| 在客户端记录信息 | 在服务端记录信息 |
| 保存在PC本地 | 保存在服务器内存中 |
| 固定过期时间 | 每访问一次就更新时间,超时删除 |
| 可以永久和暂时存在 | 浏览器页面关闭就消失 |
| 不可跨域名性 | 使用cookie作为标识,maxAge=-1 |
| 中文需要编码保存 | |
| 可使用字符、二进制数据 | |
| 单个cookie保存数据不超过4K | 大小没有限制 |
stringbuilder和stringbuffer
| StringBuilder | StringBuffer |
|---|---|
| 线程不安全 | 线程安全(synchronized) |
| 继承AbstractStringBuilder | 继承AbstractStringBuilder |
| final类,不允许继承 | final类,不允许继承 |
hashmap和hashtable
| hashmap | hashtable |
|---|---|
| 线程不安全(可以使用线程安全的concurrentHashMap,采用了分段锁) | hashtable线程安全(每个方法都加了synchronize) |
| 初始长度16,每次扩充为2n,指定长度后自动匹配2的幂次方 | 初始长度11,每次扩充为2n+1,会使用指定的长度 |
| 重新计算hash值 | 直接使用对象的hashCode() |
| 可以有null(hash值为0) | 不能有null |
post和get
| GET | POST | |
|---|---|---|
| 后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
| 书签 | 可收藏为书签 | 不可收藏为书签 |
| 缓存 | 能被缓存 | 不能缓存 |
| 编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded or multipart/form-data。为二进制数据时使用多重编码。 |
| 历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
| 对数据长度的限制 | 当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的。 | 无限制。 |
| 对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
| 安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。 在发送密码或其他敏感信息时绝不要使用 GET ! | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
| 可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |