计算机基础面试备考知识点(八股文)
(个人用,大部分为搬运网址,仅供参考仅供参考仅供参考)
这些github项目比我写得好多了哦:
JavaGuide http://snailclimb.gitee.io/
CSNote https://cyc2018.github.io/CS-Notes/#/
Interview-site-Lan https://github.com/MikeCreken/Interview-site-Lan
软工/测试相关
json和xml文件的区别
软开都需要哪些文档
软工生存周期
测试:如何测试一个用户登录界面
功能测试(登录/未登录状态、输入、空值、特殊值、输出结果准确、结果显示)
兼容性测试(操作系统、浏览器、数据库存储、移动应用平台、监控程序(输入法、杀毒、监控工具))
性能测试(压力测试(响应时间)、大数据量测试、内存泄漏)
安全测试(安全控制设计、法律禁止的内容要过滤、用白盒测试检查程序、DB保留字输入)
易用性测试(人性化提示、告知错误;控件风格设计、摆放位置;容错查询、全文检索、多关键字组织查询、模糊查询;)
黑白盒
Linux相关
常用命令
杀死进程
sed命令
linux系统启动的过程
数据结构
二叉树种类及遍历
二叉树种类:满二叉树、完全二叉树、二叉搜索树、平衡AVL树、红黑树也属于AVL树
四种遍历方式分别为:先序遍历、中序遍历、后序遍历、层序遍历。
https://blog.csdn.net/yunzhaji3762/article/details/108943867
排序算法
计网相关
GET和POST
TCP和UDP的区别
https://zhuanlan.zhihu.com/p/24860273
https://blog.51cto.com/feinibuke/340272
OSI七层模型
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状态码
IP地址分类
https://blog.csdn.net/weixin_43625577/article/details/84728675
操作系统
死锁及条件
银行家算法
避免死锁的最著名算法,核心:分配资源前判断分配后是否会进入不安全状态。
安全序列(可有多个,一定不会发生死锁)
不安全状态(可能发生死锁)
Max、Allocation、Need、Available矩阵;Request(i)
https://blog.csdn.net/weixin_43257886/article/details/106261207
数据库
SQL
SQL注入
https://blog.csdn.net/wodetian1225/article/details/82351752
https://www.cnblogs.com/myseries/p/10821372.html
having和where区别
索引优缺点
事务特点
原子性 (atomicity):强调事务的不可分割.
一致性 (consistency):事务的执行的前后数据的完整性保持一致.
隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
持久性(durability) :事务一旦结束,数据就持久到数据库
左连接右连接
隔离级别
未提交读
提交读
可重复读
可串行化
乐观锁悲观锁
C/C++相关
struct和class的区别
- 默认权限(struct-public, class-private)
- 是否可用于声明模板(struct不可以, class可以)
https://www.cnblogs.com/yocichen/p/10960287.html
https://blog.csdn.net/qq_35307027/article/details/110630764
C++编译
一般情况下,我们只需要知道分成编译和链接两个阶段,编译阶段将源程序(*.c) 转换成为目标代码(一般是obj文件,至于具体过程就是上面说的那些阶段),链接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文件)就可以了,其他的都需要在实践中多多体会才能有更深的理解。
Python相关
内存
命名空间
局部变量全局变量
列表怎么保证唯一性
import numpy as np
A = [1, 2, 2, 5,3, 4, 3]
a = np.unique(A)
列表函数
数组和列表的区别
数组只能放一种类型数据,列表可以放不同种类的数据
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相关
Java的学习路线应该是怎样的?
Java的基本数据类型
八种基本数据类型
Java线程安全
Java编译
与C++区别
都是面向对象的语言,都支持封装、继承和多态
Java 不提供指针来直接访问内存,程序内存更加安全
Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
Java 有自动内存管理机制,不需要程序员手动释放无用内存
深拷贝与浅拷贝
深拷贝和浅拷贝都是对象拷贝。
(对象拷贝:地址是不同的,创建了新的对象;引用拷贝:地址值相同,同一个对象。)
浅拷贝:
深拷贝:
字符串类
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
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
更多推荐
所有评论(0)