2019南开大学软件学院夏令营实录(不完整)
作者:互联网
现在是2019年6月16日,投了二十多所夏令营,目前南开大学给了我入营资格,自然十分珍惜。
距离南开大学软件学院夏令营(6.24-6.26)还有一周,需要准备专业测试和面试。说实在的我很慌,因为C++基础和数据结构基础忘得差不多,专业面试也不知道面什么,之前去知乎还有博客里面搜了一些南开软院的经验但是并没有找到,就想着记录一下自己的点滴,不论成败与否,都给自己一个交代,给后来的学弟学妹们一些经验吧。
保研系列博客会一直更新直至尘埃落定。
本篇博客是关于C++基础与数据结构模糊点的复习。
因为目前处在大三下学期的期末阶段,期末作品提交也即将截止,准备时间十分地仓促,我决定以每天30+题的量刷牛客网和leetcode专题,并在此博客记录。
2019.6.16
数据结构
- 深度为n的二叉树最多有2的k次方-1的结点
- 当执行出队操作时,一般只需要修改队头指针即可,但当只有一个元素时,head==rear需要同时修改队头和队尾指针,不然会溢出。
- 使用贪心算法的有:
单源最短路径中的Dijkstra算法:https://blog.csdn.net/cjc211322/article/details/24933909
最小生成树的Prim算法(点角度):https://blog.csdn.net/fzl1941572592/article/details/75213380
最小生成树的Kruskal算法(边角度):https://blog.csdn.net/mgsky1/article/details/77840286
C++基础
-
指针数组(*string[]):是数组,“指针”修饰这个数组,代表这个数组所有元素都是指针类型,在32位系统中,指针占4个字节。
-
数组指针((*string)[]):是指针,“数组”修饰这个指针,表示这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
-
.c文件经过编译得到.obj(目标文件),然后进行链接得到.exe(可执行文件)
-
x- -<5的运算顺序是,先x<5,再- - 但是- -操作会在执行下一步操作之前完成,也就是说下一步用到x时,其值已经小1了。
-
array. sort(sortFunction)是按照sortFunction结果大小排序。
-
构造与析构函数的调用顺序
构造:基类构造函数>子类承运变量构造函数>子类构造函数
析构:子类析构函数>子类成员变量析构函数>基类析构函数。 -
运算符优先级
-
需要整理各种不同排序的原理(待更新)
2019.6.17
昨天只做了10多题就碟机睡着了。今天在忙其他的期末作品然后身体也不太舒服,整个人比较崩溃。不过其实每次难过的时候也不过就是一小段吧,熬过去就可以了。也就是一周的时间就知道自己能不能拿下南开的优营了,加油吧。
继续刷题+准备一下面试的事情,然后再复习一下软件工程的期末考试。
数据结构
- 单链表将p插入q结点后面时,先把p->next=q->next, q->next=p;
- 希尔排序:https://blog.csdn.net/changhangshi/article/details/82744427
- 折半查找属于随机访问特性 链表不行
堆排序也不能用链表 因为调整堆时没法随机访问底层孩子节点
快速排序可以链表
归并排序可用链表
基数排序可用链表
插入排序链表比数组要快一些 减少移动次数 - 执行fopen函数时,如果文件打开成功,则返回该文件结构体的指针,如果打开失败(例如,读打开时文件不存在,写打开时文件不能创建),则返回NULL(即0)。
- #define 宏定义只是替换,只是替换,只是替换,不要自己加小括号
- 三维数组可以看成是一本书!int a[3][4][2]; 就是有3页每页4行2列
- 无符号整数的取值范围是0-255
- 稀疏矩阵在采用压缩存储后将会失去随机存储的功能。因为在这种矩阵中,非零元素的分布是没有规律的,为了压缩存储,就将每一个非零元素的值和它所在的行、列号做为一个结点存放在一起,这样的结点组成的线性表中叫三元组表,它已不是简单的向量,所以无法用下标直接存取矩阵中的元素。
- 主要靠什么类型系统可以隐式的转换为float类型,在C/C++中,char,int,long, double都可以,不过会有警告。
2019.6.18
刷牛客网上的题每次都是40%左右的正确率,觉得自己笔试堪忧。但是加油,我只能通过加大刷题力度,还有好好看书整理知识点来补救了。怕的不是被别人打败,怕的是自己把自己想崩溃。多做题多思考,别瞎想。加油!
数据结构
-
如何判断循环队列Q是空还是队满?
Q.front==Q.rear;
//不行,因为空满无法判断
Q.front==(Q.rear+1)%Maxsize;
//可以,n为队列大小 -
直接插入法,最好的情况时间复杂度为O(n), 最坏的情况为O(n^2) , 其中最好的情况是指基本有序
归并排序,最好最坏的情况时间复杂度都为O(nlogn)
快速排序,最好的情况下时间复杂度为O(nlogn),最坏的情况下为O(n^2), 其中最坏的情况是指枢纽元素太大或者太小,造成比较后,被比较的元素都在一侧,最好的情况是枢纽元素在所有元素中适中 -
平衡二叉树,平衡因子是左子树高度-右子树高度;平衡二叉树的查找时间复杂度为O(logn)
https://blog.csdn.net/jjavaboy/article/details/79330544 -
深度优先搜索算法:按照某种条件试探搜索,如果前进中遭失败,则退回头另选通路继续,直到找到条件的目标为止。适合使用递归来实现。假设树的定点数为V,则算法的空间复杂度为O(V)
-
广度优先搜索算法:先访问该节点的所有子节点,遍历完毕选取它未访问过的子节点重复上述过程,直到找到目标为止。
-
下标从1开始,在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在([n/2]+2)位置上:小根堆中最大的数一定是放在叶子节点上,堆本身是个完全二叉树,完全二叉树的叶子节点位置大于[n/2]
-
逻辑运算符与(&&)有做结合性,先算左再算右,且若左表达式的值未假(0),则右表达式不参与运算。
-
F1(),F2() 两个函数并行运算,可能先1后2,也可能先2后1,还可能,其中一个运行到一半执行另一个。
-
引用类型再堆上分配,值类型在栈上分配。值类型不会被垃圾回收,值类型不需要指针来引用。
2019.6.21
这几天在狂赶期末作品,耽误了好多,,昨天还是凌晨三点睡的,然而我下周一就要去笔试面试,实在慌的一批,不废话,今天尽快开始刷题和准备面试问题。
数据结构
- 求补运算:不考虑符号位,所有都取反+1
- 求补码:数值位取反+1
- 与运算(&&):两边都为1才是1,或运算(|)有一个1就是1,异或运算(^)不同为1,相同为0,具体参照:https://blog.csdn.net/tiansheng1225/article/details/83008261
- B-树是一颗平衡多叉树,是排序树,m阶B-树也就是是树的度为m,即节点最大的子节点数目为m,是一棵m叉平衡排序数。
C++基础
-
对于一个频繁使用的短小函数,在C语言中用宏实现,在C++中应用内联函数实现。
-
对于直接插入排序来说,逆序对越少,需要比较的次数就越少。
-
n个数值选出最大m个数(3<m<n)的最小算法复杂度是O(n)//没懂
-
成员函数被重载的特征:
(1)相同范围(在同一个类中)
(2)函数名字相同
(3)参数不同
(4)virtual关键字可有可无 -
覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同范围(分别位于派生类与基类)
(2)函数名字相同
(3)参数相同
(4)基类函数必须有virtual关键字 -
隐藏 是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别钰重载混淆)
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
2019.6.23
aaaaaa,明天就要面试笔试了,我都没怎么么准备,期末作品还没完成,期末考试也没复习,啊啊啊我好慌啊,啊啊啊加油我觉得我的综合实力还是比较强的,不放弃不放弃!!
2019.6.24
临时抱佛脚还是有用的!!明天考专业测试,可能会虚啊,但是也要好好准备!!还有26号的期末考啊啊啊啊,加油加油冲冲冲!!!
2019.6.26
emmm 最终结果是没有录取,笔试考的都是一些比较基础的C++/C的知识以及手写代码,还有一题算法题, 现在想想应该是非常简单的,但是我因为准备的不充分考得稀巴烂。被拒的原因也是导师对我没兴趣,觉得我背景不符合,所以婉拒了我,但是我觉得是因为老师已经有合适的人选了 才这么说的。夏令营其实还是蛮有趣的,放在期末就不有趣了。。。
关于南开具体的经历和体验我等全部尘埃落定了再开一篇经验帖全部补上吧,伤心了两天还是决定好好准备后边的夏令营,毕竟现在一个offer都没有还是很慌张的,所以加油吧!
标签:函数,2019.6,C++,2019,数组,基类,南开大学,夏令营,指针 来源: https://blog.csdn.net/qq_43145926/article/details/92432383