> For the complete documentation index, see [llms.txt](https://docs.eridian.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eridian.xyz/ethereum-dev/solidity-notes/interview-questions/4.-advanced-interview-questions.md).

# 4. Advanced - Interview Questions

{% embed url="<https://www.rareskills.io/post/solidity-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?
