计算机基础知识面试题集合(包含计网OSI、TCP/IP、HTTP、TCP、UDP、三次握手、四次挥手、OS进程线程、死锁,常见数据结构及排序,Linux常用命令、数据库基础等。)

超级详细的面试计算机基础知识问题集合(包括计网(TCP\UDP\HTTP), 数据结构(常用结构及排序查找算法), 操作系统(进程线程及死锁相关), Linux, MySQL)

目录

  • 一、软测知识
  • 二、计算机基础知识
    • 2.1 计算机网络
      • 2.1.1、OSI七层模型与TCP/IP四层模型。
      • 2.1.2、URL、HTTP、HTTPS、浏览器进入一个网址的过程、Cookie。
      • 2.1.3、TCP三次握手四次挥手。
      • 2.1.4、TCP拥塞控制
      • 2.1.5、TCP与UDP的区别。
      • 2.1.6、其他常见协议。
      • 2.1.7、HTTP与HTTPS。
    • 2.2 操作系统
      • 2.2.1、进程线程的关系。
      • 2.2.2、死锁的条件,死锁的解决办法。
    • 2.3 数据结构
      • 2.3.1、常见数据结构有哪些
      • 2.3.2、排序算法及比较
    • 2.4 其他问题
      • 2.4.1、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
  • 三、Linux
    • 3.1、Linux基本命令
    • 3.1、常问语句
  • 四、MySql
    • 4.1 数据库概念
    • 4.2 SQL语句
      • 4.2.1 学生课程信息表:
    • 4.3 索引
    • 4.4 其他问题
      • 4.4.1、数据库分页分表,分页查询
      • 4.4.2、优化数据库,提高数据库的性能:

一、软测知识

软测

二、计算机基础知识

2.1 计算机网络

2.1.1、OSI七层模型与TCP/IP四层模型。

OSI:
想要比较这两个模型,就不得不提及他们的历史。
OSI是法定的参考标准,是一堆老头(ISO国际标准化组织)聚集在一起研究出来的,它提出了一系列标准化的名词,如协议、服务、接口等。但是等OSI提出的时候,市面上已经使用了另一种模型——TCP/IP
TCP/IP之所以叫这个名字,是因为在他的协议栈中,TCP和IP占了非常重的位置。虽然没有标准的理论,没有标准的名词,没有标准的规范,但他所解决的是实际应用中的问题。这也就是与OSI最大的不同,一个只有理论没有实践,一个只有实践没有理论。
下图是他们的比较:
在这里插入图片描述

2.1.2、URL、HTTP、HTTPS、浏览器进入一个网址的过程、Cookie。

先认识一下URL:
URL是统一资源定位符,通常就是我们所使用的网址,格式如下。
再认识一下超文本:
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。常用的是HTML。
在这里插入图片描述
再认识一下HTTP:
HTTP是HyperText Transfer Protocol,即超文本传输协议,是基于TCP的一种应用层协议。他主要定义了万维网浏览器怎么向服务器请求,服务器怎么回复请求的过程。浏览器进入一个网址的过程中也使用到了HTTP协议。具体如下图:
在这里插入图片描述
HTTP的特点是无状态,指对交互性记录没有记忆功能,但可以使用Cookie记录用户的访问记录,也就是我们常说的浏览记录。
在这里插入图片描述

2.1.3、TCP三次握手四次挥手。

三次握手:
在这里插入图片描述
四次挥手:

在这里插入图片描述
这里直接放某道的笔记开篇。一定要记住,TCP的特点就是稳、慢,比喻一下就是非常客气。
连接建立:说话前,先客气的打个招呼,人家让你说你再说。所以是三次交流。
在这里插入图片描述
连接释放:说话后,要客气地说我说完了,然后等别人说完,别人说完再客气的回复说我也说完了,然后你在回复个ok。这就是四次挥手的过程。
在这里插入图片描述
三握四挥,少一次都不行。面试可能会问为什么不是两次握手,为什么不是三次挥手,你只要从TCP的本质特点,从TCP的可靠机制来回答,就不会出错。三握四挥少任何一次都会发生不可靠的故障,比如你不跟他说开始就发信息,对方可能会没准备好而遗漏信息。比如你发完信息没说结束那么聊天会一直挂起。多加用现实情况去模拟就行。
在这里插入图片描述

2.1.4、TCP拥塞控制

如图:
在这里插入图片描述
建议去看一下某道的视频。

2.1.5、TCP与UDP的区别。

楼主直接放自己的笔记了。

在这里插入图片描述

2.1.6、其他常见协议。

协议栈扩充:
在这里插入图片描述
其他协议作用:
在这里插入图片描述
基于UDP的只有DNS跟RIP、DHCP协议,基于TCP的有FTP、HTTP、P2P、SMTP、POP、BGP协议。

下面对每种协议的作用简单口头化介绍一下(凭考研学习的记忆内容,如有差错请谅解)

网络层:
①、ARP地址解析协议:
是链路层将IP地址转换为MAC地址。如果已经缓存有相应地址,则直接输出,如果没有,则需要发送FF-FF-FF-FF-FF-FF的广播来交流,获取相对应的地址。

②、ICMP网际控制报文协议:
网络层使用ICMP协议来检错和报告异常。有终点不可达、源点抑制、时间超过、参数问题、改变路由等。

③、DHCP动态主机配置协议:
用于给主机动态地分配地址。

④、NAT协议
主要是将私有地址转化为公有地址。在路由器之间是不允许私有地址乱跑的,所以如果要往外部发,需要将自己用的私有地址通过路由器转换为公有地址。

三种路由协议:RIP、OSPF、BGP:
⑤、RIP路由信息协议:
典型的基于距离向量的路由选择协议,最大的优点是简单,仅计算路由跳数。
⑥、OSPF开放最短路径优先协议:
使用洪范法向所有路由器发送信息,使用链路状态作为链路的代价。
⑦、BGP边界网关协议:
上述两个协议都是在自治系统内的,而BGP主要负责多个自治系统之间联系信息。

传输层:
①、TCP:
拥有可靠传输、流量控制、拥塞控制的可靠型协议。
②、UDP:
无连接·、不可靠、首部开支小的传输层协议。

应用层:
①、FTP文件传输协议:
C/S的工作方式,使用两个并行的TCP连接。
②、HTTP超文本连接:
无状态、无连接(虽然使用TCP建立连接)。
③、SMTP:
采用推的方式,用于用户代理向邮件服务器及邮件服务器之间发送邮件。
④、POP:
采用拉的方式,用于用户代理从邮件服务器的用户邮箱读取文件。

2.1.7、HTTP与HTTPS。

从名字的翻译上可以看出来,HTTP(HyperText Transer Protocol 超文本传输协议)HTTPS(HyperText Transer Protocol Secure超文本传输安全协议)。
HTTP 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
而HTTPS 是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
所以可以看出,HTTP明文、不安全、不加密、速度快,HTTPS加密、安全、速度慢(需要耗费额外的资源),而且两者的端口也不同。

2.2 操作系统

2.2.1、进程线程的关系。

比较:
在这里插入图片描述

2.2.2、死锁的条件,死锁的解决办法。

下面我们用哲学家用餐问题来讲解一下死锁发生的条件:
在这里插入图片描述
如图,总共5双筷子,当每个哲学家都拿右手边的筷子时,就会发生死锁。
死锁的条件:
①、互斥:
一段时间内某资源仅为一个进程占用。其他进程请求只能等待。上述的筷子,一次只能被一个哲学家拿着,另一个人要拿只能等他先用完。
②、不剥夺:
进程所用的资源在使用完之前,不能被夺走。一个哲学家在用筷子时,别人不能抢他的筷子。
③、请求和保持:
进程拿到了一些资源,但不够,又在请求别的资源时,手里拿的资源保持不放。哲学家在拿到一根筷子后,再拿到另一个筷子之前不会放下手里的已经拿到的筷子。
④、循环等待:
存在一个循环等待链。哲学家们互相等着另一个哲学家手里的筷子,陷入了循环等待。
死锁解决办法:
死锁解决主要有以下四种方法:
在这里插入图片描述
死锁预防是破坏死锁发生的四个必要条件。

死锁避免是防止系统进入不安全状态(银行家算法)。

死锁检测是使用死锁定理和资源分配图,检查系统是否进入死锁。

死锁解除是,使用三种方法(见图)来解除掉死锁状态。

2.3 数据结构

2.3.1、常见数据结构有哪些

在这里插入图片描述
常见的数据结构类型是按照逻辑结构划分的。一般可分为线性结构与非线性结构,线性是指上一个元素与下一个元素有一对一的关系,非线性是指有一对多(树)或者多对多的关系(图)。
线性关系可以分为受限与非受限关系。受限是指一对一关系有限制,比如栈先入后出,队列先入先出。非受限就是常见的线性表等。
在这里插入图片描述
存储结构是指数据结构的存储方式,一般有顺序存储、链式存储、索引存储、散列存储。
顺序存储: 数据顺序存,可以按下标找到某个数据,方便查询但不方便增删,因为增删改需要动后面的数据。
链式存储: 数据链式存放,数据之间有链接,不方便查询,但是方便增删。
索引存储: 方便查询,类似于字典,但不方便修改,因为修改也需要修改索引表。
散列存储: 哈希存储,方便检索增删,但需要设计好的散列函数。

2.3.2、排序算法及比较

这个表大家要完完全全记住,不理解的可以去看他们的算法思想。
特别是快排,编程题里面经常会使到手写快排,因为他是最常用的排序算法。
在这里插入图片描述
其他特点:
在这里插入图片描述
虽然经常使用快排,但是快排并不适合队伍已经有序的情况,而且快排并不稳定(稳定是指队伍中有两个数据相同时,快排可能会让他们的相对位置发生改变)。
个人认为,nlogn的算法,是使用到了树,树的层高就是logn,对树操作的时间比对一对一结构操作时间少,所以才快。但是直接插入和简单排序也比较好用,适合队伍较短的情况(队伍短的时候,时间优势就体现不出来了)。

2.4 其他问题

2.4.1、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

三、Linux

3.1、Linux基本命令

基础命令:
cd、pwd、 ls、 mkdir、 touch、 rm、 clear。
进阶:
cp、 mv、 >、 cat、 more、 ln、 grep、 find。
压缩:
tar -c -v -f -t -x 解包 打包
zip gzip bzip2三者压缩率与通用性的比较。
其他常用命令:
which su reboot passwd
改变权限:
chmod ugoa rwx 数字权限值为421

3.1、常问语句

1、如何查看cpu信息:/proc/cpuinfo
2、如何查看占用cpu使用率最高的进程: ps -aux | sort -k3nr | head -K
3、如何查看一个文件的末尾50行:head -n 10 xxx(前) tail -n 50 xxx
4、如何过滤文件内容中包含“ERROR”的行:grep “ERROR”xxx cat xxx | grep “ERROR”
5、查看某端口号是否被占用:netstat -anp |grep 端口号(查看某端口号的使用情况)、netstat -nultp(查看所有端口号的使用情况)。
6、查看某进程号:ps -aux|grep <进程号>
7、查看IP地址:ifconfig
8、创建和删除一个多级目录:mkdir rm
9、在当前用户家目录中查找xx.txt的文件:find ~/-name xx.txt
10、查询出tomcat的进程并杀掉这个进程:ps -ef|grep tomcat、 kill
在这里插入图片描述

11、动态查看日志文件:tail -f log_file
12、查看系统硬盘空间的命令:df -aTh
13、查看当前机器listen的所有端口:netstat -tlnu
14、把一个文件夹打包压缩成 .tar.gz ,以及解压成 .tar.gz:tar zcvf xxx.tar.gz file tar zxvf xxx.tar.gz

四、MySql

4.1 数据库概念

全部基础可以看自己写的文章:数据库基础
1、什么是数据库:
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
2、常见的数据库都有哪些:
Oracle数据库(甲骨文)、SQLServe(微软)、DB2数据库(IBM)、MySQL
3、什么是事务以及事务的四大特性:
MySQL 事务主要用于处理操作量大,复杂度高的数据。是多条更改数据操作的sql语句集合。满足ACID:
在这里插入图片描述
4、什么是关系型数据库:
关系型数据库是由多张能互相连接的表组成的数据库。一般通过主键外键进行联系。
5、超键、候选键、主键、外键:
超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键
学生信息表中的学号可以唯一表示一位学生。
候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!
超键就是候选键的子集。
主键(primary key): 用户选作元组标识的一个候选键程序主键
学生信息表中可以用学号作为主键。
**外键(foreign key):**如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。
学生信息表中的身份证号,在其他表中充当主键,那他就是该表的外键。
6、什么是存储过程:
procedure 是一条或多条存储过程的集合。与函数的不同是:不同点:标识符不同,函数的标识符是function,
存储过程是proceduce。1)函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参
数或者返回值。2)存储函数使用select调用,存储过程需要使用call调用。3)select语句可以在存储过程中调用,但是除了select…into之外的select 语句都不能在函数中使用。4)通过in out 参数,过程相关函数更加灵活,可以返回多个结果。
7、什么是视图:
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。

4.2 SQL语句

MySQL基础
这里举几个例子:

4.2.1 学生课程信息表:

Student-Sourse-SC-Teacher表关系如下:
Student(sid,Sname,Sage,Ssex)学生表
Course(cid,Cname,tid)课程表
SC(sid,cid,score)成绩表
Teacher(tid,Tname)教师表
写出sql语句:
1、查询课程“001“课程比”002“课程成绩高的所有学生的学号
2、修改学号为20131201的语文成绩为100‘
3、插入一条名为“李四”的教师记录
4、删除学习“叶平”老师课程的sc表记录
5、查询所有女生的信息和成绩

4.3 索引

1、什么是索引
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
2、索引的优缺点:
在这里插入图片描述

4.4 其他问题

4.4.1、数据库分页分表,分页查询

在这里插入图片描述

4.4.2、优化数据库,提高数据库的性能:

1、硬件上:
使用缓存,常读的数据存放在缓存中。优化硬件。
2、语句上:
对语句优化。程序上减少对数据库的访问,减少对行信息的访问,选择有用的信息而不是选择所有信息。
3、规范上:
按照范式进行设计。避免使用!=、<>、is null这样的操作符。尽量不要修改主键。
4、工具上:
使用视图、索引等方便查询。

  • 45
    点赞
  • 263
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值