从业经验分享

工作五年多了,博客从第一年更新之后后面就很少更新了,人也越来越懒了。还是希望自己多更新博客吧。由于上一家公司项目问题,所以博主也失业了,所以休息一周之后就开始找工作了,下面分享一些工作的经验以及面试题相关的知识。

经验建议

  • 当你有机会的时候,一定要去大厂锻炼,只要你在大厂付出了汗水顶住了压力,那么绝对比你在创业型公司收获大很多,再转去二线厂找个工作绰绰有余,更不要说小公司了;

  • 当你刚刚毕业的时候,一定要利用实习的机会去一些好的公司以及去获取到经验,如果有了实习的经验的话,后面的找工作相对容易一点,切记实习经验和工作经验不匹配,那实习就只是为了毕业了,后面的路就很难走了;、

  • 切记:只有当你走投无路的时候才去考虑外包之类的,因为一份简历上面有一个外包的经历的话,在面试一些公司的时候,会很被动。基本上外包代表着没啥能力和机械的点点点,没办法承担更多的活,当然你是外包跳外包当我没说;

  • 找工作的时候怎么样避免外包,基本上主动找你的80%都是外包,怎么确定是外包公司,第一个就是你看看公司简介有没有IT外包服务,如果有的话,就要长个心眼了;第二个就是看看公司招的职位的地址,是不是五花八门,啥地址都有,这个也是外包的一个特点但是也有可能是分公司,要靠你自己去辨别;第三个,有了怀疑之后,最好就直接问是不是外包之类的。

  • 刚刚出校门,请珍惜你的学习能力。无论你是专科还是本科,当踏出校门的那一刻,你就要保留你的学习能力,给你自己一个学习计划并养成一个好的笔记的习惯。出来工作之后,特别是互联网,技术一直在发展,那么你就要一直不断去提高,所以在1-3年的时候是你学习劲头最好的时候,一定要安排自己时间是学习,不要三分钟热度,注意:学习是一个不断持续的过程,贵在坚持。

能力划分

从业这么多年,根据市场,总结出来了在不同的经验具有的能力,那么你在同经验的人群中,你一定是处于上游或者靠前,这样你面试成功的几率就大很多。

0-3年:这是一个很奇妙的阶段,也是一个奋斗的阶段,这个阶段不要想着钱,要想着工作+学习,并且合理的安排学习计划,并且一直坚持下去。这个阶段我认为你应该具备的能力有:功能测试、liunx基本操作、数据库增删改查、网络基础、操作系统基础、python/java语言基础并且能写一些小的功能、自动化框架(UI/接口)、性能测试工具(jmeter)、postman/fiddler/charles等

3-5年:这是一个为了钱+锻炼机会的阶段,当你第一阶段在自学当中过了过来的时候,那么你一定需要一个机会去锻炼,那么你下份工作的目标注意两个点,第一个是新兴的业务+自动化/性能的锻炼机会,当你有了这样一个机会,那么你的自动化相关的经验就积累出来了,那么后续你的发展是:学习,自动化写多了,那么你就需要去开发平台那么你这个时候,就认为自己是一个开发,去把开发的技术栈系统的学习一下。推荐:python+django/flask/fastapi+vue,java+springboot+vue。python的三个web框架选择一个认真学,其他的看看文档就可以了。我认为你此时具备的能力有:自动化实现+落地推广,其他能够自动化的东西积累(CI/CD),jenkins,平台开发能力,性能调优的基本认识

5-~:5年以后基本上就是一个分水岭了,大佬和混子的区别一目了然,也有同学直接转行从事其他行业了,比如:产品。如果你度过了前两个阶段,这个阶段,我就不给你什么建议和能力了。因为到了此时,你自己应该有一个明确的目标了。也对你后面的发展有了自己的一个规划了。不过我还是略微谈一下:如果一直坚持学下去和你经历发展的公司,大概可以有以下发展:渗透测试,性能测试专家,测试开发(客户端方向,服务器方向,大数据方向,人工智能方向,性能压测平台方向,工具平台方向)。每个方向的知识点都不一样。

经典面试题

功能测试

水杯怎么测
1.功能测试:主要关注水杯基本功能:
1.1 水杯是否可以正常装水
1.2 水杯是否可以正常喝水
1.3 水杯是否有盖子,盖子是否可以正常拧紧
1.4 水杯盖子拧紧到多少不会漏水
1.5 水杯是否有保温功能,保温功能是否正常保温
1.6 水杯是否可以装液体,能否装其他液体。比如酒精、甲醇
1.7 杯子是否有刻度表,是否有安全刻度线,刻度线是否准确
1.8 杯子能否泡茶,泡咖啡
2.界面测试:主要关注水杯外观、颜色、设计等方面:
2.1 外观是否完整
2.2 外观是否舒适
2.3 颜色搭配及使用是否让人感到舒适
2.4 杯子外观大小是否适中
2.5 杯子是否有图案,图案是否易磨损
3.易用性测试:主要关注水杯使用是否方便:
3.1 水杯喝水时否方便
3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
3.3 水杯装水是否方便
3.4 水杯携带是否方方便
3.5 水杯是否有防滑功能
3.6 水杯装有低温或者高温水时,是否会让手感到不适
4.性能测试:
4.1 水杯装满水时,是否会漏出来
4.2 水杯最大使用次数
4.3 水杯的保温性是否达到要求
4.4 水杯的耐寒性是否达到要求
4.5 水杯的耐热性是否达到要求
4.6 水杯掉落时,是否可以正常使用
4.7 水杯长时间放置时,是否会发生泄露
5.可移植性测试:主要关注水杯放置环境等
5.1 将水杯放在常温环境中,使用是否正常
5.2 将水杯放在零下的环境中,使用是否正常
5.3 将水杯放在高于正常温度的环境中,使用是否正常
6.安全性测试:主要关注水杯外观和各种异常条件下是否释放有毒物质等
6.1 当水杯装满热水时,水杯是否会烫手
6.2 当水杯装上水后,是否会产生有毒物质
6.3 把水杯放在零下环境时,是否会产生有毒物质
6.4 把水杯放在高温环境时,是否会产生有毒物质

电梯怎么测
1.电梯的作用:载人
1.载人合适数量,可以正常运行
2.超载人数,无法运行,提示警告
3.空载,也可以正常运行
4.载货,也可以正常运行
2.电梯的特征:上下运行
1.按上,则上行
2.按下,则下行
3.不按,则不行
4.没按对应楼层,不停该层
5.电梯运行是匀速运行,不会出去眩晕
6.双击楼层,会取消这个楼层
7.到了对应楼层,继续按这个楼层,无法点亮楼层
8.电梯上行时,在楼上按下,会跃过该楼不停
9.电梯上行时,在楼上按上,会在该层停下
10.在顶层没有上行,不能按上。在底层没有下行,不能按下。
11.满员运行,不再开门
3.开关门相关的用例
1.按开,则开门
2.按关,则关门
3.运行过程,开和关都无效
4.被夹了,则无法正常关门,会开门
4.在开门和关门过程中根据电梯特征,是否会有语音提示(不同电梯不同需求)
5.还有报警器按钮也能正常运行,功能正确
6.电梯门在一定时间内,会自动关闭
7.到楼层之后,会自动打开门
8.长时间按电梯开门,会警告声音
9.电梯里面的报警按钮是否,灯光是否柔和,里面显示屏显示数据是否正确
10.电梯里面是否通风
11.如果有空调,空调运行是否正常
12.电梯里面是否有信号
13.电梯突然停电
14.电梯按钮的设计/按压力度是否舒适
15.同时按下关门和开门的按钮
4.电梯编程(高低层,单双层,指定楼层停留)
3.长时间不运行,电梯会运行到指定层停留
4.如果是多个电梯,有一个电梯到了该层,其他电梯的灯灭
6.按上,联动上的按钮。按下联动下的按钮
7.按上下按钮,就近的电梯运行过来,较远的电梯不动。

登录怎么测

一.界面测试设计要点:
1.界面的设计风格是否与UI的设计风格统一,布局是否合理, 按钮是否对齐
2.web的话, 对页面缩放登录模块是否与缩放比例缩放
3.界面中的文字简洁易懂,没有错别字

二.功能测试设计要点:
1.输入已注册的用户名和正确的密码,验证是否成功登录
2.输入已注册的用户名和不正确的密码,验证是否成功失败,且提示信息正确
3.输入未注册的用户名和任意密码,验证是否登录失败,且提示信息正确
4.使用未激活账户登录,验证是否登录失败
5.使用被停用用户登录,验证是否登录失败
6.用户名和密码两者都为空,验证是否登录失败,且提示信息正确
7.用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确
8.如果登录功能启用了验证码功能,在用户名和密码正确的情况下,输入正确的验证码,验证是否登录成功
9.如果登录功能启用了验证码功能,在用户名和密码正确的情况下,输入错误的验证码,验证是否登录失败,且提示信息正确
10.用户名和密码是否大小写敏感
11.页面上的密码框是否加密显示、或者是否需要有明暗码切换按钮
12.后台系统创建的用户第一次登录成功时,是否提示修改密码
13.忘记用户名和忘记密码的功能是否可用
14.前端页面是否根据设计需求限制用户名和密码长度
15.如果登录功能需要验证码,点击验证码图片或者点击换一张是否可以更换验证码,更换后的验证码是否可用
16.刷新页面是否会刷新验证码
17.如果验证码有时效性,需要分别时效性内和时效性外验证码的有效性
18.用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面
19.不同级别的用户,比如管理员和普通用户,登录系统后权限是否正确
20.页面默认焦点是否定位在用户输入框中
21.快捷键Tab和Enter等,是否可以正常使用
22.为空和输入空格字符串的校验是否一致
23.使用中文键盘输入字母和使用英文键盘输入字母传入后端的字符长度是否一致
24.成功登录后的session的时效设置
25.输入栏是否设置快速删除按钮
26.用户名和密码是否支持特殊字符和中文
27.浏览器的前进后退按钮,是否有效
28.成功登出后,点击浏览器回退按钮,是否可以继续操作系统
29.需求中是否有登录时间限制,如果有验证时间限制是否有效
30.验证不同登录方式的正确性:扫码、账号密码、第三方……
31.若支持手机号+验证码登录,验证码是否有时间限制,移动设备是否可以直接获取验证码
32.操作错误提示信息是否简单明了

三.性能测试设计要点:
1.单用户登录的响应时间是否小于3秒
2.单用户登录时,后台请求数量是否过多
3.高并发场景下用户登录的响应时间是否小于5秒
4.高并发场景下服务端的监控指标是否符合预期
5.高集合点并发场景下,是否存在资源死锁和不合理资源等待
6.长时间大量用户连续登录和登出,服务器是否存在内存泄露
7.输入内容校验是否加入了函数防抖
四. 安全测试设计要点:
1.用户密码后台存储是否加密
2.用户密码在网络传输过程中是否加密
3.密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
4.不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面
5.密码输入框是否不支持复制粘贴
6.密码输入框内输入的密码是否都可以在页面源码模式下被查看
7.用户名和密码输入框分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面
8.用户名和密码输入框分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改
9.连续多次登录失败的情况下,系统是否会阻止后续的尝试以应对暴力破解
10.同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期
11.同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性
12.是否可以记住密码,记住的密码保存是否加密,记住的密码是否有有效期,过了有效期后是否清空密码
13.是否支持第三方登录
14.密码的强弱性,复杂度校验
15.异地登录校验、更换设备登录校验、登陆信息异常是否考虑账户冻结停用、是否允许第三方平台存储密码
16.是否可以使用登录的api发送登录请求,并绕开验证码校验
17.是否可以用抓包工具抓到的请求包直接登录
18.截取到的token等信息,是否可以在其他终端上直接使用,绕开登录,token过期时间校验
19.登录错误后的提示是否存在安全隐患

五.兼容性测试要点:
1.不同浏览器下,验证登录页面的显示以及功能正确性
2.相同浏览器的不同版本下验证登录页面的显示以及功能正确性
3.不同移动设备终端的不同浏览器下,验证登录页面显示以及功能的正确性
4.不同分辨率的界面下,验证登录页面的显示以及功能正确性

六.用户体验设计要点:
1.输入框是否有一键清除功能
2.输入错误用户名/密码登录失败, 提示最好是密码或者用户名错误
3.输入的密码个数最好与输入框加密的个数不相同
4.如何验证码是纯数字, 点击验证码输入框弹出数字键盘
5.点击用户/密码字段可以鼠标焦点跳到对应的输入框中

数据库相关

1.慢sql的原因
  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
  2、I/O吞吐量(IOPS)小,形成了瓶颈。
  3、内存不足
  4、网络速度慢
  5、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
  6、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
  7、返回了不必要的行和列
  8、查询语句没写好,数据库优化器没有进行优化
2.连表查询

其他

从输入URL到浏览器显示页面发生了什么

1.在浏览器中输入url
用户输入url,例如:http://www.baidu.com, 其中http为协议,www.baidu.com为网络地址,及指出需要的资源在那台计算机上。一般网络地址可以为域名或IP地址,此处为域名。使用域名是为了方便记忆,但是为了让计算机理解这个地址还需要把它解析为IP地址。

2.应用层DNS解析域名
客户端先检查本地是否有对应的IP地址,若找到则返回响应的IP地址。若没找到则请求上级DNS服务器,直至找到或到根节点。

3.应用层客户端发送HTTP请求
HTTP请求包括请求报头和请求主体两个部分,其中请求报头包含了至关重要的信息,包括请求的方法(GET / POST)、目标url、遵循的协议(http / https / ftp…),返回的信息是否需要缓存,以及客户端是否发送cookie等。

4.传输层TCP传输报文
位于传输层的TCP协议为传输报文提供可靠的字节流服务。它为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理,并为它们编号,方便服务器接收时能准确地还原报文信息。TCP协议通过“三次握手”等方法保证传输的安全可靠。


“三次握手”的过程是,发送端先发送一个带有SYN(synchronize)标志的数据包给接收端,在一定的延迟时间内等待接收的回复。接收端收到数据包后,传回一个带有SYN/ACK标志的数据包以示传达确认信息。接收方收到后再发送一个带有ACK标志的数据包给接收端以示握手成功。在这个过程中,如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。

5.网络层IP协议查询MAC地址
IP协议的作用是把TCP分割好的各种数据包传送给接收方。而要保证确实能传到接收方还需要接收方的MAC地址,也就是物理地址。IP地址和MAC地址是一一对应的关系,一个网络设备的IP地址可以更换,但是MAC地址一般是固定不变的。ARP协议可以将IP地址解析成对应的MAC地址。当通信的双方不在同一个局域网时,需要多次中转才能到达最终的目标,在中转的过程中需要通过下一个中转站的MAC地址来搜索下一个中转目标。

6.数据到达数据链路层
在找到对方的MAC地址后,就将数据发送到数据链路层传输。这时,客户端发送请求的阶段结束

7.服务器接收数据
接收端的服务器在链路层接收到数据包,再层层向上直到应用层。这过程中包括在运输层通过TCP协议讲分段的数据包重新组成原来的HTTP请求报文。

8.服务器响应请求
服务接收到客户端发送的HTTP请求后,查找客户端请求的资源,并返回响应报文,响应报文中包括一个重要的信息——状态码。状态码由三位数字组成,其中比较常见的是200 OK表示请求成功。301表示永久重定向,即请求的资源已经永久转移到新的位置。在返回301状态码的同时,响应报文也会附带重定向的url,客户端接收到后将http请求的url做相应的改变再重新发送。404 not found 表示客户端请求的资源找不到。

9.服务器返回相应文件
请求成功后,服务器会返回相应的HTML文件。接下来就到了页面的渲染阶段了。

10、页面渲染
现代浏览器渲染页面的过程是这样的:jiexiHTML以构建DOM树 –> 构建渲染树 –> 布局渲染树 –> 绘制渲染树。

DOM树是由HTML文件中的标签排列组成,渲染树是在DOM树中加入CSS或HTML中的style样式而形成。渲染树只包含需要显示在页面中的DOM元素,像元素或display属性值为none的元素都不在渲染树中。

在浏览器还没接收到完整的HTML文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送HTTP请求重复上述的步骤。在收到CSS文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相应位置。在这一过程中可能会触发页面的重绘或重排。

posted @ 2021-09-06 23:43  残~枫~  阅读(169)  评论(0编辑  收藏  举报