深信服笔试错题

------------恢复内容开始------------

1:指针读到了末尾,feo(fp)的返回值是多少

feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值),文件结束符只能被clearerr()清除。(这里的检测流上的文件结束符就相当于声卡检测电流信号的一个过程)

所以读到末尾,文件结束,返回非0值

2.哪种网络攻击不属于DDOS攻击

A . IP Spoofing攻击   地址仿冒,伪造IP地址发送报文 属于单包攻击范围
B . SYN Flood攻击
C . ICMP Flood攻击
D . Tear Drop攻击

)DOS(Denial of Service)攻击,即拒绝服务,其主要危害是使计算机或网络无法提供正常的服务。
常见的DOS攻击手段有TearDrop、Land、Jolt、IGMPNuker、Boink、Smurf、Bonk、OOB等
2)DDOS(Distributed Denial of Service)攻击来说,即“分布式拒绝服务”,它是属于DoS攻击的一种。DDOS攻击主要是将多个计算机联合起来,并对一个或多个目标计算机/服务器发动攻击,从而攻击的威力会成倍增加。这种攻击的特点是它利用了TCP/IP协议的漏洞

2、区别: 最大区别是人多力量大。
1)DOS攻击侧重于通过对服务器特定的漏洞,利用DOS攻击导致网络连接失败、系统崩溃、电脑死机等情况的发生。
2)DDOS攻击则通过很多“僵尸主机”向目标主机发送大量“看似”合法的流量包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。

SYN Flood攻击 DDOS

利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。现在有很多实施SYN FLOOD的工具,呵呵,自己找IP欺骗DOS攻击

IP Spoofing攻击   地址仿冒,

伪造IP地址发送报文 属于单包攻击范围 这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。
   攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务去吧。

ICMP FLOOD

是一种DDOS攻击,该攻击在短时间内向目的主机发送大量ping包,消耗主机资源,主机资源耗尽后就会瘫痪或者无法提供其他服务。

Teardrop攻击 DOS

是一种畸形报文攻击。是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。

linux什么代码可以显示进程树状结构图

pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,

系统调用fork可以创建子进程,

通过子shell也可以创建子进程,

Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。

显示当前所有进程的进程号和进程id

pstree -p <pid> 查看某个进程的树型结构:

pstree -p

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。

pstree  -a

LINUX里,父进程退出了,子进程一定会退出吗?

不会若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。

Linux里进程退出的话,线程也会连着退出。如果需要用父进程回收子进程,就要在父进程里使用waitpid,这个函数会让父进程阻塞,直到子进程执行完成。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。

经过NAT路由,什么不会发生变化

NAT——网络地址转换,是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的 IP 地址。这样,通过在内部使用非注册的 IP 地址,并将它们转换为一小部分外部注册源IP映射成公网地址IP   源MAC变成当前接口的MAC 并且添加端口映射,避免引起冲突的 IP 地址,从而减少了IP 地址注册的费用以及节省了目前越来越缺乏的地址空间(即IPV4)。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。

源IP映射成公网地址IP   源MAC变成当前接口的MAC 并且添加端口映射,避免引起冲突

目的IP不变  目的MAC变成下一跳的mac,注意当数据报文从目的端发回来的时候要去掉上面的端口。

路由转发的话,源ip和目的ip是不发生变化的

字符串指针

char *str = "hello C language";

是正确的

 

 

 

 

 

数组形字符串存放在全局数据区或栈区,可读可写。指针字符串存放在常量区,只读不能写

 

 

 

 

 

y=ntse

X【n】的位置上是/0结束符

x++后正常输出,但是y一开始就是结束符,所以为空

 

 

 

主流使用网关冗余的配置是什么

a GLRP b代理ARP cVRRP dHRSP(这个)

代理ARP也是可以实现网关冗余的,即当路由器r1 down的时候那么路由器左端的主机就都会把数据包交给路由器r2来处理,当然这中间有个时间问题,要等pc机的arp表老化时间到期才可以实现自动切换。

所谓HSRP即是热备份路由协议,它是cisco公司私有的,即它只能在当网路中所有设备都是Cisco的时候才能配置工作,它最大的功能就是可以实现网关的冗余,不存在代理ARP的问题,它通过建立一个HSRP组即虚拟路由器来实现网关冗余功能,当网络中的某一台路由器出故障之后,它可以自动的切换到另一台路由器进行正常的数据流转发功能,在HSRP中的路由器有以下几种:

                                                                          1.活跃路由器:即是对发往虚拟IP地址的数据流进行转发了,这就是它的主要职责。

                                                                          2.备份路由器:顾名思义就是活跃路由器的一个备份了,当活跃路由器down掉之后那么这个备份路由器就起身成为活跃路由器,代理活跃路由器进行数据流的转发工作。

                                                                          3.其他路由器:这个不用解释了。

                                                                           4.虚拟路由器:可以把它看做是一个HSRP组,它由许多路由器构成,具体由那台路由器进行数据流的转发工作,那就看路由器的身份了。

 

同样的一个HSRP组的路由器启动的时候都要经过六个状态:

 

1.起始状态(init) 2.监听(listen) 3.学习(learn) 4. 发言(speak) 5.备份(standy) 6.活跃(active)

 

最后需要注意一点的是HSRP不仅可以实现网关冗余功能,还可以实现负载均衡,但是要实现负载均衡的话需要我们利用HSRP的特性自己加以配置,在同一台路由器上配置多个HSRP组,然后分别为客户机指定不通的网关即可实现。

 

 

3.VRRP

 

VRRP跟HSRP不同的是,它是公有的协议,不是Cisco私有的协议,至于其他的特性就跟HSRP几乎一样了,要注意两点,一个是端口跟踪跟HSRP不一样,第二个是在VRRP中show vrrp brief 并不能知道vrrp组中的Backup路由器是谁,即它不知道谁是备份的路由器,而HSRP中show standy brief是可以知道HSRP组中的active是谁,standy是谁。

 

 

 

 

 

 

 

 

 

 

GLBP即使网关负载均衡协议,也是Cicso公司的私有协议,它跟HSRP和VRRP相比就是它不仅具备网关冗余的功能,它本身还可以实现数据转发的自动负载,即对数据进行分流,它可以支持网络中最多4台用作可用网关的成员路由器,但是在目前来说,网络中运用的最广的还是HSRP热备份路由协议。

软中断硬中断

1.软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的 
2.软中断是由程序调用发生的,而硬中断是由外设引发的 
3.硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等侍较长时间 

请求磁盘用的硬中断

编程异常是软中断。

数据结构包括数据的逻辑结构、数据的存储结构、数据的运算

vector有几种属性

vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。

        vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器分配的是一块连续的内存空间,每次容器的增长,并不是在原有连续的内存空间后再进行简单的叠加,而是重新申请一块更大的新内存,并把现有容器中的元素逐个复制过去,然后销毁旧的内存。这时原有指向旧内存空间的迭代器已经失效,所以当操作容器时,迭代器要及时更新。

3个迭代器,一个头部一个尾部,一个空间容量

 

linux查看内存使用情况的命令有 top free cat proc

 

cross-sitXSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,e scriping 称xss

 

XSS攻击是一种注入, 通过这种攻击,恶意脚本被注入到被信任的网站里。

 

XSS攻击的表现是,攻击者使用web应用的缺陷,发送恶意代码到另外一个不同用户, 一般是以浏览器端脚本的形式发送。

 

这种使得攻击成功的缺陷是相当广泛的,并存在于这种web应用中, 应用使用用户输入数据,放到网站输出的响应中,但是没有对输出的用户输入数据 进行 校验 和 安全性转码。

 

浏览器收到带有恶意脚本的HTTP响应, 但是其没有办法确定恶意脚本是不可信的,因为此响应来自可信任的网站,

 

所以浏览器会执行恶意脚本, 这些恶意脚本可以访问 cookie、会话token、和其他敏感信息,它们都被浏览器端保存,在此网站中被使用。恶意脚本甚至可以重写 HTML页面内容。

 

 

XSS攻击发生,当下面条件成立:

 

1、 数据输入到web应用中, 通过非可信的手段, 最常见的是web请求。

 

2、 数据被输出到动态网页内容中, 网页内容会被发送到web用户, 缺少对恶意内容的校验。

 

恶意内容通常形式为 javascript、HTML、flash 和任何浏览器可以执行的其他代码。

 

基于XSS攻击的形式几乎无穷,但是通常包括:

 

1、 发送私密数据给攻击者,例如cookie和会话信息。

 

2、 重定向到攻击者控制的网站页面上。

 

3、 以缺陷网站的幌子,在用户机器上执行其它恶意操作。

 

 

y=(x=2,5);
逗号表达式。求出变量内部的值,逗号表达式最后的值就是y值

 30枚面值不全相同的硬币摆成一排,甲、乙两个人轮流选择这排硬币的其中一端,并取走最外边的那枚硬币。如果你先取硬币,能保证得到的钱不会比对手少吗? 

数一下奇数位 和 偶数为 的和哪个大,因为先取的人总有办法全取奇数位或者全取偶数位置

 

 

一、TCP简介

  1.TCP介绍

    a>TCP协议:TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为:TCP)是一种面向连接的、可靠的、基于字节流的通信协议

    1.面向连接:先连接,再通信,好比打电话模型

    2.可靠的,相对于UDP,TCP传输更可靠,TCP通过一序列的机制(面向连接机制、发送应答机制)来保障传输的可靠性

    3.基于字节流的,UDP创建UDP socket——DGRAM:基于数据报通信方式,每一次发送的数据都是一个独立的整体,包含目标主机的ip地址、端口号及发送数据的内容

    b>TCP通信的三个步骤

    基于面向连接的:1.与服务端建立连接

            2.收发数据

            3.关闭连接

  2.TCP特点

    a>面向连接

    1.先建立连接,再进行通信

    2.TCP连接是一对一的,而UDP可以一对一或一对多,UDP适合做广播程序

    a>可靠传输:通过一序列机制来保障TCP传输数据比UDP更可靠

    1.传送应答机制

    2.超时重传机制

    3.错误校验

    4.流量控制/阻塞管理

  3.TCP与UDP的不同点

    1.面向连接

    2.有序数据传输

    3.重发丢失的数据包

    4.丢弃重复的数据包

    5.无差错的数据传输

    6.阻塞/流量控制

  4.TCP与UDP的应用场景

    1.TCP的应用场景:适合通信质量要求较高的场景,http传输、文件传输、smtp等等,目前大部分的传输都是基于TCP协议传输

    2.UDP的应用场景:相对于TCP传输,UDP传输速度更快,实时性更好,耗资源更少,但稳定性、可靠性比TCP差,适合对网络通讯质量要求不高,速度要求尽量快,更实时,比如QQ语音,QQ视频

  5.UDP与TCP的通信模型

    a>UDP通信模型

      面向无连接,好比写信模型,没有严格的服务端与客户端之分

    b>TCP通信模型

      面向连接的,好比打电话模型,有严格的服务端与客户端之分

 

https://www.cnblogs.com/python58/p/10426188.html

 

TCP三次握手

 

 

 

 Http协议

\1. 客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.luffycity.com

\2. 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

\3. 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

\4. 释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

\5. 客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

linux常用命令
find查找文件
ls 命令,展示文件夹内内容
cd 切换文件夹
tree 显示树型的层次逻辑结构
cp 复制
rm 删除
mv移动文件
pwd查看当前目录的完整文件
mkdir 创建目录
rmdir删除目录
gzip 压缩文件
ps 显示运行的进程
kill 杀死进程
 crontab命令是启动linux定时任务的服务
free 命令用于显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer
. top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器:
chmod命令:更改文件权限,子文件也会更改
 chown命令改变文件所有者:
 chgrp命令,改变文件所属组:
 useradd 命令建立用户账号:
 usermod 修改用户信息:
userdel 删除用户:
groupadd 命令用于将新组加入系统:
 groupdel 命令删除组:
 sudo 用来以其他身份来执行命令,预设的身份为root:
 passwd 设置用户的密码:
 groups 显示用户所属组:
cat 用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 
more 命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能:
less 命令用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
tail 从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文
. head 命令用于显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行:
diff 命令用于比较两个文件或目录的不同:
ping 用于确定主机与外部连接状态
ssh 命令用于远程登录上Linux主机:
 scp 命令是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的:
telnet 命令用来远程登录操作:
wget 是从远程下载的工具:
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置:
route
-c  # 显示更多信息
-n  # 不解析名字
-v  # 显示详细的处理信息
-F  # 显示发送信息
-C # 显示路由缓存
-f  # 清除所有网关入口的路由表。 
-p # 与 add 命令一起使用时使路由具有永久性。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新
ln 命令是为某一个文件在另外一个位置建立一个同步的链接
1.查看linux版本:cat /proc/version

2.查看Linux版本: uname --all

3.查看php版本:php -v
查看PHP扩展库: php -m
查看MySQL版本: mysql -V
查看Nginx版本:nginx -v(或者大V)

4.查看gcc版本:gcc --version

5.查看cmake版本:cmake --version

6.查看PHP ini位置:php --ini
或者使用:locate php.ini
或者:find / -name php.ini

7.查找文件或文件夹:locate bb.php
可在搜索前更新updatedb

8.重启PHP服务:service php-fpm restart
重启nginx:service nginx restart(关闭nginx -s stop)
执行nginx -c /usr/local/nginx/conf/nginx.conf

9.删除文件:rm -rf test.com
如果出错则进入该目录执行:执行一下 lsattr -a 查看所有文件(包含隐藏的),然后执行 chattr -i .user.ini改变此文件的权限

10.添加文件三种方式:vim abc.log
或者:touch abc.log (创建空文件)
或者:echo ‘’ | cat > hello.txt (创建空文件)
创建文件夹:mkdir ts
修改文件夹权限:chmod -R 777 ts 或者 进入文件夹中:chmod -R 777 *

11.查询某个端口是否被占用:lsof -i :9501 如果有php进程存在说明被占用。
杀死该端口:kill -9 5991(进程标识符)
查询所有正在监听运行的端口:( tcp端口:netstat -ntpl ) ( udp端口:netstat -nupl )

12.查看文件:
一:cat -n :查看小文件(行数小于1000行以下的)用cat -n /www/server/php/72/etc/php.ini
二:more :查看大文件(行数几千行)用more /www/server/php/72/etc/php.ini 回车看下一行,空格看下一屏幕, Q退出,B 上一屏。
三:less:配合 [pageup] [pagedown] 等按键的功能来往前往后翻看文件
四:tail -f a.log 可以查看文件最后增加的内容
五:head -n 20 /www/server/php/72/etc/php.ini 显示前20条

13.查找文件中的关键字 :进入文件 vim /www/server/php/72/etc/php.ini 然后/swoole(关键字) 即可

14.保存文件:
:wq 保存编辑的文件 (卡死时调用ctrl+Q , ctrl+w是撤回输入)
:q! 为不保存文件

15.查看所有用户:cat /etc/passwd 显示的信息是:用户:密码 :uid:gid:说明:家目录:用户使用的shell
添加用户:useradd 用户名
删除用户:userdel 用户名

16.查看登陆日志 last -9
清除登陆系统成功的记录: echo > /var/log/wtmp //此文件默认打开时乱码,可查到ip等信息

17.修改用户密码:在root账号下passwd +用户账号 如:passwd zhou .
修改root密码直接passwd

18.查看某个软件是否安装:rpm -qa | grep logwatch
或者 yum list installed(或者logwatch)
两者都没有说明没有安装

19.查看进程:
四种任选其中一种

top 
ps aux
ps -elf
pstree -aup
[/b]

 软件测试可能不像研发岗一样,可以得到很多有趣的东西,但是软件测试可以将


MySQL:随机查询十条语句
复制代码代码如下:

SELECT * FROM T_USER  ORDER BY  RAND() LIMIT 10

 

 

一.extern修饰变量和函数

 

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern声明不是定义,即不分配存储空间。

 

bug常用定位工具:

性能测试维度有:cpu占有率,帧率,内存,电量,启动时长,网络流量

Apache是一种跨平台,采用模块化设计的服务器。

数据库查询很慢,没有索引,优化查询,内存不足,io吞吐量小

局域网通连不上外网  ping路由器的地址,看是否准确

monkey做一些压力测试

勒索病毒,利用加密算法对文件加密

hadoop:利用服务器集群,根据用户自定义逻辑,对海量数据进行分布式处理

url地址链接:200顺利连通,404就是连接失败

如何测试浏览器打开目标网站,用f12打开network,查看加载速度

page speed分布式测度工具

功能测试:

不输入,输入正确的错误的,登录成功是否转进正常页面,验证码,,密码加密,特殊字符

性能测试:打开要多久,转换到登录状态要多久

安全测试:

登录成功的cookie是否是Httponly的

用户名密码的输入框,应该屏蔽SQL注入攻击

禁止输入脚本(XSS)攻击

错误登录限制

一个用户不同机器上登录

兼容性测试

浏览器是否能显示正常

搜索成绩。使用jmeter对数据库进行压力测试,用多个线程200,进行循环,链接数据库,查看结果树。

野指针是指指针指向位置不准确的,未初始化或者没有free的

无限传输协议:wifi,红外线,蓝牙

纸杯测试用例

纸杯特性:形状,材料,防摔能力,耐温性,涂色剥落,

影响范围:液体多少时候漏水,热水多少时候会变温,冰水融化,

安全测试:异味,装可乐化学反应

性能测试,不同人群是否能喜欢被子形状

安全性测试:

SQL注入  输入的合法性不严,用查询语句

四道防护1便利所有的提交到服务器的程序,程序级安全仿注入系统,禁止外部提交表单,使用存储过程做参数查询

使用正则表达式过滤传入的参数,预编译语句集

Xss 利用开发漏洞注入恶意指令

对输入进行过滤,对输出进行编码,容易被xss攻击的边角字符替换成全角字符,使用httponly

http接口测试

创建httpclient实例,创建连接,实例来链接、读reponse,释放链接

bug定位  f12    network

明确现象:闪退,操作无响应

是否必现

前后端定位:崩溃日志,抓包,相应没有数据,后端数据未返回,如果有数据,前端显示错误

后端问题:通过日志,查看代码(第三方调用异常,数据库数据错误)

前端问题:字段未判空,数据处理错误

 

 

 

 
posted @ 2020-02-22 00:44  yzw的小木屋  阅读(797)  评论(0)    收藏  举报