整理了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. 待续………
&spm=1001.2101.3001.5002&articleId=156358986&d=1&t=3&u=0ff68bd8ddf94f02aa99aa768378632a)
1915

被折叠的 条评论
为什么被折叠?



