找工作?该复习了!

时间:2021-04-29 04:10:49

我把我找工作中遇到的知识点统计了下,并归类了下,希望可以帮到正在找工作的童鞋们!

如果觉得有需要增加的可以添加到评论中,方便其他园友复习。

一、C

①基本函数实现
swap()
reverse()
strcpy()
②五个存储区
③内存对齐
④数组名问题
int a[10];
int *p=a;
p++;p+1;a+1;
a++;//错误,数组名是常量

二、C++

①static的作用
②const的作用
③四个类型转换
static_cast<>;
dynamic_cast<>;
const_cast<>;
reinterpret_cast<>;
④placement new
规定对象的存储位置
placement new机制初探
⑤浅拷贝和深拷贝
析构函数,operator=(),拷贝构造函数,三者一般同时自定义(自定义了一个则需定义其它两个)
⑥在C++中引用C的函数和变量
在前面加extern "C"
⑦虚析构函数的作用
防止内存泄露

三、数据结构

①链表
创建、添加、删除
②查找时间对比
栈、队列、二叉排序树、hash表
③Btree,Hash

四、算法

①排序
插入:直接插入、希尔
交换:冒泡、快速
选择:直接选择、堆排序
归并排序
基数排序
②最短路径
计算一个节点到其他所有节点的最短路径:Dijkstra算法
算法是解决任意两点间的最短路径的一种算法:Floyd-Warshall算法
③贪心法
贪心算法解决部分背包问题
④动态规划
动态规划法之背包问题

五、数据库

①基本语句
数据库基本语句
②常用聚合函数
MIN(),MAX(),COUNT(),AVG(),SUM()
③查询语句
数据库查询语句

六、操作系统
①线程和进程的区别
1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
2、 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
3、 系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
4、 与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
5、 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

②进程同步的方式
管道/FIFO/共享内存/消息队列/信号

③线程同步的方式
临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问
互斥量:为协调共同对一个共享资源的单独访问而设计的
信号量:为控制一个具有有限数量用户资源而设计
事件:用来通知线程有一些事件已发生,从而启动后继任务的开始

④进程间通讯的方式
管道:速度慢,容量有限
消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。
信号量:不能传递复杂消息,只能用来同步
共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了一块内存的。

⑤死锁的四个必要条件
互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
循环等待条件(Circular wait):系统中若干进程组成环路,改环路中每个进程都在等待相邻进程正占用的资源。

⑥处理死锁的策略
忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像;
检测死锁并且恢复;
仔细地对资源进行动态分配,以避免死锁;
通过破除死锁四个必要条件之一,来防止死锁产生;

七、计算机网络

①TCP和UDP
1。基于连接与无连接
2。对系统资源的要求(TCP较多,UDP少)
3。UDP程序结构较简单
4。流模式与数据报模式
5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

②TCP/IP四层协议
网络接口层、网间网层、传输层、应用层

③OSI七层网络协议
OSI的7层从上到下分别是
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层

④五种网络I/O
Unix网络编程中的的五种I/O模型