“常用在函数调用结束之后清理相关的资源”
“常用来释放数据库连接,文件打开句柄等释放资源的操作”
“多个defer的执行顺序是后进先出LIFO”
“defer、return、返回值三者的执行是:return最先执行,先将结果写入返回值中”
“.….”
众人一通举手,考官一个个按照举手顺序进行点名,基本回答都是正确的,因为这个题目比较开放,但是也有鬼扯的。考官的助理很快给各个组加了分数,张明杰猜测,对积极发言的选手,估计也是记录下来,因为最终还是要选择强的人留下。
考官继续说道:“第四题十分,在Go语言中,函数返回局部变量的指针是否安全?简单阐述理由,题目说完,大家可以举手了”。
这个貌似有点难,大家还在愣神之中,张明杰举手回道:“在 Go 中是安全的,Go 编译器将会对每个局部变量进行逃逸分析。如果发现局部变量的作用域超出该函数,则不会将内存分配在栈上,而是分配在堆上”
考官继续问道:“还有不同意见的没有?”
大家一看,这应该是回答错了啊,有人举手回道:“在 Go 中是不安全的,返回的指针地址,使用不当的话可能造成内存越界”
张明杰一脸鄙视,这个傻鸟,你是来投机的吧,跟内存越界有毛关系,你指针用不好,在哪都会内存越界的。
考官继续问道:“还有不同意见的没有?”
嗯,众人不解,难道是有时候安全,有时候不安全?算了算了,回答错了还要扣十分呢,先不抢了,考官见无人举手说道:“回答安全的结果是正确的”
众人面面相觑,这个考官还会给人下套啊,回答错的的同学,只好接受被扣了十分。
很快第三个考官开始:“第五题十分,在Java语言中,关于HashMap类作用有哪些?,题目说完,大家可以举手了”
张明杰想,奥,原来是这个姿势,从C编程到Go编程,到Java编程,这咱都玩过啊,这个题目有点送分啊,众人纷纷举手,举手迟了,就被别人说完了。
“HashMap允许将null用作键”
“HashMap允许将null用作值”
“可以用哈希函数值跟数组的长度做位与运算,获取对应数组的索引”
“…..”一通举手之后,各个组得到了分数,张明杰也举手抢到了十分
考官开始:“第六题也是十分,请看大屏幕的投影,这段程序运行结果是多少?,题目说完,大家可以举手了”
大家开始看屏幕上的代码,写的还比较长,差不多有一百行,众人还没有看完,张明杰举手道:“结果是2”