Keep your head up in failure, and your head down in success. 失败时,要高昂起头;成功时,要保持谦逊。
这里大概整理了百分之六十,因为当时只记了这些,仅供大家参考!
数据结构
计算机算法必须具备哪五个部分
数组
链表
q->pNext = p->pNext;
p->pNext = q;
- 若长度为 n 的线性表采用顺序存储结构,在其 i 位置插入 1 个新元素的算法的时间复杂度
O(n) 顺序表取值算法的时间复杂度为 O(1) 顺序表查找、插入、删除算法的时间复杂度为 O(n)
栈
队列
树
- 红黑树已经有 n 个数据,寻找某个 key 是否存在的时间复杂度
O(logn) 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
Python
Python 的内置函数
- map 函数用法
map 函数是 Python 中内置的高阶函数,它的参数为:一个函数 function,一个或多个 sequence。通过把函数 function 依次作用在 sequence 的每个元素上,得到一个新的 sequence 并返回 map 函数不改变原有的 sequence,而是返回一个新的 sequence - lambda 匿名函数
匿名函数是指没有声明函数名称的函数 lambda 函数可以接受任意数量的参数,但函数只能包含一个表达式 lamdba 函数可以返回函数对象,将此函数对象赋值给任何变量 lamdba 函数可以结合 Python 中的内置函数一起使用,例如 map()、filter() - 对列表进行操作
- filter() 函数
该函数接受一个列表参数和一个 lambda 函数参数,filter() 函数将返回一个新的列表,新的列表中只包含旧列表中被 lambda 函数处理后返回值为 TRUE 的元素
对字符串元素的切片
语法格式:s[start:end:step] 1、其中 s 为字符串的变量名,start 表示切片的起始位置,end 表示截至位置,step 表示步长(默认为 1) 2、当 step 为正值时,如果 start 省略,表示从最左侧开始;如果 end 省略,表示到最右侧结束 3、当 step 为负值时,切片由右向左进行,如果 start 省略,表示从最右侧开始;如果 end 省略,表示到最左侧结束 4、切片的结果中包含 start 所在位置的元素但不包括 end 所在位置的元素
Python 中字典的定义
- 字典中的键必须唯一,必须是不可变对象。可使用数字、字符串或元组作为键。列表是可变对象,不能作为键
- 字典中的值可以是任意数据类型
- 字典中的项不存在顺序
遍历列表
字符串操作
网络基础
- 高速缓冲区的ARP表是由人工建立的
- IP地址采用分层结构,它由网络号与主机号两部分组成
- 数据链路层通过重传可以使丢失或出错的帧能正确到达接收方
解析:FCS,帧校验(Frame Check Sequence)发现出错的帧后,通过 重传 ,再次发送该帧,从而确保能够正确达到对方 - 什么是子网?
一个对较大网络的划分,使之成为较小的分片 - 某校园网用户无法访问外部站点210.102.58.74,管理人员在windows操作系统下可以使用 tracert 210.102.58.7 判断故障发生在校园网内还是校园网外
解析: ping 使用来icmp来检查网络是否连通,并没有记录路径 tracert 使用icmp包记录并确定数据包访问目标所经过的路由,因此可以依据此命令判断故障发生的位置 netstat 用于监听端口(netstat -a列出所有端口使用情况)跟本地路由表(netstat -r显示本地路由表) arp 是根据IP地址获取物理地址的一个链路层协议 - 下面哪个网络技术最适合多媒体通信需要?
ATM 解析:ATM是一种为了多种业务设计的通用的面向连接的传输模式。它适用于局域网和广域网。 它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图像的通信。 - 下列技术属于电路交换网络的技术包括
TDM 解析:交换技术包括分组交换和电路交换。分组交换: 包括报文交换和分组交换这两种,虚电路就属于分组交换,数据报就属于报文交换。电路交换:TDM时分复用和FDM频分复用技术 - 计算机内的传输是 并行 传输,而通信线路上的传输是 串行 传输
- CSMA/CD适用于有线网络,而CSMA/CA则广泛应用于无线局域网
- TCP/IP是一组 支持异种计算机网络互联的通信协议
- 运行哪个协议后可用避免交换机之间存在的环路
STP(生成树协议):是按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题 - FDDI 采用 令牌环网 协议标准
- 作业管理对进入系统的所有作业进行 管理和组织
- 电子邮件系统通常由用户代理和消息传输代理两大部分组成
- 当一台计算机发送 E-mail 信息给另外一台计算机时,下列的哪一个过程正确描述了数据打包的 5 个转换步骤?
数据,数据段,数据包,数据帧,比特 - TCP 的服务器程序必须先于其客户程序运行
- IPX地址网络地址有多少个字节?10
- 以下选项中,不是数据链路层协议的基本问题的是 不透明传输
三个基本问题:封装成帧、透明传输、差错检测 向网络层提供的服务:无确认的无连接服务、有确认的无连接服务、有确认的面向连接服务 - 下列哪一项不是网卡的基本功能 路由选择
- 在数据通信中使用曼彻斯偏码主要原因是 实现对通道过程中收发双方的数据同步
- 传输媒体不属于物理层
- 网络中心安装并配置了ServU-FTP服务器,创建系统用户,设置访问时间与下载速度,客户端使用浏览器登录时提示拒绝访问,可能的原因是:
ServU没有创建匿名用户 ServU与IIS冲突 用户数达到上限 - 下面关于HTTP协议的说法正确的是:
HTTP是基于TCP协议之上的应用层协议 HTTP协议的ETAG响应头主要用于信息的过期验证 - 在何种状态下可以为路由器改名? 全局模式(配置模式)
- 以太网卡的工作模式有哪几种?
广播模式、多播传送、直接模式、混杂模式 - 一个典型TCP客户端(主动建立连接,主动断开连接)会经历的状态序列:SYNC_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT
- 帧中继网是一种 广域网
- 在虚拟局域网中的逻辑工作组各结点可以分布在同一物理网段上,但不能分布在不同的物理网络上。请问这句话的说法是正确的吗? 错误
route ADD 目的网络 MASK 子网掩码 网关地址 METRIC 跳数 IF 端口号 (跳数和端口号可以省略) - 光纤由三层材料组成,包层的作用是 减低光折射率
- TCP 是面向字节流的传输协议,关于 TCP 报文段长度的表述,正确的是 TCP 报文段长度根据对端的接受能力和网络状况决定
- 下面关于以太网的描述哪一个是正确的 数据是以广播方式发送的
- ATM信元的交换方式为 电路交换和分组交换的组合
- IP数据包在传输过程中如遇到一些差错与故障,一般会向源主机发送ICMP 报文
解析:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 - 集线器的缺点 不能过滤网络流量
集线器的主要功能是: 对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。 - 决定局域网特性的主要技术要素有:传输介质、网络拓扑结构和介质访问控制方法,其中最为重要的是 介质访问控制方式
- BGP协议运行在OSI模型的哪一层 应用层
- 带有子网掩码255.255.224.0的地址222.201.190.12,使用了如下哪种技术 无类域间路由(CIDR)
- 在TCP/IP体系结构中,直接为ICMP提供服务的协议是 IP
- 在虚拟存储器中为了提高主存的命中率,可以采取的措施是 增大主存容量
- 在数据通信中,当发送数据出现差错时,发送端无须进行数据重发的差错控制方法为 FEC
解析:FEC是是前向纠错Forward Error Correction, 发送方将要发送的数据附加上一定的冗余纠错码一并发送,接收方则根据纠错码对数据进行差错检测,如发现差错,由接收方进行纠正。因此不需要重传 - 关于Http和Https,下面说法正确的是:
1、Http是超文本传输协议,信息是明文传输,Https则是具有安全性的ssl加密传输协议 2、Https由于采用了证书认证机制以及非对称加密技术,所以安全性更高
编程基础
- 中央处理器( CPU )可直接读写的计算机部件是 内存
- 为获得下一条指令的地址, CPU 在取指后通常修改 指令计数器的内容
- 为了确定下一条微指令的地址,通常采用的断定方式,其基本思想是通过 微指令顺序控制字段由设计者指定或由设计者指定的判别字段控制产生后继微指令地址
- 程序运行中需要从键盘上输入多于一个数据时,各数据之间默认应使用 TAB、空格或逗号 符号作为分隔符
软件测试
测试基础
判定/条件覆盖的特点(单选)
答:判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次
功能测试用例设计方法(单选)
1、等价类划分法 2、边界值分析法 3、错误猜测法 4、场景法 5、因果图法和判定表法 6、正交试验法
系统测试将软件、硬件、网络等其他因素结合,对整个软件进行测试,哪个不是系统测试的内容(单选)
答:路径测试
在软件测试过程中,测试人员首先对三个模块进行测试,测试完成后再将系统所有模块继承起来进行集成测试,该测试策略为(单选)
答:非增量集成测试
关于软件测试对软件质量的意义(不定项)
1、度量与评估软件的质量 2、改进软件开发过程 3、保证软件质量(有争议)
逻辑测试覆盖中,测试覆盖最强的是:路径覆盖
解析:逻辑测试覆盖是白盒测试法常用的技术。主要的覆盖标准有6种,强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
软件的评审一般由哪些人参加?其目的是什么?
在正式的会议上将软件项目的成果(包括各阶段的文档、产生的代码等)提交给用户、客户或有关部门人员对软件产品进行评审和批准。其目的是找出可能影响软件产品质量、开发过程、维护工作的适用性和环境方面的设计缺陷,并采取补救措施,以及找出在性能、安全性和经济方面的可能的改进。 人员:用户、客户或有关部门开发人员,测试人员,需求分析师都可以,就看处于评审那个阶段
Beta测试与Alpha测试有什么区别?
Beta testing(β测试),是软件在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场 Alpha testing (α测试),是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试
做好测试计划工作的关键 :目的,管理,规范
1、明确测试的目标,增强测试计划的实用性编写 2、坚持“5W”规则:测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where) 3、采用评审和更新机制 4、分别创建测试计划与测试详细规格、测试用例
缺陷的生命周期
新建->提交->确认->分配->修复->验证->关闭
自动化测试和手工测试的比较
自动化测试可以节省一定的时间和人力成本,提高测试效率。可以从以下几个方面考虑:
1、覆盖率 优点:在同等时间内,覆盖率更高 缺点:只适合回归测试 2、测试效率 优点:执行相同数量的测试,速度更快 缺点:测试脚本开发耗时长 3、执行可靠性 优点:可靠的按脚本执行,后续定位、复现有明确的配置路径可循 缺点:没有手工测试手段灵活 4、资源利用率高 5、可进行压力、负载、并发、重复等人力不易完成的任务
自动化测试和手工测试之间是相辅相成的关系,优势互补
前置测试模型要点
前置测试模型是由Robin FGoldsmith等人提出的,是一个将测试和开发紧密结合的模型,该模型提供了轻松的方式,可以使你的项目加快速度
1 开发和测试相结合 2 对每一个交付内容进行测试 3 在设计阶段进行计划和测试设计 4 测试和开发结合在一起 5 让验收测试和技术测试保持相互独立 6 反复交替的开发和测试 7 发现内在的价值
编写测试计划的目的
- 使测试工作顺利进行
- 使项目参与人员沟通更顺畅
- 使测试工作更加系统化
确保软件可靠性度量活动属于哪个阶段
概要设计
软件生命周期
需求分析,概要设计,详细设计,编码,测试,验收
测试工具
- Jmeter
Jmeter 是一款使用Java开发的,开源免费的,测试工具,主要用来做功能测试和性能测试(压力测试/负载测试)。而且用Jmeter 来测试 Restful API, 非常好用 - Postman
Postman 是一种常用的接口测试工具,可以发送几乎所有类型的HTTP请求。Postman适用于不同的操作系统 - Loadrunner
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题 - Appscan
AppScan 是IBM公司出的一款Web应用安全测试工具,采用黑盒测试的方式,可以扫描常见的web应用安全漏洞 - Robot Framework
Robot Framework 是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)
软件测试流程
需求分析->测试计划->测试设计->系统测试->回归测试
测试用例设计
黑盒测试的优缺点
V模型和W模型的优缺点
- V模型
优点: 1、既有底层测试(单元测试)又有高层测试(系统测试) 2、将开发阶段清楚地表现出来,便于控制开发的过程 缺点: 1、需求的满足情况一直到后期的验收测试才被验证 2、没有体现出“尽早地和不断地进行软件测试”的原则
- W模型
优点: 1、将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试 2、更早的介入到软件开发中,能尽早的发现缺陷进行修复 3、测试与开发独立起来,并与开发并行 缺点: 1、对有些项目,开发过程中根本没有文档产生,故W模型无法使用 2、对于需求和设计的测试技术要求很高,实践起来很困难
软件测试分为几个阶段?各阶段的测试策略和要求是什么?
等价类划分法
6~10位自然数的无效等价类: https://blog.csdn.net/zhangyumumu/article/details/104550524
边界值分析法
大于1且小于100的边界值: 正好等于:2,99 刚刚大于:3,100 刚刚小于:1,98
哪个方法根据输入输出依赖关系设计测试用例
因果图
游戏测试(考察测试思路)
- 收到外网玩家反馈问题,策划认为是正常设计,你如何解决?
- 游戏的新版本上线后,你收到了多个渠道反馈回来的十几个bug,请问你如何处理?
- 游戏中新增一个每周商城限购活动,商城中水晶价格为30,限购数量为100,周一凌晨四点重置,请针对上述功能,写出你的测试思路
数据库(MySQL)
SQL 语句
增加列
alter table tableName add columnName datatype
删除列
alter table tableName drop column columnName
删除表
drop table 表名称
truncate table 表名称
delete from 表名称 where 列名称 = 值
drop、truncate、delete 区别
1、drop(删除表):删除表的内容和定义,释放空间,把整个表都删掉 2、truncate(清空表中的数据):删除表中的内容、释放空间,但不删除定义(保留表的数据结构) 3、delete(删除表中的数据):delete 语句用于删除表中的行。执行删除的过程是每次从表中删除一行,并且同时将该行的删除记录操作作为事务记录在日志中保存,以便进行回滚操作 truncate 与不带 where 的 delete 的区别:只删除数据,而不删除表的结构(定义) 4、truncate table:删除表中的所有行,但表的结构及其列、约束、索引等保持不变 5、对于有外键约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句 6、执行速度:一般来说,drop 大于 truncate 大于 delete 7、delete 语句是数据库操作语言(dml),事务提交后生效,支持回滚、触发器;truncate、drop 是数据库定义语言(DDL),操作立即生效,不能回滚,操作不触发 trigger
关联查询
两张表关联查询
内连接:https://editor.csdn.net/md/?articleId=119756645#_264 外连接:https://editor.csdn.net/md/?articleId=119756645#_284
三张表关联查询
ATHLETE(Ano, Aname, Asex, Adep) ITEM(Ino, Iname, Ilocation) SCORE(Ano, Ino, Score)
数据库原理
MySQL 的存储引擎
https://editor.csdn.net/md/?articleId=119756645#MySQL_462
MySQL 的触发器工作原理
数据库系统特点
1.数据结构化 2.数据的共享性高,冗余度低,易扩充 3.数据独立性高 4.数据由DBMS统一管理和控制
开源数据库
MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort
关系型数据库
Oracle、MySQL/MariaDB、SQL Server、PostgrcSQL、 DB2
计算机网络和操作系统
网络
协议
通常一个网站存在 CSRF 漏洞,在没有其它漏洞辅助的情况下,可以通过 CSRF 漏洞做下面哪件事?
牛客网 答案: A 获取网站用户注册的个人资料信息 B 获得其它用户的Cookie值 C 冒用网站用户的身份发布信息
ip地址中哪个类默认有最多可用的主机地址
A 类最多:2^24 -1(网络号 8 位,主机号 24 位)
网络延迟
定义:在传输介质中传输所用的时间,即从报文开始进入网络到它开始离开网络之间的时间
操作系统
产生死锁的必要条件?
https://www.cnblogs.com/lancidie/archive/2011/08/20/2147040.html
Windows 支持的文件系统分区格式
大小端模式
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
多线程中栈与堆是公有的还是私有的?
栈是私有的,堆是公有的 在多线程环境下,每个线程拥有一个栈和一个程序计数器。栈和程序计数器用来保存线程的执行历史和线程的执行状态,是线程私有的资源。其他的资源(比如堆、地址空间、全局变量)是由同一个进程内的多个线程共享。
线程的优点
https://blog.csdn.net/ffsiwei/article/details/81230374
Linux 命令
可以监控 Linux 系统资源的命令
https://www.cnblogs.com/hanxiaobei/p/5514544.html
- top
- free
- iostat
- netstat
- vmstat
1>&2 的含义
将标准输出重定向到标准错误信息输出
1、Linux 中支持输入输出重定向,0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入和标准输出,例如 2>a.txt 表示将错误信息输出到文件 a.txt 中
2、可以在这三个标准输入输出之间实现重定向,例如将错误信息重定向到标准输出,2>&1
tail -f:查看文件尾部内容
mkdir:创建目录
pwd:查看当前路径
grep:查找文件中符合条件的字符串
https://www.cnblogs.com/flyor/p/6411140.html
编程题
从头到尾打印链表(栈)
class Solution:
def printListFromTailToHead(self, listNode):
stack = []
while listNode:
stack.append(listNode.val)
listNode = listNode.next
return stack[::-1]
最大和的子数组(动态规划)
class Solution:
def FindGreatestSumOfSubArray(self, array):
n = len(array)
dp = [ i for i in array]
for i in range(1,n):
dp[i] = max(dp[i-1]+array[i], array[i])
return max(dp)
dp [i] 表示以元素 array[i] 结尾的最大连续子数组和 以 [1,-2,3,10,-4,7,2,-5] 为例: dp[0] = 1, dp[1] = -1, dp[2] = 3, dp[3] = 13, … 以此类推,dp[i] = max(dp[i-1]+array[i], array[i])
合并有序数组
class Solution:
def merge(self , A, m, B, n):
while n:
A[m] = B[n-1]
n -= 1
m += 1
return A.sort()
数组排序之后相邻数的最大差值(困难)
微信红包
描述:某个红包金额出现的次数超过了红包总数的一半,给定一个红包金额数组 gifts ,及它的大小 n ,请返回所求红包的金额。若没有金额超过总数的一半,返回 0 https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking 解题思路:排序找中间 1、对数组进行排序,用到 Python 中的 sort() 方法,默认升序排序 2、for 循环遍历排序后的数组,找到中间的元素,将它返回,即为所求红包金额
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
numbers.sort()
count = 0
n = len(numbers) // 2
for i in numbers:
if i == n:
count += 1
return numbers[n]
输入任意的年月日信息后输出对应日期是所属年的哪一天(10/12)
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数(10/14)
分配问题:饼干(10/14)
编程实现重复项删除(有赞)
删除给定字符串内相邻并相同的字母。反复执行重复项删除操作
交替位二进制数(有赞)
给定一个整数,检查他是否为交替位二进制数
掌上先机、新国都
提高交付软件的质量和效率
- 压力测试、负载测试和性能测试关系?TPS和QPS有什么区别?
答:https://blog.csdn.net/qq_41949208/article/details/106670596
压力测试:是在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响
负载测试:在一定的工作负荷下,给系统造成的负荷及系统响应的时间。
TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。
以单接口定义为事务为例,每个事务包括了如下3个过程: a.向服务器发请求 b.服务器自己的内部处理(包含应用服务器、数据库服务器等) c.服务器返回结果给客户端 如果每秒能够完成N次这三个过程,tps就是N;
如果多个接口定义为一个事务,那么,会重复执行abc,完成一次这几个请求,算做一个tps。
QPS:Queries Per Second,意思是每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数),显然,这个不够全面,不能描述增删改,所以,不建议用qps来作为系统性能指标。
区别: 如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps 如果是容量场景,假设n个接口都是查询接口,且这个接口内部不会再去请求其它接口,qps=n*tps
- web端项目前后分离,接口规范是什么?需要包含哪些内容?
答:接口规范是api接口文档 https://www.zhihu.com/question/52409287
- 常用的自动测试工具或框架有哪些,自己熟悉的工具以及选择原因
https://www.cnblogs.com/ustcinfo-qc/p/12124174.html
for(i=0; i<n; i++)
{
if(condition)
...
else
...
}
if(condition)
{
for(i=0; i<n; i++)
...
}
else
{
for(i=0; i<n; i++)
...
}
- 25匹马赛跑,共有5个赛道,最少赛多少次可以找出前3名,前5名
答:6次,5次
typedef struct{
int32_t a;
char b;
double c;
}T;
sizeof(T)=
- 软件测试方法按功能划分为黑盒测试和白盒测试
- HTTPS 请求交换密钥的算法和传输数据的算法:SSL、TTL
- 测试用例设计:在 Windows 下保存一个文本文件时会弹出保存对话框,针对“文件名”设计测试用例,等价类应该怎样划分?
- 编程:将国内手机号码中间部分改为 * 字段,4到7位
|