Top 13 data engineer interview questions (and tips)
Tags: database, sql, python, datascience
Published: 2022-03-07 20:18:07

If you love problem-solving with [SQL queries](https://www.educative.io/blog/what-is-database-query-sql-nosql?eid=5082902844932096) or Python and want to get more involved with big data, here are some data engineer interview questions and their answers to get you started! 

There has been explosive growth in the average volume of big data being generated each day. Businesses can now use data modeling and data science to acquire valuable business intelligence and data engineers are uniquely equipped to transform, and interpret that sea of data sets. 

Individuals with data engineering skills are in high demand and the pay can be very generous. [Data engineers at companies like Amazon and Facebook (Meta) have reported compensation packages ranging from $219-$458k](https://www.levels.fyi/company/Facebook/salaries/Data-Engineer/#:~:text=Facebook%20Data%20Engineer%20Salaries%20%7C%20%24219,fyi&text=Benefits%20can%20add%20thousands%20of%20dollars%20to%20your%20offer) per year. 

Furthermore, there will be some examples of typical data engineering interview questions, and lots of great resources for developing advanced interview knowledge. 

**We’ll cover**:
* [Essential data engineering skills](#essential-skills)
   * [Programming languages](#programming-languages)
   * [SQL and NoSQL](#sql-and-nosql)
   * [Data analysis](#data-analysis)
   * [Mathematical foundations](#math)
* [Interview process](#interview-process)
* [13 interview questions](#interview-questions)
* [Wrapping up and next steps](#nextsteps)

Let’s get started!

<a name="essential-skills"></a>
## Essential data engineering skills

There are a few basic skills you’ll need to master before applying to a data engineering position. 

<a name="programming-languages"></a>

### Programming languages

First, you’ll need to know how to program. Set aside some time to practice going over algorithms and data structures. 

One of the leading programming languages used by data engineers is Python because it provides a plethora of useful libraries to facilitate data engineering. 

**Key libraries used by data engineers include**:  

* **matplotlib**: Used for data visualizations
* **pandas**: Used for data manipulation and visualization
* **numPy**: Provides several mathematics and statistics functions  
* **sklearn**: Used for machine learning
* **pyspark**: Used to handle Big Data (ETL + Hadoop)

As a data engineer, you must know what data structures and algorithms are most suitable for different situations.

Understanding the advantages and disadvantages when it comes to different methods of organizing and transforming data is essential for strategic decision-making.

**Data structures to know**:

* Lists
* Arrays
* Hash tables 
* Hash maps
* Stacks
* Queues
* Graphs
* Trees
* Heaps

**Algorithms to know**: 
* Linear regression
    * Least-squares algorithm
    * Lasso shooting for sparse solution
    * Polynomial regression
    * General feature transformations
* Linear discriminants 
    * Support vector machine (SVM)
    * Kernels and infinite-dimensional feature maps
* Logistic regression
* Ensemble learning
    * Decision tree (CART)
    * Random forests
    * Adaptive boosting 
    * Gradient boosting 
* Generative learning
    * Naive Bayes classifier 
    * Markov models
* K-nearest neighbors
* Unsupervised learning
   * K-means clustering
   * Spectral clustering 
   * Principal component analysis 
* Artificial neural networks (ANN) 
   * Convolutional neural networks
   * Recurrent neural networks

<a name="sql-and-nosql"></a>

### SQL and NoSQL 

Next, you'll need a deep understanding of [SQL for your interviews](https://www.educative.io/blog/top-40-sql-interview-questions?eid=5082902844932096). 

Knowing SQL can help you work in popular [relational database](https://www.educative.io/blog/relational-database-deep-dive?eid=5082902844932096) management systems like MySQL (open-source), Microsoft SQL Server, and Oracle Database.

These days, most data is distributed over the cloud. Examples of distributed databases [include MongoDB](https://www.educative.io/blog/mongodb-with-docker), DynamoDB, BaseX, Ignite, Hazelcast, and Coherence. These non-relational databases are called NoSQL databases. 

Instead of SQL, you can manipulate data from NoSQL databases using Object-Relational Mapping (ORM). We strongly recommend brushing up on ORM for your data engineering interviews. 

NoSQL databases can be further classified into the following:
* Graph databases
* Column-oriented databases
* Document-oriented databases
* Key-value databases

<a name="data-analysis"></a>

### Data analysis 

Data engineers should have the technical skills to **extract**, **represent**, and **analyze** data using efficient data structures and statistical modeling. Cultivating a familiarity with the dependencies of different data attributes will enable you to design better target models. Learning these dependencies can be accomplished by using descriptive statistics to some extent. 

In addition, data needs to be standardized and prepared using data preprocessing techniques to optimize for better performance. For example, real data consists of a mixture of several data types including **text**, **dates**, **numbers**, etc. 
In contrast, [a machine learning model](https://www.educative.io/blog/machine-learning-for-data-science?eid=5082902844932096) will expect all data to be numeric. Data preprocessing includes encoding the data into numeric form by preserving the information in the data. 

<a name="math"></a>

### Mathematical foundations

Finally, a data engineer must have a strong understanding of the different branches of mathematics. Mathematical foundations are essential for anyone who wishes to understand and manipulate data as a science. 

The key branches of mathematics for a data engineer are:
* Discrete mathematics
* Probability and statistics
* Linear algebra
* Calculus 

<a name="interview-process"></a>

## Interview process

The hiring process at major companies like Amazon, Microsoft, Google, and Netflix typically consists of multiple rounds of behavioral and technical interviews. Writing Python for these interviews can be helpful, but you can generally use whatever programming language you are most comfortable in (like Java or C++). 

The interview process varies from company to company but you can expect most interviews to follow a format similar to the one outlined below:

1. **Prescreening**: A recruiter contacts you to schedule a short phone call to go over your resume and complete a technical challenge.
2. **Phone interview**: The recruiter contacts you to schedule a phone interview with a senior engineer or engineering manager.
3. **On-site or virtual interviews**: After the phone interview, you will be invited to participate in several rounds of interviews with hiring managers and team engineers.
4. **Lunch interview**: There is sometimes a more casual “interview” that takes place when your interviewers take you out to lunch.
5. **HR interview**: This is the final interview where the hiring manager goes over anything not covered in the on-site or virtual interviews. At this point, an offer may be extended, and you’ll have the opportunity to discuss compensation.

In total, the hiring process may take anywhere from 1 to 2 months to complete from start to finish. We recommend spending **3 months** preparing for your interview.

More resources for interview prep:
* [Definitive Interview Prep Roadmap](https://www.codinginterview.com/interview-roadmap): A free 12-week self-study guide for the technical interview.
* [Interview guides by company](https://www.codinginterview.com/): These guides cover the different interview stages at specific companies in greater detail.
* [Grokking the Behavioral Interview](https://www.educative.io/courses/grokking-the-behavioral-interview?eid=5082902844932096)

<a name="interview-questions"></a>

## 13 data engineer interview questions

Although this isn’t an exhaustive list, you can generally expect to encounter questions similar to the examples below. Be prepared to write Python scripts, describe and compare algorithms, and solve math problems. 

> **Note**: The answer key for questions 1-10 is located at the bottom of this section.

### 1. What is the best model for classification?

A. Support vector machine 
B. Deep neural network
C. Random forest
D. Depends upon data (no free lunch theorem) 

### 2. How can you compute the Frobenius norm of the difference between two matrices, say P and Q, in Python?

A. np.sum(((P-Q)**2))**0.5
B. np.sum((P.flatten()-Q.flatten())**2)**0.5
C. np.linalg.norm(P-Q)
D. All of the above

### 3. What are the benefits of using a convolutional neural network over a vanilla deep neural network for object detection tasks in images?

A. Convolutional neural network uses parameter sharing
B. Convolutional neural network makes detection, translation-invariant
C. Both A and B
D. None of the above

### 4. What is the key difference between supervised and unsupervised learning?

A. Unsupervised learning focuses on regression in contrast to supervised learning, which focuses on classification.
B. Unsupervised learning focuses on clustering data, in contrast to supervised learning, which focuses on classification and regression
C. Unsupervised learning is used in [natural language processing](https://www.educative.io/blog/what-is-natural-language-processing?eid=5082902844932096) whereas supervised learning is used in image processing
D. None of the above

### 5. Which of the following classification algorithms is iterative (i.e., closed-form solution does not exist)?

A. Logistic regression
B. Support vector machine
C. Adaboost
D. All of the above

### 6. What is overfitting?

A. A model is said to overfit if training loss is small and validation loss is high
B. A model is said to overfit if validation loss is zero
C. A model is said to overfit if training loss is zero
D. A model is said to overfit if it trains in constant time

### 7. What is the key difference between logistic regression and SVM?

A. SVM generalizes well in high dimensional spaces in contrast to logistic regression
B. SVM offers a sparse solution in contrast to logistic regression
C. Logistic regression can be naturally extendable to multiple classes in contrast to SVM
D. All of the above

### 8. What problems best justify the use of Recurrent Neural Networks (RNNs)?

A. The problems having time-series data of various lengths
B. The problems involving image data
C. The problems involving text data
D. All of the above

### 9. How are hyperparameters tuned?

A. Through validation
B. Through deep learning
C. By using Markov chains
D. All of the above

### 10. What is the key reason for choosing neural networks as a default model?

A. Neural networks are universal approximators
B. Neural networks can be trained on a minimal quantity of data
C. Neural networks offer faster training
D. None of the above

### 11. What is a SequenceFile in Apache Hadoop, and what can it be used for?

A SequenceFile is a type of binary file. It uses a flat file structure consisting of binary key-value pairs serialized in a stream of bytes.

SequenceFile is useful for grouping large collections of small files (such as images) into a single file.

> **Note**: While you might not necessarily need to answer questions about [Hadoop in particular](https://www.educative.io/blog/what-is-hadoop-big-data?eid=5082902844932096), you will need to be familiar with some kind of data framework and be able to answer questions similar to this one.

### 12. Explain the different ETL (Extract, Transform, Load) functions.

ETL tools collect data from multiple sources and integrate them into a data warehouse, making it easier to analyze and store.

1. **Extract**: This stage involves reading, collecting, and extracting data from a database.
2. **Transform**: This stage involves transforming the extracted data into a format that makes it compatible with data analysis and storage.
3. **Load**: This stage takes transformed data and writes it into a new application or database.

### 13. Design and build a data warehouse for managing inventory.

A ubiquitous interview challenge for data engineering roles is being asked to do some data warehousing. A data warehouse is a type of data management system that contains large volumes of data and can be used to perform queries or data analytics.
You could be asked to build a data warehouse for managing a catalog of courses, a digital archive of movies, and so on. Think about the goals for the data warehouse you will be building and what kind of queries would be useful for someone using it.
* Identify the different entities involved (products, promotions, customers, dates, location, etc.)
* Consider the relationships between the entities
* Visualize the relationships in a data model

Once you’ve finished building out your data warehouse, you may be asked questions that resemble the following:

* What is the average number of times a customer purchases one of our products in a 30-day period?
* What promotions are most likely to increase sales?

These questions can be answered by running queries in SQL.

> **Answer key for questions 1-10**: D, D, C, B, D, D, A, A

<a name="nextsteps"></a>

## Wrapping up and next steps

Data engineering is a fantastic career choice for anyone with an analytic mind and a curiosity about the kind of information they can find in massive datasets. 
Learning the right skills to break into this career can be relatively straightforward. Once you’re comfortable with SQL and Python, you’ll have the knowledge you need to start learning how to design data models and build data warehouses. If you find that data engineering isn't right for you, but you still want to work with data, many of these skills are transferable to careers in data science, machine learning, and data analytics.

We encourage you to check out some of the great resources we have here at Educative and wish you success in your interviews!

To get started learning these concepts and more, check out Educative's learning path [**Python for Programmers**](https://www.educative.io/path/python-for-programmers?aff=x06V?eid=5082902844932096)

*Happy learning!*

<br>

### Continue learning about data engineering
* [Become a Database Professional with SQL](https://www.educative.io/path/become-database-professional?eid=5082902844932096)
* [MongoDB: The Complete Guide](https://www.educative.io/courses/mongodb-complete-guide?eid=5082902844932096)
* [DynamoDB Deep Dive: NoSQL for Software Engineers](https://www.educative.io/courses/aws-dynamodb-nosql?eid=5082902844932096)