石头科技(苏州)的奇幻面试经历
第一场就挂了,应该说笔试环节就挂了。真的很crazy,感觉很无语。
笔试题是一个简单的删除链表倒数第n个节点,时间要求25分钟。
main函数里面手动定义链表的每个节点,使用new分配内存。把链表head与n传入需要实现的函数removeN(Node* node, uint32_t n)。
为了删除节点n,我使用tem保存了n号节点的指针,然后delete temp。下面的发生的事情就非常的戏剧性了。
代码写完,进行review。
面试官:为什么要delete。
答:会内存泄漏巴拉巴拉。
面试官:不需要delete,temp是临时变量,自是栈上面分配的,removeN结束后temp会自动释放。
答:node是main函数里面new分配的,需要手动delete。(我翻到创建链表的代码部分)
面试官:你的node是这样new出来的啊,(巴拉巴拉记不太清了),那没什么好说的了,看来你对链表还不是很熟悉。
我瞬间有点给我整不自信了,看了下代码没问题啊,创建表头,然后一个个往后追加节点。
我尝试跟他解释,说了半天,感觉他都没弄明白,说我创建的链表有问题。说不应该delete temp,temp=front->next,是一个零时变量,delete temp不能释放内存,函数结束之后这个节点的内存会自动释放。嘴上还一直挂着:“那就没什么说的了”这句话,给我整的有点上头了,我就问他,那要是你来实现你怎么做。
最后直接抛下一句: 已经过了25分钟了,已经不过关了。
真的是究极离谱,笔试开始前我打开vs给他看,他还问我能不能本地编译😂
结束之后心情久久不能平静,就这水平也能出来给别人面试,真的服了,连这种基础的东西都不懂。#软件开发2024笔面经#
笔试题是一个简单的删除链表倒数第n个节点,时间要求25分钟。
main函数里面手动定义链表的每个节点,使用new分配内存。把链表head与n传入需要实现的函数removeN(Node* node, uint32_t n)。
为了删除节点n,我使用tem保存了n号节点的指针,然后delete temp。下面的发生的事情就非常的戏剧性了。
代码写完,进行review。
面试官:为什么要delete。
答:会内存泄漏巴拉巴拉。
面试官:不需要delete,temp是临时变量,自是栈上面分配的,removeN结束后temp会自动释放。
答:node是main函数里面new分配的,需要手动delete。(我翻到创建链表的代码部分)
面试官:你的node是这样new出来的啊,(巴拉巴拉记不太清了),那没什么好说的了,看来你对链表还不是很熟悉。
我瞬间有点给我整不自信了,看了下代码没问题啊,创建表头,然后一个个往后追加节点。
我尝试跟他解释,说了半天,感觉他都没弄明白,说我创建的链表有问题。说不应该delete temp,temp=front->next,是一个零时变量,delete temp不能释放内存,函数结束之后这个节点的内存会自动释放。嘴上还一直挂着:“那就没什么说的了”这句话,给我整的有点上头了,我就问他,那要是你来实现你怎么做。
最后直接抛下一句: 已经过了25分钟了,已经不过关了。
真的是究极离谱,笔试开始前我打开vs给他看,他还问我能不能本地编译😂
结束之后心情久久不能平静,就这水平也能出来给别人面试,真的服了,连这种基础的东西都不懂。#软件开发2024笔面经#
全部评论
相关推荐