【面试复习】测试开发

1、http和https
http协议:超文本传输协议,是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。该协议基于TCP/IP协议,传输的数据类型为HTML文件、图片文件、查询结果等。
https协议:可理解为http+SSL/TLS,通过 SSL证书来验证服务器的身份(服务器向客户端传输自己的证书),并为浏览器和服务器之间的通信进行加密(用服务器的公钥加密对称密钥,用对称密钥进行通信内容的加密)。
http是无状态的协议,对于事务处理没有记忆,当服务端要记录用户的状态时,就会使用session机制。服务器对每个用户都标识了session_id来识别用户、跟踪用户。
2、cookie和session
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。
Cookie是客户端保存用户信息的一种机制:
(1)可以用来记录用户的一些信息(如记录用户账号密码,访问网站时网页脚本自动读取信息并填入)
(2)可以实现Session的一种方式(客户端进行http请求时,发送cookie到服务器,cookie中带有第一次http请求中服务器写入cookie的session_id,服务器利用这个session_id即可识别用户)。
3、搜索一个url网址的过程:
(1)将DNS域名解析为服务器IP
(2)客户端发起TCP请求,三次握手建立连接
(3)客户端向ip地址发起HTTP请求
(4)服务端响应HTTP请求
(5)客户端将得到的HTML代码和资源渲染到前端,供用户查看。
4、DNS (域名系统):将域名和IP地址相互映射的一个分布式数据库。
将网址(域名)翻译成ip地址的过程叫做域名解析。
域名解析的过程:先在本地缓存中查,缓存中没有则向DNS服务器发查询报文,接收服务器返回的ip地址并存入缓存,浏览器向该ip地址发起tcp请求。
5、线程与进程
线程是程序执行的最小单位,进程是操作系统分配资源的最小单位。一个进程由一个或多个线程组成,进程直接相互独立,同一个进程下的各个线程之间共享程序的资源。
6、数据库主键索引
数据库主键索引唯一标识一条记录,不能有重复。不允许为空。
7、死锁产生的条件:
互斥条件:资源不能被共享,只能由一个进程占用。
不可抢占条件:有些系统资源是不可抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。
循环等待条件:若干个进程形成环形链,每个都占用对方申请的下一个资源。
8、数据库中基本锁分为两种,一个是X锁(当数据对象被加上X锁时,其他事务不能对其进行读取和修改),一个是S锁(当数据对象被加上S锁时,其他事务可以读取,不能对其进行修改)。
9、数据库中常见死锁的情况:
(1)一个用户A 访问表A(锁住了表A),然后又访问表B。另一个用户B 访问表B(锁住了表B),然后企图访问表A。
(2)用户A查询某数据后想修改数据(先施加了S锁,想上升为X锁),另一个用户B想也修改该数据(施加X锁),B等A释放S锁,A等B释放X锁,从而造成死锁。
e.g.界面上按钮点击后没有立刻失效,导致用户多次点击后造成对同一数据多次操作,从而数据库死锁。
(3)多次事务出现全表扫描的情况后,可能会发生死锁。(合理建立索引,避免过于复杂的关联多表的查询语句)
10、负载均衡:将用户的流量分发的不同服务器上
客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。
11、数据库 group by和distinct
group by可以对查询结果进行分组统计,最终得到一个分组汇总表
distinct可以指定数据列取值进行数据去重,仅保留相同数据列取值的一行数据。
12、使用junit进行单元测试
参考链接
13、消息队列:把要传输的数据放在队列里
把数据放到消息队列->生产者
把数据从消息队列中取出->消费者
三种场景:
解耦:如果A系统要发送数据给B、C、D三个系统,之后可能还有系统加进入进来,我们用消息队列的话A系统只管把消息发到消息队列,其他需要这个消息的系统从消息队列中获取数据就可以了。
异步:A系统需要发送个请求给 B 系统处理,由于 B 系统需要查询数据库花费时间较长,以至于 A 系统要等待 B 系统处理完毕后再发送下个请求,造成 A 系统资源浪费。使用消息队列后,A 系统生产完消息后直接丢进消息队列,不用等待 B 系统的结果,直接继续去干自己的事情了。
削峰:A 系统调用 B 系统处理数据,如果A系统的请求突然变得特别大 全都打到B系统,那B系统可能就会崩掉。我们让A系统把请求发到消息队列,这样B系统就可以按自己的需求去拉取消息进行消费。
使用消息队列带来的问题:(1)系统可用性降低:当消息队列出现问题,会影响系统中很多部分。(2)系统复杂性增加:考虑的问题增多:比如一致性问题、如何保证消息不被重复消费,如何保证保证消息可靠传输。
14、TCP与UDP
TCP协议:面向连接的协议,三次握手,可靠性高,响应慢。
三次握手过程:
第一步,客户端向服务器建立连接,发送SYN及序号seq

第二步,服务器向客户端发送确认ack(ack=客户端seq+1)和序号seq

在这里插入图片描述

第三步,客户端向服务器返回确认ack(ack=服务器序号y+1)和seq=x+1,tcp三次握手建立连接

在这里插入图片描述

SYN表示发起一个新链接,ACK表示确认号,seq表示序号,用来标识从TCP源端向目的端发送的字节流
UDP协议:无连接的协议,无需三次握手,可靠性低,响应快。
15、java重写[overriding]和重载[overload]
重写:子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法。
重载:一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,返回值也不一定相同的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

靓仔明华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值