超级详细的面试计算机基础知识问题集合(包括计网(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是法定的参考标准,是一堆老头(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、工具上:
使用视图、索引等方便查询。

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

  1. LINUX常用命令(基础)

    LINUX常用命令(基础) 收藏LINUX常用命令(基础) 1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可 ...

  2. 【网安】初学者,第一天day1 (什么是域名,常见的端口和协议,三次握手四次挥手)

    网安小白第一天 了解什么是域名,常见的端口和协议,三次握手四次挥手 第一次接触网安,从0到1. 一.域名 1.定义 域名是用于在识别和定位Internet上计算机的层次结构式的字符标识,它对应于计算机 ...

  3. tcp状态机-三次握手-四次挥手以及常见面试题

    TCP状态机介绍 在网络协议栈中,目前只有TCP提供了一种面向连接的可靠性数据传输.而可靠性,无非就是保证,我发给你的,你一定要收到.确保中间的通信过程中,不会丢失数据和乱序.在TCP保证可靠性数据传 ...

  4. java doubke类型转换为String_Java基础知识面试题大集合

    本文整理自作者:ThinkWon  链接: blog.csdn.net/ThinkWon/article/details/104390612 本文知识点目录 Java概述 何为编程 什么是Java j ...

  5. Java 基础知识面试题大集合

    点击关注上方"五分钟学算法", 设为"置顶或星标",第一时间送达干货. 本文整理自作者:ThinkWon  链接: blog.csdn.net/ThinkWon ...

  6. [转载] Java基础知识面试题(2020最新版)

    参考链接: Java中的异常类型与示例 文章目录 Java概述何为编程什么是Javajdk1.5之后的三大版本JVM.JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码? ...

  7. Java基础知识面试题(2021最新版)

    转载自:https://thinkwon.blog.csdn.net/article/details/104390612 文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 ...

  8. Java基础知识面试题(2021最新)

    文章目录 1.Java概述 什么是Java jdk1.5之后的三大版本 JVM.JRE和JDK的关系 什么是跨平台性?原理是什么? Java语言有哪些特点 什么是字节码?采用字节码的好处是什么? 什么 ...

  9. Java基础知识面试题重点汇总

    Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并 终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路.方法. 和手段通过计算 ...

  10. Java 基础知识面试题(2021最新版)

    点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果 ...

最新文章

  1. 注册界面翻译_B站UP主自制的开源OCR翻译器走红Github,用一次就粉了
  2. ubuntu14.04 安装 bcm43142无线网卡
  3. c++ map中用char数组_C开发实战-指针和字符串
  4. Swift函数_默认参数
  5. linux 进程映射空间 libc,为什么不能在64位内核的32位Linux进程中映射(MAP_FIXED)最高虚拟页面?...
  6. 积累bootstrap的一些知识
  7. FastJson/spring boot: json输出
  8. android圆形变方形动画,CSS3 简单的圆形/方形变形动画
  9. 医疗小程序源码_不懂商城小程序源码,如何快速创建小程序商城?
  10. MongoDB 教程八(结语): 一网打尽当下NoSQL类型、适用场景及使用公司
  11. C#LeetCode刷题之#9-回文数(Palindrome Number)
  12. 键盘事件与JS Filter
  13. js判断是否是当前点击对象
  14. 树状排序(目录结构)
  15. atitit.spring3 mvc url配置最佳实践
  16. Fiddler4抓包工具使用教程
  17. 【2016年第4期】国务院批复建立促进大数据 发展部际联席会议制度
  18. 关系抽取--CASREL
  19. CSR867x — 说说什么是ANC、CVC、DSP降噪
  20. python中oserror_[python] 解决OSError: Address already in use

热门文章

  1. 一个优秀的硬件工程师要具备的能力
  2. python找不同_用Python玩大家来找茬
  3. 成都VS上海,先锋设计机构与未来建筑的“双城battle”
  4. 正则表达式之基本原理
  5. 模式识别属于计算机科学吗,模式识别与智能系统这个学科属于什么类?
  6. 如何快速又优雅的一键保存网页
  7. LVGL中文字体制作
  8. MySQL之redo日志
  9. 蒟蒻的noip2015滚粗记
  10. ASP.NET2.0 ReportingServices,报表灵魂的收割者(一)【月儿原创】