最近一段时间整理了一些我遇到的面试题,各个方面都有,写在这里,做个记录。大厂偏好算法和数据结构,小厂偏好项目经验。这算是一个比较鲜明的特点了。
static的最主要功能是隐藏,
其次因为static变量存放在静态存储区,所以它具备持久性和默认值0.
用于类成员声明,所有实例共享。
extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern “C”后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 extern “C”作用详解
1、4 or 8、4、4 or 8 C/C++中sizeof()的用法
程序位数决定
查找操作使用较多,使用Vector
增删操作使用较多,使用List
先进先出的使用场景,使用Queue
完全二叉树:倒数第二层是满二叉树,最后一层靠左对齐
满二叉树:结点要么是叶子结点,要么它有两个孩子结点。
进程:程序在执行过程中分配和管理资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。(资源独立,创建销毁代价大) 线程:CPU独立运行和独立调度的基本单位。(堆公有,栈私有,创建销毁代价小)
可以多对多。1. 地址空间映射;2. 进程间通讯。 做好这两部分。(云计算比较有用)
CONTEXT结构中保存着特定于处理器寄存器的数据。系统使用CONTEXT结构执行各种内部操作。参考WinNT.h
见《Windows核心编程》P174
线程安全:某个方法,在多线程下调用,跟顺序执行一致,即安全的,就叫做线程安全方法
可重入:某个方法,执行过程中,中断,然后继续执行,结果不受影响,即方法可重入
二者没什么概念上的必然联系。一个方法是可重入的,不一定就是线程安全的;一个方法是线程安全的,不一定是可重入的
线程T1、T2;锁L1、L2。T1获取L1,等待L2,获取L2,释放L2,释放L1;T2获取L2,等待L1,获取L1,释放L1,释放L2。 多线程死锁例子
A线程while循环,B线程打印,先后开启A、B线程,能否输出内容