Thank you for your interest in joining Plume! We’re excited to meet you, and this guide will help you prepare for your upcoming interviews. All engineering applicants will go through a straightforward, three-stage interview process.

Stage 1. Coding Screen

The first stage is a simple coding screen, which we will send out to candidates that we’re interested in interviewing. If you don’t receive a response from us, you may be ineligible, or your background might not be a great fit:

We encourage you to apply again once you meet these requirements.

The coding screen is administered on HackerRank, and we will send a personalized link directly to your email. It consists of three coding questions, each of which should take approximately 20 minutes for a skilled candidate. You can choose any language to implement the solutions in—even Python passes all the test cases in time.

The questions can be challenging. If you cannot come up with an optimized solution, we recommend coding a brute-force solution that passes the first few test cases, then moving on to the next problem. Please do not cheat by asking your friends or AI tools. The questions can be solved with simple data structures, and will not require the implementation of specific algorithms or data structures to solve, including:

You do not have to pass all test cases or even complete all three problems to advance to the next round. We will take your performance on the coding screen, your previous work experience, and your code style/quality all into consideration.

Stage 2. Phone Screen

The second stage is a one-hour phone screen with a member of Plume’s engineering team. You will have full flexibility with preparing for this interview, as you get to choose any one-hour block of time to schedule the interview, and you will share your screen while using your personal computer setup for coding. You will also be able to access external resources like Google, as long as you share them with the interviewer on your screen.

For the smart contract engineering role, you will be asked to code a simple smart contract from scratch using Solidity. Please prepare your personal development environment so you can compile and run this sample NFT smart contract that uses the OpenZeppelin library:

// contracts/MyNFT.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyNFT is ERC721 {
    constructor() ERC721("MyNFT", "MNFT") {}
}