A 调用 B,B 调用 C,谁的栈帧在最上面?谁先结束?
计算机原理 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
递归如果没有停止条件会怎样?
栈溢出最常见的原因是什么?
y = add(2,3) 若 add 返回 5,y 等于几?
举两个不同的数据类型。
静态类型的类型检查发生在运行前还是运行中?
动态类型里,一个变量能先存数字后存文字吗?
1 + "1" 直接报错,更像强类型还是弱类型?
文字 "5" 不转换,能直接和数字 3 相加求和吗?
栈上的局部变量需要我们手动清理吗?
参考答案(家长):会一直调用自己、一直叠栈帧,停不下来。
参考答案(家长):C 在最上面,C 先结束。
参考答案(家长):5。
参考答案(家长):递归没有正确的停止条件,栈帧无限增加。
参考答案(家长):运行前(编译时)。
参考答案(家长):开放答案,如"数字"和"文字(字符串)"。
参考答案(家长):强类型(不允许偷偷混算)。
参考答案(家长):能,类型是运行时才确定的。
参考答案(家长):不用,函数返回时自动收走。
参考答案(家长):在强类型里不行,要先把 "5" 转成数字 5。
堆和栈相比,最大的不同是什么?
手动管理内存时,"忘记释放"会导致什么?
一块数据满足什么条件会被当成垃圾回收?
用虚拟机的方式,好处是什么?
字节码的"高低"排位在源代码和机器码之间,对吗?
给 12 - 5 分词,写出 token 列表。
把 5 + 6 * 7 搭成树,然后从树的底部往上算一遍。
用同样办法算出 12 - 5 这棵树的结果。
把"小猫"和它会"喵一声"打包在一起,这更像哪种范式?
函数式为什么说更"好预测"?
参考答案(家长):内存泄漏,没用的数据一直占着内存,越占越多。
参考答案(家长):堆里的数据不随函数结束自动消失,需要专门回收。
参考答案(家长):一份程序能在装了虚拟机的不同电脑上都运行,跨平台。
参考答案(家长):没有任何变量或名字还能引用到它。
参考答案(家长):[12] [-] [5],共 3 个 token。
参考答案(家长):对,它是介于源代码和机器码之间的中间形式。
参考答案(家长):直接算根 -,12-5=7。
参考答案(家长):先算 6*7=42,再算 5+42=47。树的形状决定了计算顺序。
参考答案(家长):因为它尽量不修改已有数据,同样的输入总得到同样的结果。
参考答案(家长):面向对象。
想一个生活里"照步骤把输入变成输出"的例子。
用三条清楚的规则,教机器"判断一个数是不是双数"。
请找出这条规则的漏洞——"过马路:绿灯就走"。
说出电梯门可能有的几个状态。
如果现在是绿灯,下一个和再下一个分别是什么灯?
让台灯从"灭"变成"亮",需要什么信号?再按一下又会怎样?
用圈和箭头,画出台灯"灭↔亮"两个状态。
饮料3元,你先投2元再投1元,机器经过了哪几个状态?
"有限"是什么意思?举一个状态数不有限的例子。
一台机器读到"a"就换房,读"b"不动。输入"aab"读完换了几次房?
参考答案(家长):例:1)看这个数的最后一位;2)若是0/2/4/6/8则是双数;3)否则不是。
参考答案(家长):如洗衣机(脏衣服→干净衣服)、自动铅笔按一下出笔芯等,凡有固定步骤即可。
参考答案(家长):如"开着、关着、正在开、正在关"等,合理即可。
参考答案(家长):漏了"先看有没有车""红灯要停"等;机器只会绿灯就冲,很危险。
参考答案(家长):需要"按一下开关";再按一下从"亮"回到"灭"。
参考答案(家长):下一个黄灯,再下一个红灯。
参考答案(家长):0元→2元→3元(够钱,出货)→回到0元。
参考答案(家长):两个圈"灭""亮",两条箭头都标"按开关",互相指向对方。
参考答案(家长):换了2次(两个a各换一次,b不动)。
参考答案(家长):有限=数得清、数量固定;如"记住你说过的每一句话"要无限多状态,不有限。