个人面经整理深信服测开

Linux指令

  1. Ps命令查找与进程相关的pid号
    Ps a 显示现在终端机下的所有程序
    Ps -A 显示所有程序
    Ps e 列出程序时,显示每个程序所需要的环境变量
    Ps f 用ASCII字符显示树状结构,表达程序间的相互关系
    Ps -H 显示树状结构,表示程序间的相互关系
    Ps -N 显示所有程序,除了ps指令终端机下的程序之外
    Ps s显示程序信号格式
    Ps u 以用户为主的格式来显示程序状况
    Ps x 显示所有程序
    Ps aux,a表示所有关联到终端的进程,x表示所有进程,u表示列出进程的用户
    Ps -elf , -e 表示列出所有进程, -l表示长格式, -f 表示完整格式

  2. File 通过探测文件内容判断文件类型
    File ? 文件名
    -v 标准输出后显示版本信息并退出
    -z 探测压缩过的文件类型
    -l 允许符合连接

  3. mkdir 建立名称为dirname的子目录
    Mkdir ? 目录名
    -m 设定模式的权限
    -p 需要时创建上层目录
    -v 每次创建新目录都显示信息

  4. grep 指定文件中搜索特定的内容,并将这些内容的行标准输出。
    Grep ?
    -c 只输出匹配行的行数
    -I 不区分大小写
    -h 查询多文件时不显示文件名
    -l 查询多字符时只输出包含匹配文件的文件名
    -n 显示匹配行及行号
    -s 不显示不存在或错误的信息
    -v 显示不包含匹配文本的所有行

  5. find 在目录中搜索文件
    Find 路径 ? 描述
    -depth
    -version 打印版本

  6. top 实时显示进程的动态
    -c显示完整命令
    -s 积累模式显示程序信息

  7. df 检查文件系统磁盘空间占用情况

  8. du 检查磁盘空间使用量

  9. fdisk 磁盘分区

Mysql增删查改

  1. 删除:
    1drop删除数据库和表
    Drop database db
    Drop table tb
    2delete删除表中的字段
    Delete from tb where id=1
    如果delete语句没有加where则把表中的所有记录都删除
    3truncate删除表中的所有字段
    Truncate table tb
  2. 查询
    Select 要查询的数据类型 from 表名 where 条件
  3. 插入
    Insert into ‘数据库名’.数据库表名 set ‘?’=‘?’,‘?’=’?‘’
  4. 修改
    Updata ‘表名’ set ?=?,?=? where id=1

比较两个网页的访问速度
Ping 两个网站的网址可以得到发送32字节需要的时间,直接比较

测试是做什么的
测试项目的具体工作:搭建测试环境、编写和执行测试用例、写测试计划和报告、提交bug表单并跟踪bug修改、编写脚本执行自动化测试、进行性能测试压力测试等

Tcp udp区别

  1. Tcp面向连接,udp无连接
  2. Tcp可靠服务,无差错、不丢失、不重复、按序到达,udp尽最大努力交付
  3. Tcp面向字节流,udp面向报文
  4. Tcp点到点,udp一对一、一对多、多对一、多对多
  5. Tcp首部20字节,udp首部8字节
  6. Tcp全双工可靠信道,udp不可靠信道
  7. Tcp传输效率低,udp传输效率高
  8. Tcp有流量控制、拥塞控制,udp无

Vi编辑器的三种模式

  1. 命令模式,vi的入口
    常规编辑操作,定位、翻页、复制、粘贴、删除等
  2. 末行模式,vi的出口
    保存、退出等操作
    W,保存
    Q,退出,没保存不允许退出
    Q!强行退出,不保存退出
    Wq保存并退出
    X保存并退出
  3. 编辑模式
    正常编辑文字

编程题(求三角形面积)
海伦公式:
If(a+b>c&&a+c>b&&b+c>a)
{
S=(a+b+c)/2;
Area=sqrt(s*(s-a)(s-b)(s-c));
}

Dns流程

  1. 检查浏览器缓存
  2. 检查系统缓存,即hosts文件
  3. 本地域名解析服务器
  4. 本地域名服务器向根域名服务器发起请求
  5. 根域名服务器返回通用顶级域的地址(gTLD)
  6. 本地域名服务器向gTLD发起请求
  7. gTLD服务器返回name server服务器
  8. name server服务器返回ip给本地域名服务器
  9. 本地域名服务器缓存解析结果
  10. 返回解析结果给用户

Ddos和waf原理
Ddos:分布式拒绝服务攻击。通过控制多个肉鸡或者服务器组成的僵尸网络对目标发送大量看似合法的请求,占用大量的网络资源,阻止用户对网络资源的正常访问。
Waf:web应用防火墙,能在应用层理解http会话,有效阻止应用层攻击,同时也具备网络防火墙功能。
解析http请求-------匹配规则--------防御动作----------记录日志
对请求的内容进行规则匹配、行为分析识别出恶意行为,并且执行相关的阻断、记录、警告操作。

Linux配置路由器的命令,怎么查看端口是否被占用,一个文件中找某个词的命令,进程,内存,查看路由

  1. 配置路由器 # route [add|delete] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
  2. 查看某个端口是否被占用 Isof -i : 端口号 或者netstat -anp|grep 端口号
  3. 一个文件中找某个词 grep
  4. 查看进程Ps
  5. 查看内存 top
  6. 查看路由,显示当前路由 route

一千万个域名找一个域名

正则表达式

  1. 正则表达式用单个字符串匹配符合某个句法规则的字符串
  2. 数量限定: +,表示前面字符至少出现一次>=1。 ?,表示前面字符最多出现一次<=1。 *可以出现任意次 n.
  3. ()定义优先度

野指针是什么,如何避免

  1. 指向被释放的内存或者没有访问权限内存的指针
  2. 避免:
    1没有指向的指针初始化为NULL
    2当内存使用完之后要将内存释放,将指针置为NULL

指针
指针是一个变量,他的值是另一个变量的地址

指针的指针
第一个指针指向包含第二个指针的地址,第二个指针指向包含实际值的位置

结构体
是一些元素的集合

Linux启动过程

  1. 内核引导
    打开电源先bios自检。操作系统接管硬件后,读入/boot目录下的内核文件
  2. 运行init
    Init程序首先要读取配置文件 /etc/inittab
    运行级别0~6, 0停机,1单机、root、维护、禁止远程登录,2多用户,3完全多用户,4系统未使用、保留,5 x11控制台,6正常关闭并重启
  3. 系统初始化
    Rc.sysinit是每个运行级别都要运行的脚本。
    激活交换分区、检查磁盘、加载硬件、其他需要优先执行的任务
  4. 建立终端
    Rc执行完之后返回init,基本系统环境配置好了,守护进程已经启动。打开六个终端便于用户登录。
    运行mingetty程序,这个程序可以打开终端、设计模式。显示一个文本登录界面,输入用户名密码,作为参数传给login验证用户身份。
  5. 用户登录系统
    登录方式:命令行、ssh、图形界面

不能访问某个网站的可能原因

  1. 网站本身的问题,服务器故障、网站维护等。
  2. 访问网站的部分结点出现了拥堵或者短暂性的无连接。
  3. Dns解析问题。
  4. 浏览器缓存了旧版本的js,需要清除缓存文件。

本机不能联网如何排查

  1. Ping 192.168.1.1,本地循环地址,ping不通表示本地的tcp/ip协议不能正常工作
  2. Ipconfig,ping自己的ip,ping不通则网络适配器有问题
  3. Ping 默认网关,本机到路由是否正常
  4. Ping 某网站,通了就可以上网

广播风暴怎么造成的

  1. 广播风暴是广播数据充斥网络,占用大量带宽,导致正常数据包无法运行。
  2. 可能造成原因,蠕虫病毒、交换机端口故障、网卡故障。最常见的是蠕虫病毒和arp攻击。

如何测试一个web页面

  1. 功能测试
    1链接正确跳转,不出现空页面和无效页面,无出错信息
    2提交功能正常
    3多媒体元素可以正常加载和显示
    4多语言支持能显示选择的语言
    5cookie测试,检查cookie正常工作,按预定时间保存,刷新对cookie的影响
    6数据库测试,检查数据一致性错误(表单信息)和输出错误(网速,程序设计)

  2. 界面测试
    1页面风格统一、美观
    2页面布局合理,重点内容突出
    3文字正确
    4是否支持快捷键

  3. 性能测试
    1压力测试
    2负载测试
    3强度测试
    通用指标:服务器CPU占用率,可用内存数,物理磁盘读写时间情况
    服务器指标:平均每秒响应次数,平均每秒业务脚本迭代次数,每秒点击数(成功、失败),尝试链接数
    数据库服务器指标:数据库链接数量、数据库死锁、数据库Cache命中

  4. 安全测试
    1SQL注入
    2登录功能检查,有效无效用户名、大小写、试多少次次数限制、是否可以不登录就浏览网页
    3超时限制,多少时间内一直没动是否需要重新登录
    4日志文件,相关问题是否写进日志文件,是否可追踪
    5使用了安全套接字测试加密是否正确,检查信息完整性
    6服务器端的没有经过授权不能放置和编辑脚本

  5. 兼容性测试
    1浏览器
    2操作系统
    3数据库
    4软件平台

堆栈区别


  1. 编译器自动分配释放内存,存放函数的参数值、局部变量值。
    动态或者静态分配
    向低地址扩展的数据结构

  2. 程序员分配释放,程序员不释放可能被os回收。
    就只能动态分配
    向高地址扩展的数据结构

函数指针和指针函数区别

  1. 指针函数,本质是一个函数,返回值是一个指针
  2. 函数指针 , 本质是一个指针 ,指向一个函数

C语言执行main之前做什么
内核调用一个启动例程,从内核中取得命令行参数和环境变量值,为main函数执行做准备。

手撕一个排序算法
快排

冒泡

当数据库流量大,数据大应该怎么办

  1. 分表
    将不常用的数据分一张结构与当前表一样的表
  2. 索引优化和sql优化(建立非聚集索引)

如何快速在一亿个数据中找到目标

一亿个域名链表怎么存

服务器内存不够怎么办

Linux查看进程和线程的命令
单个进程的线程htop
Top -H //显示线程
Ps -T

输入一个URL没有访问到预期的网站可能的原因

  1. Dns故障
  2. 网络断开
  3. 服务器拒绝访问
  4. 请求或者响应在网络传输中被劫持

访问网页发生故障怎么解决

多个站点中,揪出所有站点中错误的一个,返回403状态信息

1000万玉米,找到里面坏的一根玉米.

客户端访问服务器端怎么控制并发量

  1. 缓存
    提升系统访问速度,增大系统处理容量
  2. 降级
    当服务出问题或影响到核心流程性能的时候将其暂时屏蔽,高峰后或问题解决后在打开
  3. 限流
    限定并发请求限速,达到速率可以拒绝服务或者排队等待
    控制并发数量--------信号量机制
    控制访问速度--------工具Guava、ratelimiter控制

两个linux系统怎么传文件

  1. scp传输
    速度较慢,ssh通道保证传输安全
    (本地到远程)scp 文件名 -用户名@计算机ip或者计算机名称:远程路径
    (远程到本地)scp -用户名@计算机ip或者计算机名称:文件名 本地路径
  2. rsync差异化传输
    文件同步和数据传输工具,客户机和远程文件服务器之间文件同步,本地系统从一个分区到另一个分区。
  3. 管道传输
  4. nc传输
    在两台电脑之间建立tcp或者udp连接,在两个端口之间传输数据流,是网络的数据流重定向。
    Dd结合nc命令网络克隆磁盘分区
  5. 建立文件服务器
    采用网络挂载的方式传输,用于经常性拷贝

Linux查看磁盘命令

  1. df 列出文件系统整体磁盘使用量
  2. du 检查磁盘空间使用量
  3. fdisk用于磁盘分区

虚函数

  1. 如果一个类含有一个虚函数,则系统会为这个类分配一个指针,指向一张虚函数表,表中每一项都指向一个虚函数地址。
  2. 在基类成员函数声明前面加上关键字virtual即可成为虚函数。
  3. 允许在派生类中重新定义与基类同名的函数,并且可以通过基类的指针或者引用来访问基类和派生类的同名函数

内存布局

多态
它是在程序运行时根据基类的引用(指针)指向的对象来确定自己具体该调用哪一个类的虚函数。

代码段---------初始化的数据段--------未初始化的数据段--------堆---------栈
代码段:可执行命令,共享,只读
初始化数据段:包括全局变量和静态变量。编程时已经被初始化
未初始化的数据段:BSS段,初始化为0
栈:
堆:

创建动态对象,并限制大小
A* a=new A(1) //
静态数组 A a[5];
动态数组 A *a=new a[5]

URL访问网站过程

  1. 查询dns获取域名对应的ip
    查找过程:浏览器缓存-------本地hosts文件----------本地dns解析器缓存-------本地dns服务器缓存---------dns服务器采用迭代或递归方式获得解析结果返回给客户机
  2. 得到目标服务器的ip地址和端口号,调用系统库函数socket,请求tcp流套接字。客户端向服务器发送http请求报文。
  3. 服务端解析请求报文,发送http响应报文
  4. 关闭连接,tcp四次挥手
  5. 客户端解析http响应报文,浏览器开始显示html

为什么不能访问谷歌,怎么访问

一个文件中的文本怎么翻转

二层网络三层网络

Tcp,udp分别在什么情景下适合

  1. 用tcp的协议
    SMTP/TELNET/HTTP/FTP
    电子邮件、远程终端接入、万维网、文件传输
  2. DNS/TFTP/RIP/BOOTP,DHCP/SNMP/NFS/专用协议
    域名映射、文件传输、路由选择、ip地址配置、网络管理、远程文件服务器、ip电话、流式多媒体通信

无线通信协议

  1. Netbeui 用户扩展接口
  2. Ips/spx 网际包交换/用户包交换
  3. Nwlink
  4. Tcp/ip 传输控制/网际协议

二分查找,冒泡,快排

SSL

  1. 用于web浏览器和服务器之间的身份认证和加密数据传输
  2. Ssl位于tcp/ip协议与各种应用层协议之间

LRU
最近最少使用页面置换算法

路由器和交换机区别

  1. 交换机在数据链路层,隔离冲突域,负责子网内部的通信,根据mac地址转发,主要用于组建局域网
  2. 路由器工作于网络层,隔离广播域,连接的设备属于不同的子网,负责子网之间的通信,根据ip地址转发,用于将交换机组建的局域网连接起来

Linux,软连接和硬链接的区别
未解决文件的共享使用引入两种连接
硬链接:一个inode号对应多个文件名 link或ln创建硬链接
硬连接特性:
文件的inode号和datablock一样
不能对已经存在的文件创建
不能对交叉文件系统创建
不能对目录创建,只能对文件创建
删除一个硬链接文件不影响其他有相同inode号的文件
软连接:有自己的inode号和用户数据块,inode中存的是文件的路径
特性:
有自己的文件属性和权限
可以对不存在的文件或者目录创建软连接
可对交叉文件系统创建
可对文件和目录创建
删除软连接不影响他指向的文件,但指向的文件被删除,软连接变成死链接,当该路径的文件重新创建时,死链接又变为正常软连接

纯虚函数
纯虚函数只是一个接口,是个函数声明,需要留到子类去实现。纯虚函数的基类即虚基类不能直接生成对象,只有被继承且重写后才能使用。

重载、隐藏、覆盖

  1. 重载,函数具有相同的函数名,但是参数或者参数类型不同,调用时根据参数来决定调用哪一个函数。
  2. 覆盖:在派生类中对基类的虚函数重新实现,函数名和参数都相同但是函数实现不同。
  3. 隐藏:派生类中的函数将基类中同名函数屏蔽了。
    ArrayList、Vector、HashMap、HashTable
    Arraylist 数组队列,动态数组,随机访问。
    Vector 矢量队列
    Arraylist不是线程安全的,vector是线程安全的
    Hashmap存储(key ,value),
    Hashmap非同步,hashtable同步
    Hashmap的key、value可以为null,hashtable的key,value不能为null

哈希的好处,一般的应用场景,比起ArrayList有什么优势、区别

  1. 哈希好处:查找效率高o(1)
  2. 场景:对查找性能要求高,数据之间没有逻辑关系

windows怎么查看路由表
route print

查看占用内存最高的进程
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,于Windows的任务管理器

数据结构了解哪些?红黑树?
红黑树是自平衡的二叉查找树,可以在o(logn)时间内完成查找、插入和删除

敏捷测试和瀑布模型的区别?
敏捷测试:高度迭代、周期性、及时持续响应客户反馈。尽早开始测试。
瀑布模型:
将软件的生命周期按照固定顺序连接。

http协议的常见状态码
100-199 请求收到,继续处理
200-299 成功
300-399 资源重定向
400-499 客户端请求出错
500-599 服务器端出错
200 响应成功
302 跳转,重定向
400 客户端语法错误
403 服务器拒绝提供服务
404 请求资源不存在
500 服务器内部错误

自己电脑上不了网怎么排查

  1. 排除接触故障,看物理连线是否正常
  2. 排除偶然故障,更改适配器设置里,设置本地连接或者无线网络连接,先禁用再启动
  3. ipconfig all 看IP地址和网卡物理地址等,看是否已经断开
  4. ping 127.0.0.1 若发送和接受了4个包,丢包率为0,网络协议正常,显示请求超时则网卡安装或者TCP/IP协议有问题。
  5. ping 本机ip 不通则网卡驱动程序不正确,或网卡与网线连接有故障,或路由表破坏。检查本机网卡是否连接,网络参数是否正确(参数正确但不能ping通则应该重新安装网卡驱动程序)
  6. ping 网关 通了则网络连接正常,不通可能网关设备或者上网参数有问题。

微信扫码登录测试用例设计

  1. 扫码后是否会跳转,跳转页面是否正常
  2. 联网或不联网或弱网扫码
  3. 失效二维码扫码

.深信服的纸杯测试用例设计

  1. 功能
    1测试装少量、半杯、满杯时是否漏液
    2能装多少ml的水,是否有刻度
  2. 性能
    1最大使用次数和时间
    2保温时间
    3长时间放置不漏水
    4被压是否易破裂,能承受多大的力
  3. 界面
    1外观整洁美观
    2规格和包装说明一样
    3材质、手感好
    4图案不容易掉落、不容易溶解
  4. 安全
    1材质里有害物质的含量经过验证
    2高温或低温不释放有毒物质
    3有无缺口
    4承受运输途中的震动和挤压
  5. 易用性
    1形状大小设计方便拿起
    2上大下小,运输时可以嵌套利用空间
    3不烫手
    4防滑
  6. 兼容性
    能盛水、果汁、酒
  7. 可移植性
    在不同的地方、温度都可以正常使用

数据库查询很慢,分析原因

  1. 没有用索引
  2. i/o吞吐量小
  3. 内存不足
  4. 网速慢
  5. 查询结果数据量过大
  6. 锁或者死锁
  7. 读写竞争资源
  8. 查询语句没有优化
    优化措施:
  9. 数据、日志、索引放到不同的i/o设备上
  10. 纵向、横向分隔表,减小表的尺寸
  11. 升级硬件
  12. 优化索引
  13. 提升网速
  14. 扩大服务器内存

装过系统吗?什么系统,我现在电脑开机,开不了,进不去bios,我想把我d盘上的文件取出来,怎么办?
如果能进bios,用u盘拷一个pe,然后再bios里进pe,就可以像正常操作系统一样拷出来,如果不能进bios只能打开把硬盘取出来安装在别人的电脑上拷文件。
PE是windows的预安装环境,带有有限服务的windows子系统,包括windows运行的安装程序和脚本,连接网络共享,自动化基本过程和执行硬件验证需要的最小功能。

网络拓扑画过吗?
网络拓扑图是指由网络结点设备和通信介质构成的网络结构图
主要有星形、环状、总线型

了解勒索病毒吗?
利用加密算法对文件进行加密,被感染者必须拿到私钥才能破解
通常通过邮件和广告推广进行传播

在Linux上面如果系统崩溃了,需要查看CPU,内存占用情况,使用什么命令?查看显存的使用情况呢?
显存 #watch -n 10 nvidia-smi (10表示每10s刷新一次显示结果)
结束进程 sudo kill -9 PID

你常用的Linux命令有哪些?说一下,并且注明常用的参数

  1. Cp复制文件
    -f 强制覆盖已经存在的目标文件,不提示用户确认
    -I 覆盖时需要确认
    -s 不进行真正的复制,只是为源文件创造符号链接

  2. mv 移动文件
    -i
    -f
    -b 在覆盖文件前备份

  3. touch 创建文件或修改文件的修改时间
    -a 只修改文件的读取时间
    -m 只修改文件的修改时间
    -t 使用指定时间而不是当前的系统时间

  4. rm 删除文件
    -r 删除指定目录下的所有文件
    -f 强制删除不提示

  5. cat 查看文本文件
    -n 查看文件时对每一行编号
    -b 查看文件时对空白文件不编号

  6. more 和 less 查看文件
    -p 显示下一屏前先清屏
    -s 文件的连续空白压缩成一个空白行

  7. find 查找文件或目录
    -print 将查找的文件输出到标准输出
    -name 按照文件名查找
    -perm 按照文件权限查找
    -user 按文件属主查找
    -type 查找某一类型

  8. grep 文本过滤
    -q 不显示任何信息
    -s 不显示任何错误信息

  9. diff 比较文件差异
    -I 不检查大小写
    -s 没发现任何差异仍显示信息

  10. file 显示文件类型
    -b 不显示文件名称,只显示类型

  11. split 分割文件

  12. Join 合并文件

  13. Pwd显示当前工作目录

  14. Mkdir 建立目录

  15. Ls 查看工作目录

  16. Tree 查看目录树

  17. Tar 打包或解压文件

  18. Man 查看命令帮助

  19. History 查看历史记录

  20. Date 显示或修改系统时间

  21. Clear 清除屏幕

  22. Shutdown 关机或重启

  23. Chmod 改变文件权限

  24. Df 查看磁盘空间占用

  25. Du 查看文件或目录空间占用

  26. Fdisk 分区管理

  27. Sudo 普通用户获取超级权限

  28. Ps 进程监控

  29. Top 系统状态监视

  30. Ping 检查网络是否畅通,主机连接速度

  31. Ifconfig 配置网络或显示当前网络接口状态

  32. Route 显示添加或修改路由表

  33. Rsync 复制文件到其他系统

  34. Netstat 显示网络状态,路由表和接口状态

  35. Traceroute 探测目的地址的路由信息

  36. telnet 测试、登录、控制远程主机

  37. iostat 硬盘io

Git相关命令提问

  1. 远程仓库
    检出 git clone
    查看 git remote -v
    添加 git remote add
    删除 git remote rm
    修改 git remote set -url --push
    拉取 git pull
    推送 git push
  2. 分支操作
    查看本地分支 git branch
    查看远程分支 git branch -r
    切换分支 git checkout
    合并分支 git merge
  3. 版本
    查看版本 git tag
    删除版本 git tag -d
    查看远程版本 git tag -r
    Branch 查看本地所有分支
    Status 查看当前状态
    Commit 提交
    Fetch 从远程获取最新版本到本地
    Pull 本地与服务器端同步
    Log 查看commit的日志
    Add 添加文件到git index
    Config --list 看所有用户
    Remote show 查看远程库

堆这个数据结构你了解吗?有哪些应用场景?
场景:堆排序和优先队列

大根堆和小根堆有什么区别?
父节点的值大于或者小于两个子节点

哈希表你了解吗?哈希表是怎么实现的?(数组+链表)
通过把码值映射来访问,加快查找速度

知道一致性哈希吗?讲一下
一致性哈希算法,对2^32取模,将哈希空间组变成一个虚拟的圆环,每台服务器确定自己在哈希圆环上的位置,每台机器定位到相应的服务器。一致性哈希算法的容错性和可扩展性好。

单链表的反转怎么做?(我提了三种解决方法),问哪个解法最好?为什么?
迭代

还可以用栈

正则表达式用过吗?$表示什么意思?
匹配输入字符串结束的位置

页表的内存大小一般是多大?

C语言用过吗?字符串拷贝函数有哪些?
Strcpy
strcpy的缺点,它存在哪些安全性的缺陷
没有保证目标字符串的大小可以容纳源字符串的大小。使用strcpy_s,strcpy_s可以两个参数,也可以三个参数指定复制多少个字符

知道僵尸进程和守护进程吗?讲一下
孤儿进程:父进程完成或者终止后子进程仍然运行,此子进程成为孤儿进程。当父进程退出后,子进程会被init进程收养,init进程可用调用wait,孤儿进程没有危害。
僵尸进程:子进程退出,父进程没有通过wait来获取子进程的状态,子进程的描述符还在系统中,此时的子进程变成僵尸进程。 将会占用进程号,系统进程号有限,若过多僵尸进程导致系统没有可用的进程号。
守护进程:后台运行的一种特殊进程,独立于控制终端,周期性执行某项任务或等待某些事件。

大文本的中数字怎么进行排序
N小时用归并排序
N大且程序有序程度高时用快排
N大且有序程度低时堆排最快

ARP协议
地址解析,将ip地址转换为mac地址的协议

什么是内联函数。
为了消除函数调用时间的损耗,让编译器将函数体直接插入调用函数的地方。
是程序占用空间和执行时间之间的权衡

黑盒测试和白盒测试。
黑盒包括等价类划分、边界值分析、因果图法、场景法、正交实验设计法、判定表驱动分析法、错误推断法、功能图分析法。
白盒包括静态测试和动态测试
静态测试包括代码检查、静态结构分析、代码质量度量、文档测试
动态测试包括接口测试、覆盖率测试、性能分析、内存分析

UDP传输的时候发送端和接收端信道不一样宽怎么办?

镜像文件的名称后缀是什么?
.iso

虚拟机如何联网?
选用nat模式,DHCP setting,设置redhat的ip为自动dhcp。

安装虚拟机的时候选择预分配和未分配的区别?

12306崩了,在用户登录页面你怎么测试?

对黑盒白盒测试方法的了解,对自动化测试的了解
1.黑盒测试是已知产品功能,测试功能能否正常使用。不考虑程序的内部结构和特性,只检查功能是否正常、界面是否正常、对输入数据能否产生正确输出信息。
白盒测试根据程序控制结构设计用例。检查内部逻辑结构、测试逻辑路径。
白盒测试原则:每个独立路径至少测试一次;逻辑值要测试真和假两种情况;内部数据结构要保证有效性;在上下边界和可操作范围内运行所有循环。
2.黑盒包括等价类划分、边界值分析、因果图法、场景法、正交实验设计法、判定表驱动分析法、错误推断法、功能图分析法。
白盒包括静态测试和动态测试
静态测试包括代码检查、静态结构分析、代码质量度量、文档测试
动态测试包括接口测试、覆盖率测试、性能分析、内存分析
(白盒测试方法:程序插桩技术,基本路径法,逻辑覆盖法,符号测试,错误驱动测试)
3.自动化测试优点:对回归测试方便;节省时间和人力;将繁琐的任务自动化如压力测试和并发测试;一致性、可重复性;复用性;信任度高
自动化测试缺点:发现的缺陷比手工测试少;无想象力
自动化测试工具:Seleniumn Appium Robotium
自动化测试流程:需求测试------概要设计测试--------详细设计测试--------单元测试------集成测试------系统测试-------验收测试

给一个登录界面,进行测试

  1. 功能测试
    1输入正确或者错误的用户名或密码能否登陆成功
    2登陆成功能否调转到正确的页面
    3用户名和密码长度过长或过短
    4用户名和密码含有特殊字符
    5是否有记住用户名和密码功能
    6用户名和密码前后有空格
    7密码明文或者密文显示
    8验证码是否容易辨认,刷新验证码是否好用
    9登陆界面是否可以注册、忘记密码,点击后调转的页面是否正确
    10输入密码时大写键盘打开是否有提示
    11不输入时点击提交是否会提示检查
  2. 界面测试
    1布局是否合理,按钮是否整齐
    2按钮高度和长度是否符合要求
    3界面设计风格是否统一
    4文字易懂简洁无错别字
  3. 性能测试
    1打开登录界面的时间控制
    2输入正确的登录信息后页面跳转时间
    3大量用户登录时正常跳转
  4. 安全性测试
    1用户名和密码是否以加密的方式传给web服务器
    2用户名和密码的验证服务器端验证
    3用户名和密码输入框屏蔽SQL注入攻击、禁止输入脚本
    4防止暴力破解,有错误登录次数限制
    5多用户在同一机器登录
    6同一用户在多个机器登录
  5. 可用性测试
    1输入完成按回车登录
    2输入框按Tab切换
  6. 兼容性测试
    1不同浏览器显示和功能正常
    2同种浏览器不同版本显示和功能正常
    3不同平台正常工作,windows,mac
    4不同移动设备,iPhone android
    5不同分辨率正常显示
  7. 本地化测试
    不同语言环境下显示正常

如果要求登录在10秒算成功,如果超出10秒怎么测试(面试官大哥告诉我要了解整个请求过程,对过程中每一个环节进行测试,针对问题进行调优),并进行调优,如果是高并发问题,如何调优。

如何对矿泉水进行测试?(有逻辑,调理清楚)

  1. 功能
    1水瓶不漏水、能拧紧
    2瓶子里的水能喝到
  2. 性能
    1测试要多大的压力可以把瓶子压破
    2在多高摔下来会摔破
  3. 易用
    1瓶子装热水不烫手
    2防滑
    3方便引用
  4. 安全
    1水瓶材质有害物质含量在允许范围内
    2在过冷过热条件下水瓶的有害物质释放量在合理范围内
  5. 兼容性
    能装果汁、白水、酒精、汽油等

在三种浏览器中分别输入搜索内容,如何测试反应时间?

.能否用你熟悉的语言实现数据输入,输出,登录功能,大致说一下思想。

bug生命周期

  1. new,新的 bug第一次被发现,测试人员与项目负责人确认的确是bug,记录下来
  2. Assigned 已指派的 bug New之后反馈给开发确认,开发负责人指派给一个开发处理
  3. Open 打开的 开发人员开始处理bug
  4. Fixed 修复的 开发认为bug已经解决,并提交给开发负责人,开发负责人将bug返还给测试
  5. Pending Reset 待在测试的 bug返还给测试组之后
  6. Reset 再测试 测试组的负责人将bug给定某位测试人员
  7. Closed 关闭的 测试人员再测试时发现bug已经解决了
  8. Reopen 再打开的 测试后发现bug仍然存在就再返还给开发组
  9. Pending Reject 拒绝中 开发人员认为传回来的bug是正常的而不是bug的时候就拒绝接受
  10. Rejected 被拒绝的 测试负责人收到被开发拒绝的bug,并发现这已经是一个正常行为,不能算做bug了
  11. Postponed 延期 特殊的bug需要搁置一段时间

get和put

  1. get是请求获取request url所标识的资源
  2. put是请求服务器存储一个资源,由request url作为标识

软件响应太慢的原因
物理内存或虚拟内存不够

sizeof和strlen的区别
sizeof是数据类型所占的空间大小,strlen是字符串长度
sizeof是运算符,strlen是函数
子函数传参,sizeof会把传进来的数组当指针,sizeof为4

get post 区别

  1. get是从指定资源请求数据
  2. post是向指定资源提交要被处理的数据
    get post
    后退/刷新 无害 重新提交
    缓存 能被缓存 不能被缓存
    编码 url编码 多种编码
    历史记录 参数保留在浏览器历史记录 不会保留
    数据长度限制 向url发送数据,长度受限制 无限制
    数据类型限制 只允许ACII字符 无限制,允许二进制
    安全性 参数直接暴露在url,安全性较差 参数不会保存在浏览器历史记录或者web服务器,安全性较好
    可见性 数据在url中对所有人可见 不会显示在url
    传参方式 get参数通过url传参 post放在request body里

request和urllib区别,

git怎么提交代码
git conmmit将文件提交到仓库
git remote add origin 远程仓库地址 关联到远程库

git pull和fetch区别
git pull 从远程获得最新版本,并merge到本地
git fetch 从远程获取最新版本,不会自动merge

详细说下等价类划分
把全部输入数据合理划分为若干个等价类,每个等价类中取一个数据作为测试输入条件,用少量的代表性测试数据获得较好的结果。
设计测试用例时不仅要考虑有效等价类,还要考虑无效等价类。

讲一下软件开发流程。

  1. 需求分析 初步了解用户需求,列出开发系统的功能模块、界面,并且向用户确认
  2. 概要设计 对软件系统设计进行考虑,包括基本处理流程、系统组织、模块、接口等
  3. 详细设计 描述具体模块的主要算法、数据结构、类,子模块设计。
  4. 编码 根据《软件系统详细设计报告》的设计要求进行编写工作,实现模块功能。
  5. 测试 测试人员和用户
  6. 软件交付 测试达到要求后开发者向用户提交开发的目标安装程序,《用户安装手册》《用户使用指南》、需求报告、设计报告、测试报告等
  7. 验收 用户验收
  8. 维护 根据用户需求或者环境变化,对应用程序进行全部或者部分修改。

讲一下集成测试和系统测试,并且Bug定位属于什么测试。
1.集成测试:针对模块接口有关问题,对已经进行了单元测试的模块拿来构造一个满足设计的程序结构,采用增量集成。有自顶向下和自底向上集成。
2.系统测试:根据系统整体需求说明书进行黑盒测试。验证产品系统是否符合需求规格。包括软件、硬件、数据、接口测试。在系统实际运行环境中进行。
区别:先做集成测试,等问题修复后再做系统测试。集成测试用例比系统测试更详细。
应用场景:集成测试程序内部结构特别是程序接口测试,白盒黑盒结合。系统测试按照需求规格说明书进行整个产品全面测试,一般是黑盒。
Bug定位应该属于单元测试吧,单元测试是最小设计单元验证,保证模块正确编码。

问了几个网络L2/L3协议。
L2数据链路层:网桥、交换机、网卡,两个网络实体之间提供数据链路的创建、维持、释放的管理,对帧定界、同步、收发顺序控制。流量控制、差错控制。
PPP/wifi/hdlc/
L3网络层:路由器,提供路由和寻址功能,两终端系统互联并决定最佳路径。拥塞控制和流量控制。
IP网络互连协议/ARP地址解析协议/RARP反向地址转换协议/ICMP在主机路由器之间传递控制信息/IGMP组管理协议向相邻路由器报告自己组的情况/RIP路由信息协议,网关和主机之间路由选择信息/OSPF开放式最短路径优先/BGP边界网关协议,连接独立的路由选择协议

如何设置一个linux log系统,描述设计思路,功能模块。
时间、文件、行号等有用信息,然后封装好。设定等级,不同的log信息分开装,比如错误信息、警告信息、记录流程信息。添加一些命令,比如详细显示,粗略显示等。输出目的地,比如文件或控制台等

log信息有上百万条,该怎么处理,成百上千又该怎么处理。

关于问到的协议,有哪些测试,(好吧,没听过)
一致性测试:协议本身和协议规范的符合程度
互操作性测试:某一协议与其他协议之间互操作互通信能力
性能测试:协议性能指标,数据传输率、连接时间、执行速度、吞吐量、并发度
健壮性测试:恶劣环境下运行能力,干扰报文、通信故障、信道切断

交换机测试的一些东西。

  1. 二层交换性能测试
    Mac地址学习速度
    Mac地址表容量
    端口地址数量限制
    转发性能
    超长帧转发性能
    丢帧率
    地址处理
    错误帧过滤
    广播转发性能
    广播抑制功能
    Vlan堆叠测试
    端口镜像功能测试
    优先级控制
  2. 三层交换性能测试
    第三层地址学习
    路由表容量
    Ospf路由震荡
    吞吐量
    延迟
    丢包率
    背靠背
    有效吞吐率
  3. 功能测试
    Arp功能测试
    拥塞控制
    板内交换性能测试
    最大vlan数量测试
    路由表容量测试
    Mac地址访问控制表测试
  4. 可靠性测试
    主控板和交换矩阵冗余
    电源冗余
    业务卡热拔插
    设备防arp攻击
    设备防icmp攻击
    稳定性测试

linux过滤文本中的某些字段。
Grep,
Awk
Sed
Grep主要用于搜索字符串,sed和awk主要用于处理文本
Grep主要是正则表达式匹配,awk功能比较复杂,sed和grep相似,awk最强大

局域网设备开放端口,21/8080/53端口对应服务
21FTP,20用于数据传输,21用于控制命令传输(FTP是TCP连接)
53,UDP端口,DNS域名解析服务
8080,WWW代理服务,网页浏览

安全攻击的手段方法,比如你要攻击深信服官网,要做哪些动作

  1. Dos攻击,发送大量请求使服务器瘫痪 ping泛洪、TCP SYN泛洪 僵尸网络
  2. ARP攻击,MAC翻译错误导致计算机内身份识别冲突
  3. Xss跨站脚本攻击, 网页中嵌入恶性脚本程序
  4. SQL注入,就是用应用程序将恶意的SQL命令注入后台数据库
  5. Csrf 跨站请求伪造 伪造成受信任的用户访问

内部架构,后端是什么样的服务器怎么看

获取管理员权限有几种方式

  1. Su root 切换到管理员权限,su 普通用户名 切换回普通用户
  2. Sudo 让普通用户获得管理员权限

常用的扫描工具有哪些
Appscan
Burp suite
Zap
Sqlmap

滑动窗口
在任意时刻,发送方和接收方都维持一个允许连续发送或者接收的帧的序号,称为发送窗口和接收窗口。发送窗口大小由接收方确定,目的是控制发送速度,避免溢出和网络拥塞。

装过系统么,装系统的过程中都发生了什么?

给你50台虚拟机同在一个局域网,如何同时在这50台虚拟机上安装一个测试工具,测试工具是一个可执行文件

百度无法访问了怎么排查什么问题,后面补充除了qq其他都无法访问。
可能是dns解析的问题,ping检查,固定ip地址,清空dns缓存
浏览器自身的问题 可能被恶意篡改
网络防火墙的问题
网络协议和网卡驱动问题
Host文件篡改
Cpu占用率100%

两台pc中间有两台路由,问pc1和pc2的源ip目的ip源mac目的mac
如:A访问B,
首先对比是否同一子网,如果是,检查ARP表,有B的MAC就直接发送,没有就发送ARP请求.如果否,发送到默认网关C,源IP为A,源MAC为A,目的IP为B,目的MAC地址为C,
C接收到这个包,检查路由表,发送到下一跳D,源IP为A,源MAC为C,目的IP为B,目的MAC为D……
如此循环,直到发送到B.
动态路由,静态路由,直连路由哪个优先级更高
直连路由不需要配置,路由器自动感知链路,自动关联接口
静态路由,网络管理员使用命令配置路由
动态路由,路由器自动建立路由表,根据网络拓扑状态自动调整

苹果系统为什么运行速度比安卓系统快

  1. 安卓系统应用程序运行在基于linux内核之上的虚拟机中,应用程序用java编写,java内存机制不适合使用在移动设备上。Java垃圾回收机制,规定内存低于某个值就会选择性关闭程序,平常程序常驻内存,下次打开就很快。但大型软件运行时因内存不足就关闭其他应用,频繁访问内存,导致变慢。 苹果系统没有垃圾回收机制,用户返回桌面时程序会暂停,不会后台运行。
  2. Ios最先响应屏幕,响应顺序为touch media service core。Android 响应顺序是application framework library kernel ,优先级较低
  3. Ios基于gpu加速,减轻cpu负担,Android 严重依赖cpu运算靠程序本身加速和渲染。
  4. Ios系统封闭性,对app开发框架限制。Android开发应用要兼容cpu gpu
    解释一些重载,重写,多态以及区别
    多态:采用动态绑定技术,通过基类的指针来操纵对象,如果对象是基类对象,就调用基类函数,如果是派生类对象就调用派生类函数。一个操作随着传递或者捆绑对象类型的不同能做出不同的反应。

OSPF与RIP的定义与区别
Rip分布式的基于距离向量的路由选择协议,ospf分布式的基于链路状态的路由选择协议
Rip和相邻的路由器交换路由表,固定时间间隔交换
Ospf向本自治系统所有路由器发信息,交换的是本路由器周边网络的拓扑,当网络状态改变时,洪泛法发送信息
Rip知道当前路由器到所有路由器的距离以及下一跳路由器是哪个,不知道全网的拓扑结构。好消息传的快,坏消息传的慢,慢收敛
Ospf快收敛
Rip用udp传送,ospf用ip数据报传送

1、HTTP/HTTPS的区别

  1. http是超文本传输协议,明文传输。https是用SSL协议加密后的http协议,属于加密传输协议。
  2. http端口为80,https端口为443.
    3.http连接简单,无状态。https加密传输、身份认证,安全。

2、SSL如何加密
1.身份验证机制
数字签名来验证通信对端的身份,非对称密钥算法实现数字签名
2数据传输机密
利用对称密钥算法对通道数据加密解(对称:DES/3DES/AES)
3消息完整性验证
避免网络中数据被篡改,MD5/MAC算法保证消息完整性。
4非对称密钥算法保证密钥本身安全
利用RSA算法加密传输密钥
5 PKI保证公钥的真实性

4、僵尸网络是什么
通过一种或多种传播手段,使大量的主机感染僵尸程序的病毒,在控制者和被感染者之间形成一个可控制的网络。

5、僵尸网络被感染的地方是什么

  1. 攻击漏洞,在shellcode执行bot程序注入代码
  2. 邮件病毒,邮件附件中有僵尸程序或者执行bot程序的连接,通过邮件客户端的漏洞执行
  3. 恶意网站脚本
  4. 特洛伊木马伪装成有用的软件

6、了解DNS协议吗
域名解析

7、是一个怎样的结构
报文头—查询请求----应答----授权应答----附加信息

8、为什么他要是分布式的呢
当今因特网数量大,主机数持续增长,如果是单点式则会有单点故障,延迟,开销大。

9、了解HOST吗
存储计算机网络中各个节点信息的计算机文件,负责将主机名称映射到ip地址,用于补充dns的功能,用户可以对hosts文件进行控制

16、死锁有什么处理方法:

  1. 预防死锁
    资源一次性分配
    可剥夺
    资源有序分配
  2. 避免死锁
    银行家算法,(分配前评估,若分配后导致死锁则不分配)
  3. 检测死锁
    建立资源分配表,进程等待表
  4. 解除死锁
    从其他进程剥夺资源给死锁进程
    撤销死锁进程
    19、其实这个现在也不经常用了,那好吧下一个问题强制结束一个进程用什么命令
    先用 ps -ef查看杀死进程的pid
    然后 kill -pid
    避免僵尸进程,杀死父进程前应该杀死所有子进程

21、除了kill -9以外还可以有什么数字
这个会使进程在运行时强制终止,进程结束后不能自我清理会导致资源无法正常释放。使用这个时必须ps -ef确保没有留下僵尸进程。

22、各个数字分别有什么作用

23、那你有没有思考过kill -9以后操作系统内部发生了什么呢

TCP首部,UDP首部
Tcp :源端口 16 目的端口 16 序列号32 回应序号32 tcp头长度4 reserved 6 控制代码 6 窗口大小16 偏移量16 校验和16 选项32(可选)
Udp:源端口 16 目的端口 16 长度 16 校验和 16

HTTP1.0,1,1的区别
1.http1.0默认短连接,浏览器和服务器之间每一次http操作就建立一次连接,任务结束就终端。
2.http1.1默认建立长连接,当网页打开后客户端和服务器之间传送http数据的tcp连接不会关闭,如何客户端再次访问这个服务器的网页,会继续使用这条已经建立好的连接。

状态码307(临时重定向)

  1. 100-199表示请求收到继续处理
  2. 200-299表示成功
  3. 300-399表示资源重定向
  4. 400-499表示客户端请求出错
  5. 500-599表示服务器端出错
  6. 200响应成功
  7. 302跳转、重定向
  8. 400客户端有语法错误
  9. 403服务器拒绝提供服务
  10. 404请求资源不存在
  11. 500服务器内部错误

2.对软件测试这个工作有什么了解,平时一般通过什么途径自学
软件测试是为了捕捉软件中的错误,是一种经济高效的保证软件质量的方法。软件测试快速发展,充满挑战。一些传统测试可能会被自动化测试替代,但对于自动化软件开发、安全测试、性能测试、可靠性测试等还是需要专业人员操作。伴随着云计算、物联网、大数据的发展,测试技术可能会有更新,需要更加了解应用场景,具有更深厚的测试基础。
软件测试需要早发现问题和发现别人还没发现的问题,这样才能使解决问题的成本降低。
测试项目的具体工作:搭建测试环境、编写和执行测试用例、写测试计划和报告、提交bug表单并跟踪bug修改、编写脚本执行自动化测试、进行性能测试压力测试等

三次握手

  1. 第一次握手,建立连接时,客户端发送SYN包给服务器,并进入SYN_SENT状态,等待服务器确认
  2. 第二次握手,服务器收到SYN包,必须确认客户端的SYN,自己也要发送一个SYN,于是发送SYN+ACK包,服务器进入SYN_RECV状态
  3. 第三次握手,客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,发送完毕后服务器和客户端都进入ESTABLISHED状态

你可能感兴趣的:(个人笔经面经)