Section A · Orient

Positioning From Scratch

Most candidates arrive with one half of this role's skill stack and not the other. The single biggest mistake is pretending otherwise. Here's how to frame what you have, name what you don't, and turn the gap into a story interviewers respect.

The two candidate shapes

Roughly speaking, the candidate pool for a senior smart contract engineer (AMM/DEX) role splits into two shapes:

ShapeHasLacks
Shape A — production engineer4+ years shipping Solidity. Mainnet experience. Audit cycles. Foundry. Gas mindset.Deep AMM math intuition. Concentrated liquidity. CFMM theory. Fixed-point fluency at the derivation level.
Shape B — math/researchStrong applied math. Has read the CFMM papers. Understands the invariants. Maybe a CS/math degree.Production Solidity. EVM gas reality. Mainnet ops. The "I have shipped contracts holding nine figures" lived experience.

The role wants both. Few candidates have both. Your job is to (a) be honest about which shape you are, (b) make the strong side land, and (c) demonstrate active forward motion on the weak side.

If you have production Solidity but light AMM math

Most common shape. You've shipped lending, vaults, NFT projects, maybe a fork of an existing AMM. You can write a swap function but couldn't derive Uniswap v3's sqrtPriceX96 math from scratch.

What's already a strength

  • EVM/gas intuition — interviewers care a lot about this and it transfers cleanly.
  • ERC-20 quirk fluency — fee-on-transfer, rebasing, non-standard returns. This is half the bugs in DEX peripherals.
  • Audit-loop literacy — having lived through one is a meaningful signal.
  • Foundry / Hardhat workflow — testing discipline transfers.

What to close

  • Derive the constant-product swap formula by hand. Not memorize — derive.
  • Read the Uniswap v3 whitepaper. Understand virtual reserves and ticks.
  • Read the StableSwap paper (Curve). Understand the D invariant and why Newton's method.
  • Read the v4 architecture overview. Hooks, singleton, transient storage for locks.
  • Implement getAmountOut from scratch, including fee math, in 30 lines.
Honest framing

"My Solidity production experience is at lending protocols and vaults — I can speak to gas optimization, ERC-20 quirks, and audit cycles. I've read the v3 and v4 papers in the last few weeks and re-derived the math, but I haven't shipped concentrated-liquidity logic. I'd want to ramp on that quickly, and here's how I'd start."

If you have AMM math but limited production Solidity

You come from quant, applied math, or research. You can derive the StableSwap invariant on a napkin. You're not sure where SLOAD lives in the gas table.

What's already a strength

  • The math fluency they explicitly want as a "nice to have" — for this role, it's closer to a "must-have."
  • Comfort with papers and derivations. Interviewers in design rounds notice immediately.
  • Reasoning-from-first-principles defaults. Senior signal.

What to close

  • Build one Foundry project end-to-end. A tiny CFMM. Tests. Deploy script. Run it.
  • Internalize the EVM gas model. SLOAD, SSTORE, CALL, calldata cost, memory expansion.
  • Get fluent in Solidity-specific idioms — custom errors, immutable, unchecked, packed storage.
  • Read three audit reports cover to cover. The vocabulary will lodge.
  • Know the names of the major math libraries (FullMath, PRBMath, Solady FixedPointMathLib) and what each is good for.
Honest framing

"I come from a math/research background and can derive most of the AMM invariants from scratch. My production Solidity experience is lighter — I've shipped a small project end-to-end and contributed to one audited codebase. I'd lean on the team for gas and storage-layout review while I ramp, and I'd be self-sufficient on the math and design side from day one."

Bridge phrases that work in interviews

These are useful when you're asked something you don't fully know. Reach for them instead of bluffing:

  • "I haven't worked with X directly. My closest reference point is Y. Want me to reason about X from first principles?"
  • "I'd reach for [library / pattern] here, but I'd want to verify the precise rounding direction before shipping."
  • "The invariant tells me [X]. Let me trace whether the implementation honors it at the boundary."
  • "I'd test this with a fuzz invariant first. Specifically: [property]."
  • "In v2 you'd do [A]. In v3 the analogue is [B], because ticks change the storage model. I'm not sure about v4 — would you walk me through it?"

Honest framings that beat bluffing

The fastest way to fail this loop is to invent expertise you don't have. Senior engineers can smell it immediately, and the smell is unrecoverable. Compare:

Don't saySay instead
"Yeah, I've worked with concentrated liquidity.""I've studied v3 but haven't shipped concentrated-liquidity logic. Want me to walk through what I'd watch out for at tick boundaries?"
"I know Yul.""I can read Yul and have written small inline-assembly blocks for selector dispatch and packed loads. I wouldn't claim Yul fluency at the level of a whole pool contract."
"I'm comfortable with formal verification.""I've used Halmos / Echidna on a project. I'm not at the level of writing K-framework proofs."
"I deployed to mainnet many times.""I've deployed N production contracts. The largest holding $X TVL. Here's the specific deploy-day playbook we ran."

The honest version always lands better. It demonstrates calibration, which is itself a senior signal.

A 90-minute build to close most gaps

Reading is cheaper than building, but building sticks. If you have one evening before the loop, do this:

  1. Spin up a Foundry project. forge init.
  2. Implement a minimal constant-product pool. Two-token, fee-on, no router. Maybe 80 lines.
  3. Write 5 invariant tests. K never decreases (modulo fee). Output rounds toward protocol. Balance accounting matches reserve accounting. Etc.
  4. Fork mainnet against a real Uniswap v2 pair. Compare your getAmountOut output to the live one.
  5. Read your own bytecode. forge inspect Pool bytecode. Look at the function selectors. Verify selector ordering.

You will internalize more in 90 minutes than three hours of reading. Bonus: you have a concrete project to point at in interviews.

Resume reframings that help

For Shape A — production engineer — surface the math-adjacent work:

  • Any fixed-point math, oracle precision, rate calculations, or interest-rate curves you've implemented.
  • Any audit you've been through, named.
  • Any gas-optimization wins, with before/after numbers.

For Shape B — math/research — surface the production-adjacent work:

  • Any deployed code, even small.
  • Any open-source contributions to Solidity tooling or DeFi libraries.
  • Audit reports you've authored or co-authored, even for fun.
  • CTF / Damn Vulnerable DeFi / Ethernaut completions.

Common positioning mistakes

  • Overclaiming v3 fluency. Many candidates have used the router. Few have read UniswapV3Pool.sol end to end. Interviewers can tell in 30 seconds.
  • Listing every chain you've touched. Doesn't help. They want depth in one EVM mainnet codebase, not breadth.
  • Hiding the math gap. The math is the role. If you don't have it, say so and show motion.
  • Hiding the production gap. Same logic. Mainnet scars matter.
  • Conflating writing audits with surviving them. Different things. Name your role precisely.
The one rule

If you wouldn't ship the line of code without checking the docs, don't claim fluency in the interview.