If you're looking to build a career as a web3 developer, or trying to hire someone in the field, we have some helpful questions and answers in this article.
These questions are going to give you an insight into what kind of theoretical screening questions could be asked when hiring or interviewing for development related roles in crypto & web3.
Since crypto is all about building innovative tech products, developers tend to take a very important seat in the lifecycle of the products.
Developer roles are still and continue to be one of the most in demand roles in the blockchain industry even though we have seen a lot of career branches come out such as Smart Contract Developers, Smart Contract Auditors, Technical Content Writers, Blockchain Architects, Developer Relations etc.
To be a good blockchain developer, you need to know about smart contracts, decentralized apps, and agreement methods, business and contractual logic and of course it goes without saying you should be great at programming.
If you want to dive deeper into the roadmap of a web3 dev we recently published an in-depth article on how you can become a blockchain developer.
Popular programming languages that would be an advantage in web3 are Solidity, Vyper, Rust, Javascript, Python.
As with web2 development, in case you need to learn a new language you can pick up the syntax through documentation while the overall logical thinking gets carried on.
Ideally we would also advise to spend some time on your communication skills as the industry is heavily dependent on community and relationships.
It also comes in handy if you are planning to slowly transition into dev rel or even technical writing roles.
So let's get started with some interview questions and answers!
General Blockchain Tech Screening Questions
The screening questions like the ones below could be asked in the initial one or two rounds of your application.
The more technical rounds that come later focus on the specifics of programming and your logical thinking prowess.
What is the difference between public and private blockchains?
Answer: Public blockchains are open to anyone anywhere in the world, while private blockchains are only accessible to authorized users. Many companies use private blockchains internally.
What is a smart contract?
Answer: A smart contract is a self-executing contract with the terms of the agreement between buyer and seller being directly written in the code.
However, smart contract logic doesn't need to be about buying/selling necessarily, you can use smart contracts to borrow against a collateral, to send digital assets to other users, and many other applications.
More generally, a smart contract is just code that executes predictably and in a decentralized manner.
That means you can trust the network to execute it correctly, regardless of which node in specific has executed it, making it possible for many applications to run in a peer-to-peer fashion, without intermediaries.
What is the difference between Web2 and Web3?
Answer: Web2 is the current version of the internet, where major players are centralized and controlled by a few large corporations. Web3 is the next evolution of the internet, which aims to be decentralized and controlled by the users.
What is the difference between a dApp and a traditional application?
Answer: A traditional application is centralized and controlled by a single entity, while a dApp is decentralized and lives on the blockchain.
What is the difference between a token and a coin?
Answer: Native assets of a blockchain are usually referred to as coins(eg. BTC, ETH) while tokens are additional assets created on top of another blockchain(eg. LINK, GRT, AAVE)
What is a consensus algorithm?
Answer: A consensus algorithm is a mechanism that allows multiple nodes in a distributed system to agree on a single state of the system. Example: Proof of work, proof of stake, proof of history etc.
What is proof-of-work (PoW)?
Answer: Proof-of-work (PoW) is a consensus algorithm used by some blockchains to validate transactions and create new blocks. In POW miners “solve the hash” to reach a hash that is lower than the target to successfully mine the block.
What is the role of a miner in proof-of-work?
Answer: Miners are nodes on the network that compete to solve the complex mathematical problems required to validate transactions and create new blocks. They are incentivized with rewards in native crypto for their computational work.
What is proof-of-stake (PoS)?
Answer: Proof-of-stake (PoS) is a consensus algorithm used by some blockchains to validate transactions and create new blocks, where validators stake their tokens to participate in the consensus process.
What is a node?
Answer: A node is a computer or device that participates in the network by validating transactions and maintaining a local copy of the blockchain.
Nodes may have different roles, depending on the network. Ethereum, for example, has "light clients", which respond to queries for data and submit transactions, but don't keep a local copy of the Ethereum state.
In general, nodes are just devices that contribute to a network in some, usually predefined, role.
What is a blockchain fork?
Answer: A blockchain fork occurs when two or more blocks are added to the chain at the same time, creating two or more versions of the blockchain.
What is a hard fork?
Answer: A hard fork occurs when a blockchain is split into two separate chains, with different rules and protocols.
What is a soft fork?
Answer: A soft fork occurs when a blockchain is updated to enforce new rules, but the old rules are still valid.
What is an Ethereum Virtual Machine (EVM)?
Answer: The Ethereum Virtual Machine (EVM) is a virtual machine that runs on the Ethereum blockchain, which allows for the execution of smart contracts.
What is gas in the context of Ethereum?
Answer: Gas is the unit used to measure the amount of computational effort required to execute a transaction or contract on the Ethereum blockchain.
Why is gas important from a security perspective in blockchain?
Answer: Gas fee disincentivizes malicious actors from congesting the network or trying to take control of it. Any such effort would incur a huge gas fee resulting in a huge monetary input from the person who is trying to execute the series of transactions.
What is a Merkle tree?
Answer: A Merkle tree is a tree-like data structure used in blockchain to efficiently verify the integrity of large data sets. It allows to maintain integrity of the data and efficiently map huge amounts of data.
What is a distributed ledger?
Answer: A distributed ledger is a database that is spread across multiple nodes or devices in a network, allowing for secure and transparent record-keeping.
What is a nonce?
Answer: A nonce is a random number that is used in the proof-of-work to find a valid hash for a block.
What is a 51% attack?
Answer: A 51% attack occurs when a single entity or group of entities control more than 50% of the computing power in a network, allowing them to manipulate transactions and potentially compromise the integrity of the network.
What is the difference between a private key and a public key?
Answer: A private key is a secret key used to sign transactions on the blockchain, while a public key is a public identifier used to receive transactions. The public key can be easily shared with others while the private key is to be completely kept secret
Blockchain Programming Language Specific Interview Questions & Answers
Developer interviews almost always involve a coding round where you are given specific problems to solve by the interviewer and you try to reach a solution in a live setting.
It is also suggested to think out loud and explain your thinking process while you are trying to solve these problems.
The goal usually here is to understand your coding prowess but also to understand how you think through problems. Coding has a lot to do with logical and analytical thinking processes and the coding test is meant to test you on both, the syntax as well as logic.
Solidity Interview Questions & Answers
Solidity is a high-level programming language primarily used to develop smart contracts on Ethereum.
Solidity is compiled into bytecode, which is executed by the Ethereum Virtual Machine (EVM) on the chain.
Solidity is the most popular language used for creating smart contracts on Ethereum, as it is specifically designed for the platform and allows for secure and efficient execution.
Solidity can be used for a variety of purposes on the blockchain, including building decentralized applications (dApps), creating and managing tokens, developing automated contracts for financial transactions, and establishing digital identities.
Due to its ability to facilitate secure and transparent execution of smart contracts, Solidity has become an increasingly popular language for blockchain developers and is used in a wide range of dapps.
In addition to Ethereum, Solidity is also used on other blockchain platforms such as Binance Smart Chain and Polygon. As the adoption of blockchain continues to grow, the demand for Solidity developers is expected to increase, making it a valuable skillset to have in the industry.
We published a guide to build a career as a Solidity developer which you can read for added context & extra tips.
What is Solidity?
Answer: Solidity is a programming language used to write smart contracts on the Ethereum blockchain.
Explain the difference between public, private, and internal functions in Solidity?
Answer: Public functions can be called by any account on the blockchain, while private functions can only be called by the contract itself. Internal functions can be called by the contract and its derived contracts.
There are also external functions, which can ONLY be called outside the contract, but not by other functions of the contract itself.
What is a modifier in Solidity?
Answer: A modifier is a function that can be used to change the behavior of another function in a contract. It is often used to add additional security or access control to functions.
Can you explain the difference between view and pure functions in Solidity?
Answer: View functions do not modify the state of the chain and only read data from it, while pure functions do not read or modify the state but only perform computations on inputs.
What is a fallback function in Solidity?
Answer: A fallback function is a function that is automatically called when a contract receives ether or when a function call does not match any of the contract's other functions.
What is the difference between storage and memory in Solidity?
Answer: Storage refers to persistent data that is stored on the blockchain, while memory refers to temporary data that is used during function execution and is not stored on the chain.
Can you explain the difference between a struct and an array in Solidity?
Answer: A struct is a custom data type that can contain multiple values of different data types, while an array is a collection of multiple values of the same data type.
What is an event in Solidity?
Answer: An event is a way for a contract to communicate with the outside world by emitting a log that can be read by external applications.
Can you explain the concept of inheritance in Solidity?
Answer: Inheritance is a way for one contract to inherit the properties and functions of another contract. This can be used to create more complex contracts and reduce code duplication.
What is a constructor in Solidity?
Answer: A constructor is a special function in a Solidity contract that is called only once when the contract is first deployed to the blockchain. It is used to initialize the contract's state variables.
Can you explain the concept of visibility in Solidity?
Answer: Visibility refers to the accessibility of a function or state variable in a Solidity contract. Solidity has four visibility modifiers: public, private, internal, and external.
What is the purpose of the require statement in Solidity?
Answer: The require statement is used to check the inputs to a function and revert the transaction if certain conditions are not met. It is often used to add input validation and prevent errors in the contract.
What is mapping in Solidity?
Answer: Mapping is a data structure in Solidity that associates keys with values. It is often used to store and retrieve data in a contract.
Can you explain the difference between a payable and a non-payable function in Solidity?
Answer: A payable function is one that can receive ether as part of a transaction, while a non-payable function cannot receive ether.
What is the difference between an interface and a contract in Solidity?
Answer: An interface is a way to define the functions and events of a contract without implementing them, while a contract is a complete implementation of a smart contract that can be deployed to the blockchain.
Can you explain the concept of gas in Solidity?
Answer: Gas is a unit of measurement used to calculate the cost of executing functions and transactions on the Ethereum blockchain. Each operation in a contract has a gas cost associated with it, which is paid for by the user.
What is the purpose of the selfdestruct function in Solidity?
Answer: The selfdestruct function is used to destroy a contract and transfer its remaining ether to a designated address. It is often used to reduce the storage costs of a contract that is no longer needed.
Can you explain the concept of events in Solidity?
Answer: An event is a way for a contract to communicate with the outside world by emitting a log that can be read by external applications. They are often used to notify external systems of important events that occur within a contract.
What is the difference between a state variable and a local variable in Solidity?
Answer: A state variable is a variable that is stored permanently on the blockchain and can be accessed by any function within a contract, while a local variable is only accessible within the scope of the function in which it is defined.
Rust Interview Questions & Answers
Rust is widely used in the blockchain space for building dapps and protocols that require high levels of security and performance.
For instance, the Polkadot network, which enables interoperability between different blockchains, is built primarily with Rust and substrate framework.
Other blockchain projects that use Rust include Parity, substrate and Arweave.
Given its strong performance, safety features, and growing ecosystem of libraries and tools, Rust is increasingly becoming a popular language for blockchain developers.
What are some key features of Rust?
Answer: Some key features of Rust include memory safety, zero-cost abstractions, thread safety, and ownership model.
What is the ownership model in Rust?
Answer: The ownership model is a way to manage memory and ensure memory safety. In Rust, every value has an owner and there can only be one owner at a time. When the owner goes out of scope, the value is automatically dropped and its memory is freed.
What is a reference in Rust?
Answer: A reference is a way to borrow a value without taking ownership of it. References are used to pass values between functions without copying them and to allow multiple functions to access the same value.
Can you explain the concept of lifetimes in Rust?
Answer: Lifetimes are a way to ensure that borrowed values do not outlive the values they borrow from. They are used to prevent memory errors such as use-after-free and dangling pointers.
What is a trait in Rust?
Answer: A trait is a way to define a set of methods that can be implemented by any type. Traits are used to define interfaces and to enable generic programming.
What is pattern matching in Rust?
Answer: Pattern matching is a way to destructure values and match them against patterns. It is often used to handle multiple cases in a concise and readable way.
Can you explain the difference between a struct and an enum in Rust?
Answer: A struct is a custom data type that can contain multiple values of different data types, while an enum is a custom data type that can represent a fixed set of values.
What is the purpose of the Option type in Rust?
Answer: The Option type in Rust is a way to represent the absence of a value. It is often used to handle errors and to allow functions to return either a value or an error.
Can you explain the difference between a mutable and immutable reference in Rust?
Answer: A mutable reference in Rust allows the borrowed value to be modified, while an immutable reference only allows the borrowed value to be read. Rust's ownership and borrowing model ensures that mutable references are exclusive and that there are no data races.
Vyper Interview Questions & Answers
Vyper is another high-level language, specifically designed for smart contract development on Ethereum.
It is an alternative to Solidity & a contract-oriented language with a syntax that is easy to read and write.
It is designed to enhance security, making it a great choice for developing smart contracts that require a high degree of trust and reliability.
One of the major advantages of Vyper over Solidity is its simplicity.
Vyper's syntax is intentionally minimalistic, which makes it easier for auditors to read and understand the code.
Vyper also comes with built-in security features that prevent developers from making common mistakes that can lead to security vulnerabilities.
In addition to Ethereum, Vyper can also be used to develop smart contracts on other blockchain platforms that support EVM.
What is Vyper?
Answer: Vyper is a smart contract programming language for Ethereum that is designed to be secure, simple, and auditable.
What are some key features of Vyper?
Answer: Some key features of Vyper include its emphasis on security, its simplicity and readability, and its focus on avoiding complex or unsafe features.
What is the difference between Vyper and Solidity?
Answer: Vyper is designed to be simpler and more secure, and it does not support certain features that are present in Solidity, such as inheritance or operator overloading.
What is the difference between a public and a private function in Vyper?
Answer: A public function in Vyper is a function that can be called from outside the contract, while a private function can only be called from within the contract.
What is the purpose of the @payable decorator in Vyper?
Answer: The @payable decorator is used to indicate that a function can receive ether as part of a transaction.
What is the purpose of the @constant decorator in Vyper?
Answer: The @constant decorator is used to indicate that a function does not modify the state of the contract and can be called without creating a transaction.
What is the purpose of the assert statement in Vyper?
Answer: The assert statement in Vyper is used to check a condition and revert the transaction if it is not true. It is often used to add input validation and prevent errors in the contract.
Can you explain the difference between the send and transfer functions in Vyper?
Answer: The send function in Vyper is used to send ether to an address, while the transfer function is used to send ether to an address and revert the transaction if the transfer fails. The transfer function is considered to be safer because it avoids the reentrancy vulnerability that can be present with the send function.
Wrapping Up
Blockchain development is a relatively new field packed with innovative ideas and amazing people who want to change the world for the better.
It takes a lot of hard work and dedication to succeed as a blockchain developer but the career path is rewarding and packs varied opportunities for people who choose to dip their toes here.
The list of questions that we have shared with you are nowhere close to exhaustive but should definitely give you an idea of how you would need to prepare for the interview.
As we always suggest, an interview is a two way conversation so don’t forget to cross question about the team, culture, goals, KPIs, expectations, vision etc.
This allows you to be more efficient in your decision making process and sets you up for success in case you choose to join the protocol!
Good luck with your web3 developer job search.