1.HashMap中key和value都可以为null,但最多只有一个key为null,可以有多个值为null
2.当进程处于TASK_UNINTERRUPTIBLE状态时不可以被杀死(不可中断的睡眠)
3.双向链表中的任意一个结点都可以直接访问前驱结点和后继结点
4.程序结束时(不管是正常结束还是异常结束),操作系统会释放该进程所有资源;所有分配的内存自动都被系统回收,不存在泄漏问题。
5.Mac OS系统用的是unix内核,Android、Ubunt、Redhat使用的是linux内核
6.任务调度:就绪状态—>运行状态之间的转换;
当一个进程执行了一条转移指令后,运行—阻塞—就绪,不会触发进程调度
触发进程调度:①正在运行的进程所分配的时间片结束,运行状态转为就绪状态;
②当一个进程创建了一个新的进程,新的进程处于就绪状态;
③正在运行的进程访问一个临界区时,保护此临界区的互斥信号量已被其他进程加锁,那进程就处于就绪状态,当其他程序释放之后,进程处于运行状态
7.存储空间的分配:
局部变量和函数参数存放在栈上
全局变量和静态变量被分配到同一块 全局静态区域中(数据段)
常量存储在常量存储区 ,不允许修改
代码存放在 代码区,不允许修改,但是可以执行
C++中new一个对象是从堆上分配内存的
8.①进程终止时,进程独有的内存空间会被释放,但是一些共享资源不会被释放。
②一个文件在磁盘上不一定是连续的地址,但是在进程空间中,通过页表的地址映射可以使得数据是连续的。
③符号连接的文件被删除后,链接只是被认为是“死链接”,并没有被删除。
9.各排序算法的时间复杂度:
归并排序的最好情况和最坏情况时间复杂度一样
直接选择排序的最好情况和最坏情况时间复杂度一样
10.查找制定节点,数组和链表平均时间复杂度都为O(1)
插入和删除时,数组平均需要移动n/2个元素,而链表只需修改指针即可(先遍历)
11.虚拟内存和物理内存的映射通过页表(page table)来实现
12.队列添加元素是在对尾,删除元素是在对头;
添加元素,尾指针rear+1;删除元素,头指针front+1;
13.前序遍历:根左右
中序遍历:左根右
后序遍历:左右根
14.将递归算法转换为非递归算法, 通常需要使用栈,每次递归都是在push,最后一次得到答案开始pop
15.软链接保存的是文件的绝对路径;仅仅是一个符号,保存了文件的地址;硬链接才是指向原始文件innode的指针;可以为目录和文件创建软链接;也可以为不存在的文件创建软链接
16.类型转换时只能从小的向大的转换(字节大小),大转小会丢失精度
17.public > protected > default > private
(pubilic所修饰的类、变量、方法,在内外包均具有访问权限。
protected子类可以访问,同一个包的类也能访问。
default当前包中所有类对这个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private。
private只有本类的方法可以访问,其他任何类都无法访问这个成员。)
public:不限范围
protect:同一各类+同一个包+不同包子类
default:同一个类+同一个包
private:同一个类
18.
一个有10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数: int(*a[10])(int)
19.随机访问元素,则应使用 vector 或 deque 容器。
必须在容器的中间位置插入或删除元素,则应采用 list 容器。
不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用 deque 容器