C++面试题集合

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)




 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值