7.sizeof
sizeof实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。
8.堆/栈
堆内存申请由程序员自己申请并且需要声明申请大小/最大内存空间大小由系统有效虚拟 内存决定/效率慢,容易产生内存碎片/随意进出
栈地址是指栈顶的地址/内存申请由系统分配/栈空间不足可能会溢出(overflow)/最大内存空间大小2M/相对快,无内存碎片 /先进后出
生长方向:栈 向下生长 ;堆 向上生长
简而言之 对于栈来说上面是栈底下面是栈顶,而对于堆来说,上面是堆顶下面是堆底。
9.select/epoll
多路复用问题:
1)多路: 指的是多个socket网络连接;
2)复用: 指的是复用一个线程;
3)多路复用主要有三种技术:select,poll,epoll。epoll是最新的, 也是目前最好的多路复用技术;
select 支持水平触发, epoll 支持边缘触发。
时间复杂度:
1)select==>时间复杂度O(n)
2)epoll==>时间复杂度O(1)
10.有向图是否有环的问题
1)拓扑排序
2)DFS
11.索引优缺点
优点:
1)可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
2)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
1)需要占用物理空间;创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
2)维护当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
3)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
12.装饰者模式
23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
13.POSIX互斥锁/自旋锁
1)什么是POSIX
可移植操作系统接口
2)使用场景
自旋锁适用于那些仅需要阻塞很短时间的场景,而互斥锁适用于那些可能会阻塞很长时间的场景。
14.闭包必要条件
1)访问所在作用域;
2)函数嵌套;
3)在所在作用域外被调用