![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
万恶的面试题
karlxzy
这个作者很懒,什么都没留下…
展开
-
STL的vector
Part 1 向vector中添加元素 vector会首先把数组扩展成两倍的大小,添加结束后,删除原来的。中间过程,导致空间的极大浪费。原创 2014-11-26 15:06:58 · 242 阅读 · 0 评论 -
关于算法时间复杂度的整理
Part 1 计算原理 根据代码内某条基本语句(调用次数最多的)语句来计算算法的时间复杂度。 Part 2 不同时间复杂度的性能比较 性能由高到低依次为:c < log2N < n < n * Log2N < n^2 < n^3 < 2^n < 3^n < n! 当N足够大时,基本上N方及更高复杂度的算法基本瘫痪。 Part 3 时间复杂度计算实例 A. for(int原创 2014-11-26 14:48:33 · 483 阅读 · 0 评论 -
字符串的数组和指针
写在前面,话说我感觉这玩意儿除了面试,基本都是不会遇到的奇葩问题。。。 int _tmain(int argc, _TCHAR* argv[]) { CHAR str1[] = "Good Job."; CHAR str2[] = "Good Job."; CHAR* str3 = "Good Job."; CHAR* str4 = "Good Job."; if (st原创 2014-11-27 16:37:29 · 278 阅读 · 0 评论 -
Mark一下进制转换的问题
关于手工进行进制转换,一般都是用二进制做跳板。 常规进制:二进制、八进制、十进制、十六进制。 1.十进制-->二进制 十进制数除2,余数作为结果,商继续除,直到除完为止。所有余数从低位到高位,排列产生二进制数。最后有商为1,放到最高位。 十进制5: 5%2=2...1 2%2=1...0 ==>二进制5:101 十进制8:8%2=4...0 4%原创 2014-12-11 13:37:53 · 365 阅读 · 0 评论 -
sizeof整理
CHAR testA1[] = "test"; CHAR testA2[] = "test\0"; WCHAR testW[] = L"test"; printf("%d %d %d\r\n", sizeof(testA1), sizeof(testA2), sizeof(testW));输出结果 5 6 10原创 2014-12-11 20:38:03 · 362 阅读 · 0 评论 -
C++运算符优先级
看到一个不错的表格,MARK一下. PS:某些恶心的面试题最喜欢搞这些了。 优先级 操作符 描述 例子 结合性 1 () 调节优先级的括号操作符 (a + b) / 4; 从左到右 [] 数组下标访问操作符 array[4] = 2; -> 通过指向对象的指针访问成员的操作符 ptr->age = 34; .转载 2014-12-11 21:26:31 · 274 阅读 · 0 评论 -
字节对齐/内存对齐/对齐粒度
其实标题里面的三个关键字说的都是同一个东西。也就是C++中类和结构体在内存中的分配策略,专业术语可以称之为“对齐模数(Alignment Modules)”。 对齐模数分为三类: 1.自身对齐模数,也就是类或结构体中成员的大小,1,2,4,8之中的一个,对应BYTE WORD DWORD QWORD。 2.指定对齐模数,也就是IDE指定的默认对齐模, 在MS系列IDE中,默认为8。不过原创 2014-12-11 20:56:31 · 2732 阅读 · 0 评论 -
指针相减的运算
Example: INT* p; INT* q; 那么p-q的实际运算不是p的地址减q的地址 而是(p地址-q地址)/sizeof(INT)原创 2014-12-11 22:15:05 · 501 阅读 · 0 评论