测开面经总结的经常考察的知识点

一、算法相关:

(1)熟悉常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、堆排序、快排、希尔排序

二、计算机网络相关

(1)http协议:

http(超文本传输协议)是一个在客户端和服务器端之间基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。

无状态的含义:无状态协议对于事务处理没有记忆能力。无状态协议解决办法: 通过Cookie 或者通过Session会话保存

常见的状态码的含义:
在这里插入图片描述

请求报文结构:
在这里插入图片描述
在这里插入图片描述

回复报文结构:
在这里插入图片描述

(2)http1.0与http1.1的区别

在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,当浏览器下次请求的时候又要建立连接,在http1.1中,默认使用长连接,通过这种连接,浏览器可以建立一个连接之后,发送请求并得到返回信息,然后继续发送请求再次等到返回信息,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来。长连接有一个保持时间

(3)http和https的区别

①https的协议需要用到ca申请证书,因而需要一定的费用,http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议,
②http的默认端口是80,https的默认端口是443,
③http的连接是简单的,无状态,https是有SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

(4)get和post的区别
在这里插入图片描述
(5)cookie机制和session机制的区别

Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器。Cookies保存在客户端,主要内容包括:名字,值,过期时间,路径等等。

Session是在服务器端保存用户数据。服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户的信息。

区别:Cookie保存在客户端浏览器中,而Session保存在服务器上。Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。Cookie 在客户端(浏览器、易伪造、不安全),Session 在服务器端(会消耗服务器资源)

(6)输入一个URL,接下来会发生什么

查询DNS,获取域名对应的IP->得到目标IP以及端口号后,调用socket,请求一个TCP流套接字,客户端向服务端发送HTTP请求报文(三次握手)->服务端通过五层,解析请求报文,发送http响应报文->关闭连接(四次挥手)->客户端解析响应报文,并在浏览器显示

(7)tcp udp协议的区别,各自使用场景

a. tcp面向连接,udp是无连接的

b. tcp提供可靠的服务,udp尽最大努力交付

c. tcp是面向字节流的,tcp是把数据看成一连串的无结构的字节流,udp是面向报文的。Udp没有拥塞控制,适用于实时应用

d. 每条tcp连接只支持一对一,udp支持一对一,一对多,多对一,多对多

e. tcp首部开销20字节,udp只有8个字节

f. tcp建立起的是全双工的可靠信道,udp是不可靠的

(8)tcp的连接建立以及拆除过程

三次握手:

a. 第一次握手:建立连接是,客户端发送syn包到服务端,并进入syn_sent状态,等待服务器确认

b. 第二次握手:服务器收到syn包,必须确认客户的syn,同时自己也发送一个syn包,即syn+ack包,此时服务器进入syn_ack状态

c. 第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ACK,此包发送完毕,连接正式建立

四次挥手:

a. 客户端A发送一个FIN包,用来关闭客户A到服务器B的数据传送

b. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号

c. 服务器B决定关闭与客户端A的连接,发送一个FIN给客户端A

d. 客户端A发回ACK报文确认,并将确认号设置为收到序号加1

(9)tcp保证可靠的四项措施

a. 确认和重传机制:建立连接时三次握手同步双方的序列号确认号、窗口大小等信息,传输过程中,如果检验失败、丢包、延时则重传

b. 数据排序

c. 流量控制:维持一个滑动窗口来确保不会发生发送太快来不及接收的问题

d. 拥塞控制:慢启动,拥塞避免,快速重传,快速恢复

(10)DNS如何解析出IP地址

a. 浏览器先检查自身缓存有没有解析过这个域名对应的ip,如果有解析结束

b. 浏览器检查系统缓存中有没有对应的解析的结果,hosts文件,如果有解析结束

c. 请求本地域名服务器(LDNS)来解析这个域名,如果命中,则解析结束

d. 请求根域名服务器(Root server),根域名服务器返回给LDNS一个所查询域的name server的地址,这个name server就是网站注册的域名服务器

e. name server 根据ip域名映射表找到目标ip,返回给LDNS

f. LDNS缓存这个域名对应的ip

g. LDNS将解析的结果返回给用户,用户缓存到本地的缓存中,解析结束

(11)五层网络架构

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输

数据链路层:负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道编程无差错的,能可靠传输数据帧的数据链路

网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径

传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输

会话层:向两个实体的表示层提供建立和使用连接的方法

表示层:处理用户的表示问题,如编码,数据格式转换或者加密解密等

应用层:直接向用户提供服务

三、python语言

(1)python的垃圾回收机制

python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略。

(2)__new__和__init__的区别

__new__是用来创造一个类的实例的(constructor),而__init__是用来初始化一个实例的(initializer)。__new__所接收的第一个参数是cls,而__init__所接收的第一个参数是self。__new__函数首先被调用,构造了一个newStyleClass的实例,接着__init__函数在__new__函数返回一个实例的时候被调用,并且这个实例作为self参数被传入了__init__函数。

(3)python的伪多线程、多线程

(4)python连接数据库的方式

(5)python的装饰器,空集合与空元组有什么区别

(6)python GIL

(7)python语法糖,深拷贝、浅拷贝、装饰器

(8)is和==的区别

is比较的是两个对象的地址值,也就是说两个对象是否为同一个实例对象;而==比较的是对象的值是否相等,其调用了对象的__eq__()方法。

四、操作系统

(1)进程和线程的区别

1.引入线程的系统当中,线程作为调度和分配的基本单位,进程是资源拥有的基本单位 2.并发性 进程间可以并发,同一进程的多个线程间可以并发,提高了进程的并发度 3.拥有资源,线程不拥有自己的资源,但可以访问其隶属进程的资源 4.系统开销:线程切换仅需保存少量寄存器内容,不涉及存储器管理方面的操作,因此代价小于进程切换代价

(2)内存分配的几种方式

a. 静态存储区:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。

b. 栈:栈(stack):存放程序临时创建的局部变量,不包括static声明的变量,static意味着在数据段中存放。除此之外,当函数被调用时,其参数也会被压到栈中,并在调用结束后,函数的返回值也会被放到栈中。栈由编译器自动释放。其操作方式类似于数据结构中的栈。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。

c. 堆:堆(heap):用于存放进程运行中被动态分配的内存段,大小不固定。当进程调用malloc或者new等函数时,新分配的内存就被动态添加到堆上(堆被扩张),当使用free或者delete等函数释放内存时,被释放的内存从堆中被删除。需要注意的是,它与数据结构中的堆是两回事,它的分配方式类似于链表。

(3)线程间的同步机制

1.互斥锁 ,类似于整型信号量,S=1,容易引起死锁 2.条件变量 进入临界区后,若所需资源正处于忙碌状态,则等待,并开锁

(4)进程间的通信方式

1.共享存储器系统,进程间共享某些存储区和数据结构 2.消息传递系统 以格式化的消息为单位进行传递 3.管道通信,管道是进程间的一个共享文件

(5)死锁产生的条件

互斥条件 请求和保持条件 不剥夺条件 环路等待条件

(6)进程间的同步机制

a.信号量机制:1.整型信号量 S表示资源数目 2.记录型信号量 S>0表示可用资源数目,S<0表示被阻塞的进程的数目 3.AND型信号量 同时获取多个资源,一次性全部分配,只要一个不满足,就不分配 4.信号量集 AND型信号量的扩充,同种资源可能一次需要多个

b.管程:代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成的一个操作系统的资源管理模块

(7)进程的几种状态:就绪态 阻塞态 执行态

四、linux相关

(1)查找某个进程的ID,进程的端口号:ps –a|grep name

(2)查看log的命令

五、数据库

(1)SQL中drop/truncate/delete的区别

a. delete是dml, 执行delete时每次从表中删除一行,删除操作会被记录在redo和undo表中以便进行回滚,需要手动commit才能生效,可通过rollback撤销操作

b. truncate是DDL,会隐式提交,不能通过rollback回滚,不会触发触发器,会删除表中所有记录

c. drop使DDL,会隐式提交,不能回滚,不会触发触发器,他会删除表结构以及所有数据,并将占用的空间全部释放
(2)当进行大量查询时,查询方式的优化:建立索引
(3)数据库事务的几个特性

a. 原子性:事务的原子性指的是bai,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。

b. 一致性:事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。

c. 分离性:分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

d. 持久性:持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。

(4)索引数据结构

a. hash结构

b. 二叉搜索树

c. 红黑树

d. B树

e. B+树

六、测试相关

(1)设计测试用例的方法

a. 黑盒测试:等价类划分、边界值分析法、正交实验法、状态转移法、流程分析法、输入域测试法、输出域测试法、判定表分析法、因果图分析法、错误猜测法、异常分析法

b. 白盒测试: 静态测试,动态测试

(2)测试的相关流程

需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试

(3)软件质量的六个特征

a. 功能特征:满足明确或者隐含的需求的那些功能

b. 可靠特征:在规定的一段时间和条件下,软件能够维持其性能水平的能力

c. 易用特征:使用软件所需要的努力

d. 效率特征:软件的性能水平与所使用的资源量的关系

e. 可维护特征:进行制定的修改所需的努力

f. 可移植特征:不同的设备,不同的操作系统

(4) 如何测试 微信朋友圈,微信发红包,测试电梯,如何测试一支笔

如果碰到这种题目,我们可以从以下几个方面来分析:

功能、界面/易用性、中断、网络、兼容性、安全性、性能测试

功能测试1、朋友圈发送功能

1)只发送文本

 a、考虑文本长度:1-1500字符(该数据为百度数据)、超出最大字符长度

 b、考虑文本类型:纯中文、纯数字、纯字母、纯字符、纯表情(微信表情/手机自带表情)、混合类型、包含url链接;因为过长纯类型需要换行很容易出现超出边框问题,所以这里先考虑过长纯类型情况

 c、文本是否支持复制粘贴

 d、为空验证 

2)只发送图片

  a、本地相册选择/拍摄

  b、图片数量验证:1-9张图片、超出9张

  c、图片格式验证:常见图片格式jpg、png(以实际微信需求支持的格式为准)、动态gif图片、不支持的图片格式

  d、图片尺寸验证:最大700*800像素(此为百度数据)、超出最大尺寸范围是否压缩

  e、图片大小验证:1-300kb(此为百度数据)、超出300kb

  f、图片的预览验证:点击支持预览大图、多张图片支持左右滑动预览

  g、图片的增删改操作

  h、为空验证

3)只发送视频

  a、本地相册选择/拍摄

  b、视频秒数验证:1-10s,超出10s

  c、视频个数验证:1个,超出1个

  d、视频格式验证:支持的视频格式,例mp4、不支持的视频格式

  e、视频大小验证:苹果400kb以内、Android200-300kb(此为百度数据)、超出规定大小

  f、视频预览增删改操作

  g、为空验证

4)发送文本+图片:输入满足要求的文本、图片进行一次验证

5)发送文本+视频:输入满足要求的文本、视频进行一次验证

6)发送图片+视频:不支持发送

7)朋友圈发送内容是否有限制,例如涉及黄赌毒等敏感字

8)所在位置

  a、不显示位置:发送到朋友圈动态不显示位置

  b、选择对应位置:搜索支持、自动定位、手动编辑

  C、点击取消,返回上一级页面

9)谁可以看

  a、设置公开:所有朋友可见

  b、设置私密(仅自己可见):自己查看朋友圈-可见、好友查看朋友圈-不可见

  c、设置部分可见(部分朋友可见):选择的部分好友-可见、不被选择的好友-不可见、是否有人数上限

  d、设置不给谁看(选中的朋友不可见):不被选中的朋友-可见、被选中的朋友-不可见、是否有人数上限

  e、点击取消,返回发送页面

10)提醒谁看

  a、提醒单人/提醒多人:被提醒的朋友-收到消息提醒、未被提醒-未有消息提醒

  b、是否有人数上限

  c、点击取消,返回发送页面

11)同步QQ空间:默认不同步、同步到QQ空间

12)取消发送朋友圈操作

  a、选择相机,点击取消,返回朋友圈页面

  b、进入朋友圈发送页面,选择文本图片,点击取消

13)朋友圈当天发送次数是否有上限限制

2、朋友圈浏览功能

1)文本查看:

  a、过长文本内容是否隐藏,并支持查看全文

  b、右键选择复制、收藏、翻译

  c、url链接是否支持点击跳转网页

2)图片查看

  a、小图右键支持收藏/编辑

  b、点击支持大图浏览

  c、选择发送给朋友、收藏、保存图片、编辑

  d、多张图片支持左右滑动浏览

3)视频查看

  a、右键视频支持静音播放/搜藏

  b、点击视频播放按键支持播放视频

  c、选择发送给朋友、收藏、保存视频、编辑

4)分享动态浏览:QQ空间/公众号文章/非腾讯产品分享后朋友圈是否正常显示

5)赞:点赞、取消点赞

6)评论

  a、评论长度:评论字数合理长度、评论超过字数上限

  b、评论类型:纯中文、纯数字、纯字母、纯字符、纯表情(微信表情/手机自带表情)、混合类型、包含url链接;

  c、评论是否支持复制粘贴

  d、为空验证

  e、发表评论后删除

  f、评论回复操作

7)删除朋友圈动态

8)更换相册封面

9)刷新是否正常获取新动态

10)上滑是否加载更多

界面/易用性测试

1、技术人员角度:页面布局设计是否跟产品原型图/ui效果图一致

2、但除了考虑1之外,我们同样要考虑到用户使用:功能操作是否简便,页面布局排版风格是否美观合理,提示语相关信息是否易于理解

中断测试

1、主要考虑:a)核心功能 b)当前功能存在实时数据交换,例发朋友圈、浏览朋友圈进行中断,是否容易出现崩溃

2、中断包括:前后台切换、锁屏解锁、断网重连、app切换、来电话/来短信中断、插拔耳机线/数据线

网络测试

1、三大运营商不同网络制式测试

2、网络切换测试:WIFI/4G/3G/2G

3、无网测试:对于缓存在本地的数据,部分朋友圈信息是否支持浏览

4、弱网测试:

 a、延时:页面响应时间是否可接受、不同网络制式是否区分超时时长、出现请求超时,是否给予相应的提示

 b、丢包:有无超时重连机制、如果未响应,是否给予相应提示

 c、页面呈现的完整性验证

兼容性测试

1、Android手机端、苹果手机端、pad版(主流)功能界面显示是否正常

2、各平台朋友圈展示数据是否一致

安全测试

发送朋友圈时,文本输入脚本代码,是否出现异常

性能测试

1、服务器性能测试

  可通过loadrunner/jmeter工具实现,主要关注TPS、响应时间、吞吐量、CPU、内存等

2、app客户端性能测试

 可通过GT工具实现,运行时关注cpu、内存、流量、电量等占用率

3、app压力稳定性测试

 通过monkey工具实现,频繁发送朋友圈,浏览朋友圈请求,是否容易发生崩溃

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

和你在一起^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值