听说的一道google面试题

galois_godel 2007-01-07 08:27:48
1)堆与栈的区别?
2)如何判断栈分配内存的方向(向上/向下)
3)如何最快的判断栈的容量(不要用递归和循环)
...全文
471 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NowCan 2007-01-08
  • 打赏
  • 举报
回复
1、栈,先进后出,这是主要区别。栈用于函数内临时变量,堆用于动态分配内存。
2、用函数,同上
3、等待答案。
39457760 2007-01-08
  • 打赏
  • 举报
回复
楼主可有更好的答案?
39457760 2007-01-08
  • 打赏
  • 举报
回复
2)用函数,返回函数内的局部变量地址,和发起调用的函数内局部变量地址比较
3)这个只想出这一个方法,windows下,读取可执行文件格式里有“保留堆栈大小”的属性,应该可以判断栈的容量
vista_liang 2007-01-08
  • 打赏
  • 举报
回复
1. 栈是数据的存取方法,先进后出;堆是数据的排列方法,用2叉树定义就是,子节点都必须大于(或都小于)父节点。堆和栈说的是两码事。
2. 函数,同上的上
3. 那要看用什么存储方式了,如果用数组(或其他静态的连续的存储方式)存储数据,最大容量你定义多少就是多少,要得到已用的容量,用尾地址减首地址在加1就是了;用链表(或其他动态的非连续的存储方式),最大容量就是就是程序自己定义的,或系统定义的,要得到已用的容量,除非是定义了指针数组(或有能替代的、连续性的类等来定义),指向各个节点,用指针的个数乘以节点的容量,否则应该必须用到循环或递归。
diannaomingong 2007-01-08
  • 打赏
  • 举报
回复
1.堆是扔个东西进去或者取出来就要重排序放好的,栈是只能扔在上面从上面取的~
2.push个东西进去再看内存新地址和原地址(前提是能直接访问内存...,不同的编程语言有规定各自标准库实现栈的方向,这个要看编程语言的文档)
3.定义栈的时候应该要定义栈的当前length和每单位大小的,乘下
shshsh_0510 2007-01-08
  • 打赏
  • 举报
回复
1, 堆是堆,栈是栈。如果有人很认真的问你是否会区别土豆与黄瓜,你是什么感觉?
2,现在的机箱很多都支持横放与竖放的,这个不太好说吧
3,如果说明书没有标明相应参数的话,一般测试容量最好的工具是量杯。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧