操作系统
6种进程间通信的方式?信号、信号量、管道、socket、共享内存、消息队列
堆栈溢出的原因?递归的循环调用、大数据结构的局部变量
数据在内存中的结构分为?逻辑结构和物理结构
操作系统采用缓冲技术可以减少CPU的什么次数?中断次数
进程的状态:就绪态、运行态、阻塞态
死锁是多个线程争抢系统资源造成的一种僵局,若无外力作用,则所有进行都不会继续执行
死锁的四个条件:互斥、请求和保持、循环等待、不可剥夺
数据结构与算法
什么是算法?算法是解决问题的有限运算序列
数据在内存中的逻辑结构分为?集合结构、树形结构、图形结构、线性结构
用过递归吗?递归解法通常比非递归解法要慢还是要快?递归比非递归要慢,因为要用到栈
常见的排序算法有哪些?冒泡、选择、插入、希尔、归并、快排、基数排序、计数排序、堆排序、桶排序。这些排序算法中,比较稳定的排序算法是什么?稳定的定义是什么?举个例子,在一个待排序序列中存在两个相同的数A B,但是在排序过后,如果这两个相同的数的前后顺序没有变化(还是A在前B在后),就是一个比较稳定的排序算法。较为稳定的排序算法有冒泡、插入、归并。
计算机网络
OSI七层模型?物理层、数据链路层、网络层、传输层、表示层、会话层、应用层
TCP/IP标准模型?数据链路层、网络层、传输层、应用层
网络端口的端口范围受限于什么?端口范围受限于系统的文件句柄数量
HTTPS是采用什么方式进行数据的加密传输的?SSL和TLS
TCP协议和UDP协议的相同之处是什么?校验和、提供源端口号和目的端口号
TCP协议和UDP协议的区别:
1. TCP是面向连接的,传输信息之前要双方建立连接,UDP是无连接的,传输数据之前不需要建立连接;
2. TCP是稳定传输的,传输的数据是按序到达的,UDP是尽最大可能交付的,UDP协议不会保证数据都能按序完整到达,可能会存在丢包的现象;
3. TCP通信是一对一的,但是UDP的通信方式可以是一对多、多对一、多对多;
4. TCP是面向字节流的,UDP是面向数据报的;
GET和POST的区别
1. 传参方式不同,get请求将请求参数防止在URL中,post将请求参数放置在请求体中;
2. post方式更加安全,post请求的数据不会被存储在浏览器浏览记录和服务器日志中,但是get请求如果请求的是静态资源就会存储在本地数据中,如果get请求的是数据的话,就不会缓存;
3. get用于请求服务器资源,post用于修改或对添加服务器资源
4. post请求发送的数据种类更多,get请求只能发送ASCII码;
三次握手
第一次握手:客户端向服务器发送建立连接的请求,将SYN置一
第二次握手:服务器接收到了客户端发来的建立连接的请求,向客户端发送SYN/ACK的确认信息
第三次握手:客户端接收到了服务器发来的确认包,回传一个ACK包,表示连接建立成功,可以开始传递数据了
四次挥手
第一次挥手:客户端发送FIN,用于关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态
第二次挥手:服务器收到FIN后,向客户端发送ACK,服务器进入CLOSE_WAIT状态
第三次挥手:服务器发送FIN,用于关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态
第四次挥手:客户端收到服务器发来的FIN之后,发送ACK给服务器,服务器关闭。
常见状态码
200 OK
302临时重定向
301永久重定向
304缓存资源加载成功
400 bad request请求中存在语法错误
401 unauthorized 未经允许的
403 forbidden权限不足
404 资源没有加载出来或者资源不存在
500 服务器内部出现错误
编程
重载的基本条件?函数名称相同,作用域相同,参数的类型不同、顺序不同、个数不同
break语句可以用在什么语句中?switch for while do-while
程序的三种基本控制结构是?顺序结构、选择结构、循环结构
数据库
子查询是什么?子查询是嵌入到另一个查询语句之中的查询语言
软件测试
具有风险分析的软件生命周期模型的是?螺旋模型
软件生命周期中花费时间最长的阶段是?软件维护阶段
软件测试用例包括什么?包括输入数据和预期的输出结果
什么是区分黑盒测试和白盒测试的依据?是否能看到被测试的源程序
Linux
Linux哪些命令可以查看文件内容?tail、less、cat
linux中更改文件访问权限的命令是?chmod +增加权限-减少权限x可执行权限r可读w可写
chmod和chown?chmod是设置权限,控制用户对文件的权限的命令; chown是将指定文件的拥有者改为指定的用户或组。
linux系统默认使用的shell(用户命令解释器)是什么?bash==>bourne again shell
linux系统文件应该存放的位置?
/bin,bin 是 Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命令。
/etc,etc 是 Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录;
/dev,dev 是 Device(设备)的缩写,该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的;
/lib,lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
进程挂起的命令?
fg是将进程放到前台并唤醒
bg是将进程放到后台并唤醒Ctrl+z挂起进程
vim编辑器命令?
:q 不保存退出
:q! 不保存直接强制退出,不写入修改的数据
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间
:wq! 强制写入并退出(只有当操作者是文件所有者才可行)
:x 文件有变动时等同于 :wq,文件无变动时等同与 :q
ZZ 等同于 :x
linux中默认情况下一个进程最多能打开多少个文件?
1024 可以通过ulimit -a查看
查找命令
whereis 可查询二进制文件(-b)、帮助文档(-m)、源程序(-s),无选项时,返回所有结果,-u(除上述三种的其它文件)
which 查看可执行文件的位置
whatis 查询命令有什么功能
apropos 搜索指定关键字的命令
Linux fork多进程中,子进程可以继承父进程哪些内容?
子进程继承父进程
- 用户号UIDs和用户组号GIDs
- 环境Environment
- 堆栈
- 共享内存
- 打开文件的描述符
- 执行时关闭(Close-on-exec)标志
- 信号(Signal)控制设定
- 进程组号
- 当前工作目录
- 根目录
- 文件方式创建屏蔽字
- 资源限制
- 控制终端
子进程独享:
- 进程号PID
- 不同的父进程号
- 自己的文件描述符和目录流的拷贝
- 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
- 不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。
子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
vim编辑器清除文本的命令?
- dd:删除当前行(0:返回行首)
- ndd:删除光标行往下n行(含光标行)内容
- dgg:删除光标当前行及以上内容
- dG:删除光标当前行及以下内容
- dH:删除当前页面第1行至光标行
- p:粘贴到光标下一行
- u:撤销一次操作
- Ctrl+r:反撤销一次操作
Windows
Windows设置60秒后重启的命令?shutdown -r -t 60 shutdown-r是重启shutdown-s是关机