编程基础知识梳理

 大学即将毕业了,做了半年多的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 二叉树




你可能感兴趣的:(编程基础知识梳理)