网络知识 娱乐 计算机基础面试备考知识点(八股文)

计算机基础面试备考知识点(八股文)

(个人用,大部分为搬运网址,仅供参考仅供参考仅供参考)

这些github项目比我写得好多了哦:

JavaGuide http://snailclimb.gitee.io/
CSNote https://cyc2018.github.io/CS-Notes/#/
Interview-site-Lan https://github.com/MikeCreken/Interview-site-Lan

部分计算机基础八股文总结,持续更新ing

    • 软工/测试相关
      • json和xml文件的区别
      • 软开都需要哪些文档
      • 软工生存周期
      • 测试:如何测试一个用户登录界面
      • 黑白盒
    • Linux相关
      • 常用命令
      • 杀死进程
      • sed命令
      • linux系统启动的过程
    • 数据结构
      • 二叉树种类及遍历
      • 排序算法
    • 计网相关
      • GET和POST
      • TCP和UDP的区别
      • OSI七层模型
      • TCP三次握手四次挥手
      • URL
      • HTTP状态码
      • IP地址分类
    • 操作系统
      • 死锁及条件
      • 银行家算法
    • 数据库
      • SQL
      • SQL注入
      • having和where区别
      • 索引优缺点
      • 事务特点
      • 左连接右连接
      • 隔离级别
      • 乐观锁悲观锁
    • C/C++相关
      • struct和class的区别
      • C++编译
    • Python相关
      • 内存
      • 命名空间
      • 局部变量全局变量
      • 列表怎么保证唯一性
      • 列表函数
      • 数组和列表的区别
      • python中list/tuple/dict/set的区别
      • python继承
    • Java相关
      • Java的学习路线应该是怎样的?
      • Java的基本数据类型
      • Java线程安全
      • Java编译
      • 与C++区别
      • 深拷贝与浅拷贝
      • 字符串类
      • Java多线程
      • ==和equals()
      • 垃圾回收
      • 内存泄漏 内存溢出

软工/测试相关

json和xml文件的区别

软开都需要哪些文档

https://blog.csdn.net/governlee/article/details/84412126

软工生存周期

https://blog.csdn.net/chktsang/article/details/87007831

测试:如何测试一个用户登录界面

https://blog.csdn.net/ETalien_/article/details/90172983

功能测试(登录/未登录状态、输入、空值、特殊值、输出结果准确、结果显示)
兼容性测试(操作系统、浏览器、数据库存储、移动应用平台、监控程序(输入法、杀毒、监控工具))
性能测试(压力测试(响应时间)、大数据量测试、内存泄漏)
安全测试(安全控制设计、法律禁止的内容要过滤、用白盒测试检查程序、DB保留字输入)
易用性测试(人性化提示、告知错误;控件风格设计、摆放位置;容错查询、全文检索、多关键字组织查询、模糊查询;)

黑白盒

https://blog.csdn.net/it1988888/article/details/106542641/

Linux相关

常用命令

https://www.runoob.com/w3cnote/linux-common-command-2.html

杀死进程

https://blog.csdn.net/qq_29303759/article/details/81942356

sed命令

https://www.runoob.com/linux/linux-comm-sed.html

linux系统启动的过程

https://www.runoob.com/linux/linux-system-boot.html

数据结构

二叉树种类及遍历

二叉树种类:满二叉树、完全二叉树、二叉搜索树、平衡AVL树、红黑树也属于AVL树
四种遍历方式分别为:先序遍历、中序遍历、后序遍历、层序遍历。

https://blog.csdn.net/yunzhaji3762/article/details/108943867

排序算法

计网相关

GET和POST

https://segmentfault.com/a/1190000018129846

TCP和UDP的区别

https://zhuanlan.zhihu.com/p/24860273
https://blog.51cto.com/feinibuke/340272

OSI七层模型

在这里插入图片描述

https://blog.csdn.net/yaopeng_2005/article/details/7064869

TCP三次握手四次挥手

1、https://zhuzhu20.com/post/brief-description-of-tcp-three-handshakes/
TCP
2、为什么是三次握手,而不是两次或四次?https://www.zhihu.com/question/24853633/answer/63668444
3、https://blog.csdn.net/qq_38950316/article/details/81087809(这篇超赞)

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

URL

https://blog.csdn.net/qq_21993785/article/details/81188253
https://www.jianshu.com/p/7aba76d871a6

域名解析
为了将消息从你的PC上传到服务器上.需要用到1P协议、ARP协议和0SPF协议;
发起TCP的3次握手、建立TCP连接后发起http请求、服务器响应http请求;
浏览器解析htm代码,并请求html代码中的资源(如js、css、图片等);
断开TCP连接;
浏览器对页面进行渲染呈现给用户

HTTP状态码

https://www.runoob.com/http/http-status-codes.html

IP地址分类

https://blog.csdn.net/weixin_43625577/article/details/84728675

操作系统

死锁及条件

https://blog.csdn.net/hd12370/article/details/82814348

银行家算法

避免死锁的最著名算法,核心:分配资源前判断分配后是否会进入不安全状态。
安全序列(可有多个,一定不会发生死锁)
不安全状态(可能发生死锁)

Max、Allocation、Need、Available矩阵;Request(i)

https://blog.csdn.net/weixin_43257886/article/details/106261207

数据库

SQL

https://www.w3school.com.cn/sql/sql_select.asp

SQL注入

https://blog.csdn.net/wodetian1225/article/details/82351752
https://www.cnblogs.com/myseries/p/10821372.html

having和where区别

https://blog.csdn.net/HD243608836/article/details/88813269

索引优缺点

https://www.jianshu.com/p/a872671e3b80

事务特点

原子性 (atomicity):强调事务的不可分割.
一致性 (consistency):事务的执行的前后数据的完整性保持一致.
隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
持久性(durability) :事务一旦结束,数据就持久到数据库

左连接右连接

https://blog.csdn.net/u014204541/article/details/79739980

隔离级别

未提交读
提交读
可重复读
可串行化

https://mp.weixin.qq.com/s?__biz=MzIwMTg3NzYyOA==&mid=2247483728&idx=1&sn=cdc5dc4708e48051e56b8e7d2a9fe5a8&chksm=96e67043a191f955b93e7228b88572beb486e6fac3308a1b69f5ee83c9e9ced6957e30b12d58&token=1787261466&lang=zh_CN#rd

乐观锁悲观锁

C/C++相关

struct和class的区别

  1. 默认权限(struct-public, class-private)
  2. 是否可用于声明模板(struct不可以, class可以)

https://www.cnblogs.com/yocichen/p/10960287.html
https://blog.csdn.net/qq_35307027/article/details/110630764

C++编译

一般情况下,我们只需要知道分成编译和链接两个阶段,编译阶段将源程序(*.c) 转换成为目标代码(一般是obj文件,至于具体过程就是上面说的那些阶段),链接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文件)就可以了,其他的都需要在实践中多多体会才能有更深的理解。

https://blog.csdn.net/u012662731/article/details/78520349

Python相关

内存

命名空间

局部变量全局变量

https://www.cnblogs.com/shengguorui/p/10683928.html

列表怎么保证唯一性

import numpy as np
A = [1, 2, 2, 5,3, 4, 3]
a = np.unique(A)

列表函数

https://www.runoob.com/python/python-lists.html

数组和列表的区别

https://my.oschina.net/u/4135649/blog/4332887

数组只能放一种类型数据,列表可以放不同种类的数据

python中list/tuple/dict/set的区别

https://www.cnblogs.com/shengulong/p/7149832.html
https://www.cnblogs.com/jfl-xx/p/7115854.html

①list 列表:python内置的数据类型,有序集合,随时增删。包含的数据类型可以不同。

②tuple 元祖:python内置的数据类型,有序列表,一旦初始化,无法修改。tuple不可变,所以代码更安全。包含的数据类型可以不同,它包含的list、dict、set是可以变的。

③dict 词典 d={‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
python内置,键值对(key-value)方式存储,查找速度快;dict的key必须是不可变对象(字符串、数字、元祖);value包含的数据类型可以不同。
*和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而增加;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。

④set 无序集合、key不重复
无索引、无切片、作为一个无序的集合,set不记录元素位置或者插入点。因此,set不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

总结:1、list、tuple是有序列表;dict、set是无序列表
   2、list元素可变、tuple元素不可变
   3、dict和set的key值不可变,唯一性
   4、set只有key没有value
   5、set的用途:去重、并集、交集等
   6、list、tuple:+、*、索引、切片、检查成员等
   7、dict查询效率高,但是消耗内存多;list、tuple查询效率低、但是消耗内存少。

python继承

Java相关

https://blog.csdn.net/qq_44614710/article/details/88884026

Java的学习路线应该是怎样的?

https://www.zhihu.com/question/56110328

Java的基本数据类型

八种基本数据类型
在这里插入图片描述

Java线程安全

https://blog.csdn.net/zxc456733/article/details/78871972

Java编译

在这里插入图片描述

https://www.cnblogs.com/klvchen/p/14132819.html

与C++区别

都是面向对象的语言,都支持封装、继承和多态
Java 不提供指针来直接访问内存,程序内存更加安全
Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
Java 有自动内存管理机制,不需要程序员手动释放无用内存

深拷贝与浅拷贝

深拷贝和浅拷贝都是对象拷贝。
(对象拷贝:地址是不同的,创建了新的对象;引用拷贝:地址值相同,同一个对象。)
浅拷贝:在这里插入图片描述
深拷贝:
在这里插入图片描述

https://blog.csdn.net/riemann_/article/details/87217229

字符串类

(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

https://blog.csdn.net/u011702479/article/details/82262823

Java多线程

https://www.cnblogs.com/xiaowangbangzhu/p/10443289.html
https://blog.csdn.net/qq_37896194/article/details/82981575

==和equals()

https://blog.csdn.net/caoxuecheng001/article/details/88804286

垃圾回收

内存泄漏 内存溢出

https://blog.csdn.net/crazymakercircle/article/details/114421142