C++一面凉经 做java的投了C++面经
让我进二面吧,我一定加速学习C++,让二面时,基础问题不出错
1.
//在64位结果是什么 struct node{ int i; int *p; } int main(){ node a; cout<<sizeof(a.i)<<sizeof(a.p)<<sizeof(a)<<endl; } 我答得4,4,8;不过int *p应该是82. 什么是虚函数
3. 32位和64位下,基础数据类型有什么不同
4. 在一千万个数中找一百个最大值(采用最小堆构建前100个值,从101个开始遍历并调整最小堆,整个时间复杂度是nlogn)
5.反转链表(3分钟写了reverse,12分钟在构造链表还错了,就因为我忘了new node/malloc(siezof))
6. 冒泡排序最坏的时间复杂度(n^2);
7. 快速排序最坏的时间复杂度(nlogn),【54321】使用快排 正序的时间复杂度是(我觉得就是nlogn,因为需要partiton)
8. 一个节点为n的数,最坏情况的深度是多少,最好是多少?(n,logn+1)
9. char的取值范围(忘了是问的值范围还是字符范围了)
10. unordered_map、unordered_set、set、map的底层是什么,他们有什么区别?(按照java源码,我说这两个set的底层都是map,而map的底层就是hash表,区别一点都没答出来)
11.hash解决冲突方法(线性探查法、链地址法)
12.hash表负载因子过大怎么办?(我说成倍数扩容,也不知道对不对)
13.了解红黑树吗?(还没看)
14.说说AVL树。(搜索二叉树的改进版,他的左右子树高度不超过1)