哔哩哔哩2020校园招聘游戏测试笔试卷(二)知识点解析

题目直达
在这里插入图片描述
这里考察的是i++和++i的区别,i++是先使用i的值再执行加1操作,++i是先进行加1操作再使用i的值

public class Test {
	public static void main(String[] args){
    	 int a=0;
    	 System.out.println(a++);
    	 System.out.println(a);
    	 System.out.println(++a);
     }
}

执行完结果为
0
1
2

在这里插入图片描述
这里会导致程序崩溃,这是因为
char* p定义的是字符串指针变量,该指针变量指向一个字符串,该指针的值也就是字符串在内存中的地址,对于该指针而言,改变其的值相当于改变地址也就是改变指针的指向,因此只能做到修改指针的指向而做不到修改字符串的值;
char p[]定义的是字符串数组,该字符数组在内存中的存储是先分配新空间,再去填充,因此该数组的内容可以改变;
因此这一段的*p会崩溃,应该换成char p[]=“gello world”;

在这里插入图片描述
这里程序会崩溃,原因是函数可以返回局部变量的值,但是不能返回指向栈内存的指针,这里的局部函数get()返回的是一个指针,该指针指向data的地址。在内存分配上,全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。函数执行结束,操作系统会自动释放栈上的局部变量,并且函数返回的是局部变量的值拷贝。但是如果返回局部变量的地址,那么返回的是该局部变量地址的值拷贝,但是函数运行结束,该拷贝指针所指向的栈内容已经被释放即为野指针,对野指针所指向内容的操作都会造成段错误。

在这里插入图片描述
malloc是内存上的分配,函数返回指针指向堆空间的一块内存,new是对象上的分配,new在堆分配中创建一个对象,然后返回该对象的地址,也就是对该对象的引用。

第五题是c++的知识,对这门语言不熟悉就直接pass吧

在这里插入图片描述
关系型数据库:表和表,数据和数据,表和字段之间都存在关系,可以保证数据的完整性和一致性。常见的关系型数据库有mysql /oracle/sql server/sqlite
非关系型数据库,数据与数据之间没有关系,是一种数据结构化存储方法的集合,可以是文档或者键值对等。常见的非关系型数据库有
redis / hbase /mongoDB /CouchDB /Neo4J

在这里插入图片描述
算法真的是弱项,Dij记得非常明确是贪心,其他几个都没怎么留意了
迪杰斯特拉(Dijkstra)
贪心策略是每次选可达的点中距离源点最近的点进行扩展,即贪心选取最短距离的点

库鲁斯卡尔(Kruskal)
贪心策略是每次选最短的边(刨除成环的边)来作为最小生成树,即贪心最短边

普里姆算法(Prim)
贪心策略是每次选可达的点中距离曾经扩展过的点中任意点的最短距离,类似Dij,只是不是找距离源点的最短距离

KMP
模式匹配,使用的是动态规划思想,实现字符串匹配

在这里插入图片描述
这里是计算二分法查找次数的题目,也是常见题型,记住这个是事先排好序的,先后与15、8、10、12进行比较,共比较了4次

首先计算mid,之后与mid比较,如果大于mid则left=mid+1;如果小于mid,则right=mid-1;当left>right的时候,停止查找。

在这里插入图片描述
解决哈希冲突的主要方法有:
1、开放定址法:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。
Hi=(H(key)+di)% m (m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能为1,2,3,…m-1,称线性探测再散列)
2、再哈希法:当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突时。这个一般用于多字符串类型
3、链地址法:将所有关键字为同义词的记录存储在同一线性链表中。
4、建立一个公共溢出区:另外设立存储空间向量OverTable[0…v]用以存储发生冲突的记录;

装填因子用来表示哈希表的空间利用率,等于表中记录的个数/哈希表的长度,哈希表的装填因子越大,越容易发生冲突,插入新的数据项的时间也越长。

第10题太难了我也不会,根本没见过的题型

在这里插入图片描述
这种题还有可能的衍生就是求栈的长度,记录进出栈的顺序就可以,这个是欠考虑了4进来之后出掉4再进5的情况

在这里插入图片描述
怎么判断一个序列是不是堆:把这个序列看成数组型的二叉树,如果根结点是i,左子树是2i,右子树是2i+1
最大堆:父结点比左右子结点都要大
最小堆:父结点比左右子结点都要小

在这里插入图片描述
异或满足逆运算,可以实现同值相消,这样子去掉同值只剩下9

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
浮点数默认类型为double,大范围不能赋值给小范围,float的三种赋值方式

        float f=11.1f;
		float k=(float) 11.1;
		float m=11;

在这里插入图片描述

在这里插入图片描述
实例变量,对象被实例化在内存分配的空间的变量

在这里插入图片描述
699+1/2计算可得

在这里插入图片描述
在这里插入图片描述
纯脚本语言有:Perl,Python,Ruby,Javascript、Lua

在这里插入图片描述
在这里插入图片描述
排序算法的时间复杂度对照表
冒泡最原始最费时间,O(n^2)
选择和插入排序的时间复杂度也是O(n^2)
快速,归并和堆排序都是改进了的,时间复杂度为O(nlogn)

PS:八大排序算法的时间复杂度和空间复杂度比较https://blog.csdn.net/weixin_34377919/article/details/93619703

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值