Solidity 100道面试题(汇总)

整理了solidity智能合约开发常见的一些面试题,感兴趣的小伙伴可以收藏关注后续更新。

1. 私有、内部、公共和外部函数之间的区别?

2. 智能合约大小大约可以有多大?

3. create 和 create2 之间有什么区别?

4. Solidity 0.8.0 版本对算术运算有什么重大变化?

5. 代理需要哪种特殊的 CALL 才能工作?

6. 在 EIP-1559 之前,如何计算以太坊交易的美元成本?

7. 在区块链上创建随机数的挑战是什么?

8. 荷兰式拍卖和英式拍卖之间有什么区别?

9. ERC20 中的 transfer 和 transferFrom 之间有什么区别?

10. 对于地址白名单(allowlist),使用映射还是数组更好?为什么?

11. 为什么不应该使用 tx.origin 进行身份验证?

12. 以太坊主要使用什么哈希函数?

13. 1 个 Ether 相当于多少个 gwei?1 个 Ether 相当于多少个 wei?

14. assert 和 require 之间有什么区别?

15. 什么是闪电贷?

16. 什么是检查-效果-交互(check-effects-interaction)模式?

17. 运行独立验证节点所需的最小以太数量是多少?

18. fallback 和 receive 之间有什么区别?

19. 什么是重入?

20. 上海升级后,每个区块的 gas 限制是多少?

21. 什么阻止无限循环永远运行?

22. tx.origin 和 msg.sender 之间有什么区别?

23. 如何向没有 payable 函数、receive 或回退(fallback)的合约发送以太?

24. view 和 pure 之间有什么区别?

25. ERC721 中的 transferFrom 和 safeTransferFrom 之间有什么区别?

26. 如何将 ERC1155 代币转换为非同质化代币?

27. 访问控制是什么,为什么重要?

28. 修饰符(modifier)的作用是什么?

29. uint256 可以存储的最大值是多少?

30. 什么是浮动利率和固定利率?

31. transfer 和 send 之间有什么区别?

32. 如何在 Solidity 中编写高效的 gas 循环?

33. 代理合约中的存储冲突是什么?

34. abi.encode 和 abi.encodePacked 之间有什么区别?

35. uint8、uint32、uint64、uint128、uint256 都是有效的 uint 大小。还有其他的吗?

36. 在权益证明之前后,block.timestamp 发生了什么变化?

37. 什么是抢跑(frontrunning)?

38. 什么是提交-揭示方案,何时使用它?

39. 在什么情况下,abi.encodePacked 可能会产生漏洞?

40. 以太坊如何确定 EIP-1559 中的 BASEFEE?

41. 冷读(cold read)和热读(warm read)之间有什么区别?

42. AMM 如何定价资产?

43. 代理中的函数选择器冲突是什么,它是如何发生的?

44. payable 函数对 gas 的影响是什么?

45. 什么是签名重放攻击?

46. 什么是 gas griefing?

47. 如何设计一个石头-剪刀-布的智能合约游戏,使玩家无法作弊?

48. 自由内存指针是什么,它存储在哪里?

49. 接口中有效的函数修饰符有哪些?

50. 函数参数中的 memory 和 calldata 有什么区别?

51. 描述三种存储 gas 成本类型。

52. 为什么可升级合约不应该使用构造函数?

53. UUPS 和 Transparent Upgradeable Proxy 模式之间有什么区别?

54. 如果合约通过 delegatecall 调用一个空地址或之前已自毁的实现,会发生什么?如果是常规调用而不是 delegatecall 呢?

55. ERC777 代币存在什么危险?

56. 根据 Solidity 风格指南,函数应该如何排序?

57. 根据 Solidity 风格指南,函数修饰符应该如何排序?

58. 什么是债券曲线(bonding curve)?

59. OpenZeppelin ERC721 实现中的 safeMint 与 mint 有何不同?

60. Solidity 提供哪些关键字来测量时间?

61. 什么是三明治(sandwich)攻击?

62. 如果向一个会回滚的函数进行 delegatecall,delegatecall 会怎么做?

63. 乘以和除以二的倍数的 gas 高效替代方法是什么?

64. 多大 uint 可以与一个地址在一个槽中?

65. 哪些操作会部分退还 gas?

66. ERC165 作用于什么?

67. 如果代理对 A 进行 delegatecall,而 A 执行 address(this).balance,返回的是代理的余额还是 A 的余额?

68. 滑点参数有什么用?

69. ERC721A 如何减少铸造成本?有什么权衡?

70. 为什么 Solidity 不支持浮点数运算?

71. 什么是 TWAP?

72. Compound Finance 如何计算利用率?

73. 待续………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlueSea 每日coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值