大学即将毕业了,做了半年多的iOS开发,打算换份工作。现在把以前学过的知识点,抽时间复习一下,做个纪录。
一 C++类型转换
1 const_cast:去const属性
2 static_cast:基本类型转换
3 daynamic_cast:多态类之间的类型转换
4 reinterpret_cast:不同类型的指针类型转换
二 Unix下的socket编程
1 tcp连接
2 udp连接
3 select函数
4 http请求
三 Unix下的多线程多进程
1 fork
2 pthread
3 同步
4 互斥
四 makefile搭建集成开发环境
1 宏定义
2 注释
3 文件依赖
4 目标
5 命令
五 排序算法
1 冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。
2 选择排序:从待排序数据中选出最小或最大的一个元素,顺序放在已排好序的数列的最后。 不稳定的排序方法。
3 插入排序:从待排序数据中选出一个元素,将其插入到一个有序数列中的适当位置,使数列依然有序。
4 希尔排序:又称缩小增量排序,插入排序的一种,根据增量由长到短分组,在每个组内进行插入排序,直到增量缩小到1为止。
5 快速排序:是对冒泡排序的一种改进,不稳定的排序方法。。它的基本思想是:
5.1 从数列中选出一个数作为基准
5.2 将比它大的数放在他的右边,其他的数放在它的左边
5.3 对它的左右区间重复第二步,直到各区间只有一个数(递归)
#稳定是指:原序列中相同元素的相对顺序仍然保持到排序后的序列
六 经典算法
1 汉落塔:递归
2 大数运算:(将数字看成字符,从而获取数字作为字符型数组的元素 )
2.1 加法:两个字符数组的元素逐一相加,最重要的是确定进位。
2.2 减法:减法跟加法差不多,重点试确定借位,最后去掉无效的零。
2.3 乘法:积数数组s[i+j] = a[i]*b[j],最后处理进位问题
2.4 除法:最复杂的就是除法,基本思想是反复做减法,看从被除数里最多能减去多少个除数,商就是多少。
一个一个减显然太慢,如何减得更快一些呢?
以7546 除以23 为例来看一下:开始商为0。先减去23 的100 倍,就是2300,发现够减3 次,余下646。
于是商的值就增加300。然后用646减去230,发现够减2 次,余下186,于是商的值增加20。
最后用186 减去23,够减8 次,因此最终商就是328。
七 设计模式
1 单例模式
2 工厂模式
2.1 简单工厂模式
2.2 工厂方法模式
2.3 抽象工厂模式
3 观察者模式
八 数据结构
1 单链表
2 队列
3 栈
4 二叉树