测试开发工程师相关知识

数据库

1. 在 student_course 表(sid, cid, score) 查询课程 1(cid=1) 成绩第2高的学生

2. 数据库查询慢怎么优化

3. 存储过程与自定义函数的区别
1)存储过程实现的功能要复杂一些;
而函数的针对性更强;
(在实际过程中,很少使用函数来对表进行操作)
2)存储过程可以返回多个值,而函数只能有一个返回值;
3)存储过程一般独立的来执行;
而函数可以作为其他SQL语句的组成部分来实现。

数据结构

**1.

手撕代码

1. 将一个输入数组转化为一个字符串序列

2. 查找数组中重复的数字并输出,要求输出的数字不重复

3. 求连续子数组的最大和

4. 6位数字旋转180°正常的概率,和原来一样的概率

5. 找到链表的第k个节点,并删除

**6.

操作系统

1. 变量声明和定义,内存分配时有啥区别?

2. 死锁是因为什么?怎么解决?

3. 进程与线程的区别。
1)进程是资源分配的基本单位;
线程是分配处理机的基本单位,它与资源分配无关;
2)一个线程只能属于一个进程;
而一个进程可以有多个线程;
3)一个程序至少有一个进程,一个进程至少有一个线程;
4)进程在执行过程中拥有独立的内存单元;
而多个线程是共享内存,极大地提高了程序的运行效率;
(线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉)
5)线程在执行过程中需要协作同步;
不同进程间要利用消息通信的方式实现同步。

**4.

计算机网络

1. HTTP协议

2. FIR和IIR

3. 对面向对象的理解

4. TCP的三次握手和四次挥手

5. 输入一个URL,但是没有访问到预期的网站,是什么原因?
1.DNS坏掉了,修改自己的IP地址为8.8.8.8试试
2.网络断了
3.服务器拒绝访问
4.请求或者响应在网络传输中途被劫走了

如何排查?
从七层网络的角度进行逐层分析,
物理层-即网线有没有连接;
数据链路层-即网口的灯有没有亮;
某层-可以查询本机的IP地址,根据IP地址和子网掩码的计算结果查看是否和网关在同一子网,还应检查DHCP动态分配的IP地址,看是否和网关在同一个子网;
检查本地ARP表中网关的IP地址和MAC地址是否对应。

OSI七层模型解决网络故障实战思路
物理层故障原因:①设别电源未打开 ②设别电源未接通 ③网络电缆松脱 ④电缆故障 ⑤电缆类型不正确
数据链路层故障原因:①设别驱动程序出错 ②设备没有安装驱动程序 ③设备配置错误
网络层故障原因:①IP地址是否设置正确 ②子网掩码是否正确 ③网关是否正确 ④DNS或DHCP是否正确
网络层常用的排除故障的命令包括:ipconfig命令、ping命令、tracert命令
传输层故障原因:①防火墙设置错误 ②应用程序的TCP的端口是否被打开
会话层、表示层、应用层故障原因:这三层主要涉及使用软件的故障原因,把应用软件设置正确,问题迎刃而解。

6. 在浏览器中输入一个网址它的运行过程是怎样的?
1.首先进行域名解析,*域名解析具体过程讲一下:
浏览器搜索自己的DNS缓存,缓存中维护一张域名与IP地址的对应表;
若没有,则搜索操作系统的DNS缓存;
若没有,则操作系统将域名发送至本地域名服务器(递归查询方式),本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则,通过以下方式迭代查找:
本地域名服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器的地址;
本地域名服务器向com域的顶级域名服务器发起请求,返回权限域名服务器地址;
本地域名服务器向权限域名服务器发起请求,得到IP地址;
本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来;
操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
至此,浏览器已经得到了域名对应的IP地址。
*2.浏览器发起HTTP请求;

3.接下来到了传输层,选择传输协议,TCP或者UDP,TCP是可靠的传输控制协议,对HTTP请求进行封装,加入了端口号等信息;
*4.然后到了网络层,
通过IP协议将IP地址封装为IP数据报;然后此时会用到ARP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,找到目的MAC地址;
5.接下来到了数据链路层,把网络层交下来的IP数据报添加首部和尾部,封装为MAC帧,现在根据目的mac开始建立TCP连接,三次握手,接收端在收到物理层上交的比特流后,根据首尾的标记,识别帧的开始和结束,将中间的数据部分上交给网络层,然后层层向上传递到应用层;
*6.服务器响应请求并请求客户端要的资源,传回给客户端;

7.断开TCP连接,浏览器对页面进行渲染呈现给客户端。

7.单工、半双工、双工的含义
单工: A收B发;
半双工: A收B发和B收A发都可以,但是不能同时进行;
双工: A向B发送的时候同时还可以接收到B发送给A的信号。

**8.

C/C++语言知识

1. vector insert和push_back有什么区别?

2. malloc 和 new 的区别?

3. 软件开发流程

**4.

linux知识

1. 如何查看linux内核版本?
方法1:

1
cat /proc/version

方法2:

1
uname -a

方法 3:

1
lsb_release -a

2. shell脚本的第一句是什么?有什么作用?

1
#!/bin/bash

作用:执行解释器环境

3. find默认的查找目录

1
find

4. 查询进程的pid

查看进程:
1)ps 命令用于查看当前正在运行的进程。
grep 是搜索
例如: ps -ef | grep java
表示查看所有进程里 CMD 是 java 的进程信息

2)ps -aux | grep java
-aux 显示所有状态

3)kill 命令用于终止进程
例如: kill -9 [PID]
-9 表示强迫进程立即停止

通常用 ps 查看进程 PID ,用 kill 命令终止进程

5. Linux的启动顺序
1)内核的引导;
2)运行 init;
3)系统初始化;
4)建立终端;
5)用户登录系统。

**6.