🔴4. Advanced - Interview Questions
All of these questions can be answered in three sentences or less.
4.1 What addresses to the ethereum precompiles live at?
4.2 Describe what “liquidity” is in the context of Uniswap V2 and Uniswap V3.
4.3 If a delegatecall is made to a contract that makes a delegatecall to another contract, who is msg.sender in the proxy, the first contract, and the second contract?
4.4 What is the difference between how a uint64 and uint256 are abi-encoded in calldata?
4.5 What is read-only reentrancy?
4.6 What are the security considerations of reading a (memory) bytes array from an untrusted smart contract call?
4.7 If you deploy an empty Solidity contract, what bytecode will be present on the blockchain, if any?
4.8 How does the EVM price memory usage?
4.9 What is stored in the metadata section of a smart contract?
4.10 What is the uncle-block attack from an MEV perspective?
4.11 How do you conduct a signature malleability attack?
4.12 Under what circumstances do addresses with leading zeros save gas and why?
4.13 What is the difference between payable(msg.sender).call{value: value}("") and msg.sender.call{value: value}("")?
4.14 How many storage slots does a string take up?
4.15 How does the --via-ir functionality in the Solidity compiler work?
4.16 Are function modifiers called from right to left or left to right, or is it non-deterministic?
4.17 If you do a delegatecall to a contract and the opcode CODESIZE executes, which contract size will be returned?
4.18 Why is it important to ECDSA sign a hash rather than an arbitrary bytes32?
4.19 Describe how symbolic manipulation testing works.
4.20 What is the most efficient way to copy regions of memory?
4.21 How can you validate on-chain that another smart contract emitted an event, without using an oracle?
4.22 When selfdestruct is called, at what point is the Ether transferred? At what point is the smart contract’s bytecode erased?
4.23 Under what conditions does the Openzeppelin Proxy.sol overwrite the free memory pointer? Why is it safe to do this?
4.24 Why did Solidity deprecate the “years” keyword?
4.25 What does the verbatim keyword do, and where can it be used?
4.26 How much gas can be forwarded in a call to another smart contract?
4.27 What does an int256 variable that stores -1 look like in hex?
4.28 What is the use of the signextend opcode?
4.29 Why do negative numbers in calldata cost more gas?
4.30 What is a zk-friendly hash function and how does it differ from a non-zk-friendly hash function?
4.31 What does a metaproxy do?
4.32 What is a nullifier in the context of zero knowledge, and what is it used for?
4.33 What is SECP256K1?
4.34 Why shouldn’t you get price from slot0 in Uniswap V3?
4.35 Describe how to compute the 9th root of a number on-chain in Solidity.
4.36 What is the danger of using return in assembly out of a Solidity function that has a modifier?
4.37 Without using the % operator, how can you determine if a number is even or odd?
4.38 What does codesize() return if called within the constructor? What about outside the constructor?
Last updated