If you are wondering why you should take a software engineering test, the answer is simple: skills matter. By taking the test, you will:

• know where you stand in the community of AI and software practitioners
• access personalized study plan to prepare for interviews
• fast track to job opportunities within our network
• get a certificate

And, it’s free. Your results are only ever shared with your permission to refer you to a company. Let’s go over the software engineering test.

# I   What is the software engineering test

The software engineering test is one of six standardized tests that were developed by a team of AI and assessment experts at Workera to evaluate the skills of people working as a Machine Learning Engineer (MLE), Deep Learning Engineer (DLE), Software Engineer-Machine Learning (SE-ML), Software Engineer-Deep Learning (SE-DL), and Software Engineer (SE). It is comprised of multiple choice questions selected from a large database, so that different test takers get different questions, and takes 15 minutes to complete.

# II   What to expect in the software engineering test

Before taking a test, it is important to understand what it evaluates and how it is graded. The grading rubric for the software engineering test includes five categories:

• Applying management methodologies to develop software, which encompasses version control (e.g., Git), frameworks such as Scrum and Agile, and processes to review and test code (e.g., unit testing).
• Designing software systems and architectures, which spans software design and architecture methods including types of architectures (e.g. monolithic and microservices) as well as principles and patterns such as domain driven design and object-oriented design.
• Understanding computer networking, which encompasses computer security (e.g., TCP-IP, basic encryption, etc.), internet protocols (e.g., HTTP, Domain Name Server, Cookies, IPv4 and IPv8), and load balancing.
• Working with databases, which covers relational database management systems and SQL.
• Understanding computing, which evaluates concepts relating to cloud and distributed computing including performance measures like latency and throughput as well as computational decisions related to concurrency, parallelism, or race conditions.

You will be evaluated and assigned to a skill level in each category: beginning, developing, or accomplished, depending on your mastery of the skill at hand. Your skill level in software engineering will be determined using a combination of your scores across all five categories.

You can learn about the categories and performance levels in the table below.

Category Beginning Developing Accomplished
Applying management methodologies to develop software Demonstrates limited understanding of management methodologies for software development. Demonstrates ability to apply management methodologies for software development with some effectiveness. This includes version control, agile development, and code reviews. Demonstrates ability to apply management methodologies for software development and identify use cases and shortcomings.
Designing software systems and architectures Demonstrates limited understanding of methods to design and architect software. Demonstrates ability to understand concepts that inform software design and architecture decisions. This includes understanding different types of software architectures, principles, and patterns. Demonstrates ability to make informed decisions related to software design and architecture.
Understanding computer networking Demonstrates limited understanding of ubiquitous computer networking concepts such as internet protocols. Demonstrates ability to understand computer networking concepts such as internet protocols and security with some effectiveness. Demonstrates ability to understand and apply computer networking concepts effectively. This includes internet protocols, basic computer security, and load balancing.
Working with databases Demonstrates limited understanding of databases and query languages. Demonstrates ability to interact with databases and query data with some effectiveness. Demonstrates ability to manage databases and write complex SQL queries.
Understanding computing Demonstrates limited understanding of computing technologies. Demonstrates ability to use computing technologies such as cloud technologies or distributed systems with some effectiveness. Demonstrates ability to use computing technologies such as cloud technologies or distributed systems effectively. This includes understanding performance measures and the implications of choosing a computing technology over another.

At the end of the test, you’ll see your overall skill category in software engineering.

You will also receive feedback for every skills evaluated (e.g., Understanding race conditions or Understanding the role of the Hostname in a request).

# III   Software engineering practice questions

Nothing beats practice! Here are examples of questions you might encounter in the software engineering test. Think carefully before selecting your answer. Then, click submit to see the answer and get feedback.

# IV   Tips for the software engineering test

Now that you know what to expect in our software engineering test, it’s time to take it! You can take the test up to three times in a 90-day period (unless the test is being administered to you by a company for a job) and your results are only ever shared with your permission. The first test is simply meant to act as a baseline to show you where to start studying. So why wait? Sign up here to take the software engineering test.

Which of the following propositions is true about static code analysis?

It is similar to a code review task, but an automated tool is used to find issues in the code without having to run it.

It is a task performed at runtime in order to find critical bugs.

It is a task performed along with performance testing to analyze the bottlenecks in your application.

It is the task of verifying that all static variables (i.e. constants) within your application follow a convention.

Which of the following does git clone do?

It requests access from the original author to their Git repository.

It initializes a Git repository, both on Github and a local machine.

It duplicates a code file or repository on Github.

What is an important goal when writing functional tests?

To test an isolated function of the application.

To test how parts of the system work together.

To test the internal program structure.

To test how the application will work from the user's point of view.

The single-responsibility principle is violated in a class that

has more than one method.

has more than one variable.

has more than one reason to change.

has more than one constructor.

Other tests include machine learning, deep learning, data science, algorithmic coding, and mathematics.

Machine learning engineers carry out data engineering, modeling, and deployment tasks. They demonstrate solid scientific and engineering skills (see figure above). Communication skills requirements vary among teams.

Deep learning engineers carry out data engineering, modeling, and deployment tasks. They demonstrate solid scientific and engineering skills. Communication skills requirements vary among teams. This role is a variant of machine learning engineer. It requires deep learning skills in addition to the skills profile presented in the figure above.

People who have the title software engineer-machine learning carry out data engineering, modeling, deployment and AI infrastructure tasks. They demonstrate solid engineering skills and are developing scientific skills (see Figure above). Communication skills requirements vary among teams.

People who have the title software engineer-machine learning carry out data engineering, modeling, deployment and AI infrastructure tasks. They demonstrate solid engineering skills and are developing scientific skills. Communication skills requirements vary among teams. This role is a variant of software engineer-machine learning. It requires deep learning skills in addition to the skills profile presented in the figure above.

Software engineer carry out data engineering and AI infrastructure tasks. They work well with people in charge of modeling, deployment, business analyses. Software engineers demonstrate outstanding coding and software engineering skills (see figure above). Communication skills requirements vary among teams.

#### Author(s)

1. Kian Katanforoosh - Founder at Workera, Lecturer at Stanford University - Department of Computer Science, Founding member at deeplearning.ai

#### Acknowledgment(s)

1. The layout for this article was originally designed and implemented by Jingru Guo, Daniel Kunin, and Kian Katanforoosh for the deeplearning.ai AI Notes, and inspired by Distill.

#### Footnote(s)

1. The test was developed under rigorous standards. We will share more information about our testing methodology and philosophy in a new article coming up soon.
2. You can practice for the machine learning test, the deep learning test, the data science test, the mathematics test, the algorithmic coding test, and the software engineering test in The Skills Boost.
For members
Want evaluate and credential your skills, or land a job in AI?
For companies
Are you hiring AI engineers and scientists?