1. 给出三个点的坐标,如何判断是否能够成三角形
连接点P和三角形的三个顶点得到三条线段PA,PB和PC,求出这三条线段与三角形各边的夹角,如果所有夹角之和为180度,那么点P在三角形内,否则不在,此法直观,但效率低下。
2. 下面打印值是多少
// 内存测试
void funmem()
{
char memory[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int *p = (int*)memory;
printf("%x\n", *p); // 0x04030201
printf("%x", *(p+1)); // 0x08070605
}
3.
sizeof(*p)是p指向对象的实际大小,对吗?
不对,因为sizeof不会实际求运算对象的值,所以即使p是一个无效(即未初始化)的指针也不会有什么影响。在sizeof的运算对象中解引用一个无效指针仍然是一种安全的行为,因为指针实际上并没有被真正使用。sizeof不需要真的解引用指针也能知道它所指对象的类型。
4. 动态链接库和静态链接库的区别
动态库: 内存中只存在一份,节约内存并减少页面交换,只要导出的接口不变,更换dll 不会对调用者产生影响。
静态库,直接链接进程序,程序运行时不要静态库,执行速度快
更多不同请大家补充。
5. 不易重现的bug解决方式: 加日志 缩小范围,查看代码,评估风险处(也分是数据问题还是内存问题),看dump,
6. map 原理:内部实现是红黑树,由Key值决定节点的位置,本身红黑树是平衡二叉查找树,因此,查找方便高效(O(log n) )
7. vetor :连续数组,预分配内存(避免二次分配),可用下标的方式访问。
8. 归并排序时间复杂度:T[n] = O(nlogn)