200-901 · domain
Software Development and Design
This domain covers the software development and design fundamentals a network engineer needs on the 200-901 exam: Python data structures and control flow, reading and writing code, software architecture patterns, and REST API design conventions. Questions are scenario-based, asking you to pick the correct data type, predict program behavior, or choose the right HTTP status code for an API situation.
Focused practice
Practice Software Development and Design questions
Scored sessions drawing only from this domain — pick a length below.
Start 20-question practice test →What this domain covers
What to know about Software Development and Design
You must be able to read short Python snippets and predict their output, choose the right data structure for a task, identify architecture patterns like MVC, and map REST API situations to correct HTTP status codes. The single most important thing is knowing exactly when Python raises exceptions such as KeyError.
Python dictionaries, lists, sets, and tuples, including which operations raise KeyError or TypeError
Python functions, classes, modules, and file handling used to parse or generate device configuration
Software architecture patterns such as MVC, and the roles of model, view, and controller components
Watch out for
Common Software Development and Design exam traps
- ▸Confusing a set with a list or dictionary: sets give fast membership tests and uniqueness, but are unordered and unindexed
- ▸Assuming dictionary access is safe: indexing a missing key raises KeyError, while .get() returns None instead
- ▸Mixing up HTTP status codes, such as returning 404 instead of 429 when a client exceeds an API rate limit
Question index
All Software Development and Design questions (97)
Click any question to see the full explanation, or start a practice session above.
In a microservices architecture, which communication pattern is typically asynchronous and decoupled?
Medium2Which Python exception would be raised by the following code? my_dict = {'a': 1} value = my_dict['b']
Hard3A developer is designing a Python application that must handle failures when making REST API calls to a Cisco DNA Center controller. The application should retry a failed request only if the HTTP status code indicates a server-side error (5xx) or a timeout occurs, but should not retry on client errors (4xx). The developer wants to implement this using a decorator. Which Python library provides a ready-to-use retry decorator that can be configured to retry on specific exceptions and HTTP status codes?
Hard4A developer is designing a Python script that needs to make multiple REST API calls to different endpoints sequentially. The script must handle the following requirements: (1) Use a variable timeout for each request, (2) Include an authorization token in every request, (3) Parse JSON responses. Which TWO features of the requests library should be used? (Choose two.)
Medium5A Python function needs to accept a variable number of keyword arguments. Which parameter syntax should be used?
Medium6A developer is implementing exception handling in Python for a function that makes an HTTP request. Which THREE exception types should be caught to handle common network and HTTP errors? (Choose three.)
Hard7A Python script is interacting with a REST API that returns JSON. The script needs to handle potential errors gracefully. Which TWO practices should be implemented? (Choose two.)
Medium8A developer is writing unit tests for a Python function that parses JSON responses from a Cisco Meraki API. The function takes a JSON string and returns a dictionary. The developer wants to follow best practices for unit testing. Which TWO of the following are recommended practices when writing these tests? (Choose two.)
Medium9Which Git command is used to switch to an existing branch named 'feature-x' and update the working directory?
Medium10Which HTTP status code indicates that a POST request successfully created a new resource?
Medium11What is the output of the following code? my_list = [1, 2, 3] for i in range(len(my_list)): my_list[i] += 1 print(my_list)
Easy12In a microservices architecture, which of the following is a key characteristic compared to a monolithic architecture?
Hard13In the context of REST API design, which HTTP status code should be returned when a client sends a request that exceeds the API rate limit?
Medium14A Python developer is working on a microservices project where one service needs to communicate with another service that exposes a GraphQL API. Which THREE statements about GraphQL compared to REST are accurate? (Choose three.)
Hard15A Python function is designed to fetch device data from multiple sources. It uses *args to accept variable number of API endpoints and **kwargs for optional parameters like timeout. Which function definition correctly implements this?
Medium16Given the following Python code snippet: with open('config.json', 'r') as f: data = json.load(f) print(data['interfaces'][0]['name']) What is the expected output if config.json contains {"interfaces": [{"name": "GigabitEthernet0/1"}]}?
Medium17In version control with Git, which command creates a new branch and switches to it in one step?
Medium18A Python script sends a PUT request to update a resource. The API returns a response with status code 204. What does this indicate?
Medium19Which THREE of the following are best practices when using Git for a collaborative project? (Choose three.)
Hard20Given the JSON string: '{"name": "Alice", "scores": [90, 85, 92]}', which Python code correctly extracts the second score (85)?
Medium21A Python function is defined as: def process(*args, **kwargs): return sum(args) + kwargs.get('offset', 0) What is the result of process(1, 2, 3, offset=10)?
Medium22Which HTTP status code indicates that a POST request successfully created a new resource on the server?
Medium23A developer is working on a Git repository and needs to temporarily save changes that are not ready to be committed so they can switch to another branch to fix a bug. Which Git command should the developer use to stash the current changes?
Easy24A developer is writing a Python script to iterate over a list of server hostnames. Which loop structure is most appropriate to process each hostname in the list?
Easy25A developer is using Git to contribute to a shared repository. After making several commits on a local feature branch, the developer wants to integrate the latest changes from the remote main branch into the feature branch while keeping a linear history. Which Git command should be used?
Easy26A developer is working on a Python script that performs CRUD operations on devices via a REST API. Which HTTP method should be used to update an existing device's configuration partially?
Easy27A developer needs to parse a JSON string received from a REST API into a Python dictionary. Which function should they use?
Medium28A developer is writing a Python function that accepts a list of interface names and returns a dictionary mapping each interface name to the number of characters in that name. The function should also verify that the input is a list and raise a TypeError otherwise. Which approach correctly implements the described behavior?
Medium29A developer is writing a Python unit test for a function that makes an HTTP request to an external API. To avoid network calls during testing, the developer wants to mock the requests.get function. Which Python library is specifically designed for mocking in unit tests and is part of the standard library?
Medium30A developer clones a shared repository and creates a feature branch, but a teammate pushes a commit to the main branch that conflicts with local edits. The developer wants to bring those upstream changes into the feature branch and resolve conflicts before opening a pull request. Which Git operation should be used?
Medium31A Python script uses a try/except block to handle API errors. If the API returns a 429 status code, which mechanism should the script implement to handle the error appropriately?
Hard32A developer is writing a Python function that accepts a variable number of interface names and returns them as a tuple. Which function definition correctly allows an arbitrary number of positional arguments?
Easy33A network engineer writes a Python script to handle exceptions when making REST API calls. Which exception type should be caught to handle network connectivity issues (e.g., DNS failure, refused connection)?
Medium34A network automation team is adopting Git for managing Python scripts and YAML device templates. They want a branching model where each new feature is developed in isolation and merged back into a shared integration branch before release. Which Git branching strategy best matches this requirement?
Easy35A developer is designing a microservices architecture for a network monitoring application. Which of the following is a key advantage of microservices over a monolithic architecture?
Medium36A developer is preparing a Python script that will be shared with a team and run in multiple environments. The script relies on several third-party libraries. Which TWO practices should be followed to ensure reproducible dependency management? (Choose two.)
Hard37A developer is working on a Python script that must read a JSON configuration file containing device credentials. The script needs to parse the file and access the value of the key 'username'. Which Python standard library module and function should be used?
Easy38A developer maintains a Python library that calls a REST API and currently stores the API token in a module-level constant. The team wants to follow twelve-factor app principles so the same build artifact can be deployed to lab and production without code changes. Which change should the developer make?
Hard39In software architecture, which pattern separates an application into three interconnected components: Model (data), View (UI), and Controller (input logic)?
Medium40A developer uses the requests library to call an API. The API returns 429 Too Many Requests. What is the best practice to handle this?
Hard41A developer is writing a Python script that uses the requests library to call a REST API. The API occasionally returns a 429 status code. Which approach best handles this situation?
Hard42A developer needs to update an existing resource via a REST API. The update should be partial, meaning only the fields provided in the request body should be changed. Which HTTP method should be used?
Medium43A developer is building a Python script that calls a REST API which returns a JSON payload containing a list of interfaces. The script must parse the response and extract the 'name' field from each interface object. Which approach correctly uses the requests library to parse the JSON and iterate over the interfaces?
Medium44A developer is writing unit tests for a Python function that interacts with a REST API. Which TWO practices are recommended to ensure tests are reliable and isolated? (Choose two.)
Hard45Which Git branching strategy typically involves a long-lived 'develop' branch where feature branches are merged, and releases are created from a 'release' branch?
Medium46A developer is preparing a Python script that authenticates to a Cisco DNA Center controller, retrieves a list of network devices, and writes the inventory into a reusable module consumed by other teams. The team lead requires that the credentials never be stored in the source code. Which TWO practices satisfy that requirement? (Choose two.)
Hard47A developer is using Git for version control in a collaborative project and wants to ensure a clean, linear history. Which TWO practices help achieve a linear commit history? (Choose two.)
Medium48A developer is preparing a Python script that will be committed to a shared Git repository used by a team of network automation engineers. The team wants to ensure that sensitive credentials and environment-specific files are never committed. Which TWO actions should the developer take? (Choose two.)
Hard49A developer maintains a Python package that other teams import. The package's setup.py currently pins an HTTP library to an exact version, and a consuming team reports that pip refuses to install their project because they require a newer minor release of the same library. Which change to the dependency specification best resolves the conflict while still protecting against breaking major upgrades?
Hard50What does the Git command 'git log --oneline' display?
Easy51A developer is writing unit tests for a Python function that parses Cisco IOS configuration text and returns a dictionary of interfaces. The function relies on an external file read. Which TWO practices improve the testability and reliability of these unit tests? (Choose two.)
Hard52A developer is building a Python function that must parse a JSON payload returned by a Cisco DNA Center API. The function needs to gracefully handle cases where the JSON is malformed or the response body is empty, without crashing the calling script. Which approach best meets this requirement?
Medium53A team is containerizing a Python API service so it can run identically on developer laptops and in production. Which TWO practices support reproducible, portable container images for this service? (Choose two.)
Hard54A developer writes a Python script to read a configuration file. Which code snippet correctly opens the file 'config.json' for reading and ensures the file is closed after use?
Easy55Which Python list comprehension correctly creates a list of squares for even numbers from 0 to 10?
Medium56A developer is building a REST API client in Python using the requests library. They need to send a JSON payload with authentication. Which code snippet correctly sends a POST request with a JSON body and a Bearer token?
Medium57A developer is preparing to add a new feature to a shared Git repository. The team uses a workflow where each feature is developed on its own branch and then merged back into the main branch through a pull request. Which Git operation should the developer perform first to begin work on the new feature?
Easy58A developer wants to process a list of server hostnames and create a new list containing only hostnames that start with 'web'. Which Python list comprehension correctly accomplishes this?
Easy59A developer is preparing a Python application that reads the API base URL and an API token from the environment. The developer wants to avoid hard-coding credentials and intends to deploy the same artifact to a lab and a production environment. Which approach should be used?
Medium60Which TWO of the following are valid branching strategies in Git? (Choose two.)
Medium61A developer is writing a Python script that must process a large list of network device hostnames. The script needs to read each hostname, perform a blocking SSH operation, and then move to the next hostname. The developer wants to make the code more efficient by using a generator function to yield hostnames one at a time instead of loading the entire list into memory. Which Python construct should the developer use to define this generator?
Medium62A developer is designing a microservices-based network management system. One requirement is that when a new device is discovered, multiple other services must be notified asynchronously to perform tasks like inventory update, monitoring setup, and log collection. Which architectural pattern best fits this requirement?
Hard63Which THREE of the following are characteristics of GraphQL compared to REST? (Choose three.)
Hard64A developer is building a Python application that must handle configuration data in multiple formats (JSON, YAML, XML) and provide a consistent interface for reading and writing. The application may add new formats later. Which design pattern best supports this extensibility while keeping the client code decoupled from concrete implementations?
Hard65A developer is troubleshooting a Python function that parses device configuration returned by a REST API. The function receives a JSON string and must convert it into native Python dictionaries and lists before iterating over the device entries. Which standard-library approach performs that conversion?
Easy66A developer is reviewing a colleague's pull request that adds a function to a shared Python utility module. The function must return the value of a REST API response, but the reviewer notices the function currently prints the parsed response instead of returning it. Which change makes the function usable by callers that need to process the data further?
Medium67A developer needs to read a JSON configuration file and parse it into a Python dictionary. The file contains nested objects. Which code snippet correctly accomplishes this?
Medium68In Python, which data type is used to represent an unordered collection of unique elements?
Easy69In Python, which of the following is a valid way to define a function that accepts a variable number of positional arguments?
Easy70A developer is refactoring a Python module that currently has a single 400-line function named process_orders(). The function mixes validation, database writes, and email notification logic. The team wants to improve testability and reuse. Which software design approach should be applied first?
Medium71When using the requests library in Python to send a POST request, which parameter should be used to send a JSON payload in the request body?
Easy72Which HTTP status code indicates a successful POST request that created a resource?
Easy73A developer is building a Python script that processes a list of network devices. Each device is represented as a dictionary with keys 'hostname' and 'ip'. The script must create a new list containing only the hostnames of devices whose IP address starts with '10.'. Which Python construct best accomplishes this in a single expression?
Medium74Which Git command is used to create a new branch and switch to it in one step?
Medium75A developer is working on a Git repository and needs to temporarily save changes that are not ready to be committed, switch to another branch to fix a bug, and then return to the original branch and reapply the saved changes. Which Git command should be used to accomplish this?
Medium76A Python script uses the 'requests' library to make a POST request to create a new resource. Which HTTP status code indicates successful creation?
Easy77Which THREE statements about RESTful APIs are true?
Hard78A developer is designing a Python script that must authenticate to a Cisco Meraki API using an API key. The key should not be hardcoded in the script. Which method is most secure for managing the API key?
Medium79Which THREE of the following are benefits of using event-driven architecture in a distributed system? (Choose three.)
Hard80Which TWO HTTP status codes indicate client errors?
Medium81A developer is creating a Python function that must parse a JSON response from a Cisco DNA Center API. The function should handle cases where a key may be missing without crashing. Which approach best achieves this?
Medium82A developer needs to create a Python script that makes a GET request to a REST API to retrieve a list of network devices. The API uses query parameters to filter by device type and status. Which TWO code snippets correctly include query parameters using the requests library? (Choose two.)
Easy83A network automation script uses the requests library to retrieve device information from a REST API. The API requires authentication via a bearer token. Which code example correctly sets the Authorization header?
Medium84A developer is writing a Python script that processes a large CSV file. The script uses 'with open(file, 'r') as f' to read the file. Why is this approach preferred over calling f = open(file) and then f.close()?
Hard85A developer is designing a Python class to model a network device. The class should prevent direct modification of the device's IP address after it is set, while still allowing the address to be read. Which implementation achieves this encapsulation requirement?
Hard86A developer is writing a Python unit test for a function that parses interface status from a network device. The function raises a custom exception called InterfaceDownError when an interface is administratively down. Which unittest assertion correctly verifies that calling parse_interface('down') raises InterfaceDownError?
Medium87Which TWO statements about the MVC pattern are correct? (Choose two.)
Medium88Which data structure in Python would be most appropriate for storing a collection of unique items and performing fast membership tests?
Easy89A developer is building a Python client that calls a REST API returning JSON. The client must detect authentication failures, rate limiting, and server errors so it can retry or alert appropriately. Which coding practice should be applied?
Hard90A developer is reviewing a Python script that makes a REST API call using the requests library. The script must set a custom HTTP header 'X-Auth-Token' with a value from an environment variable. Which code snippet correctly adds this header to the request?
Easy91A Python script uses a dictionary to store device configuration parameters. Which key, if any, will raise a KeyError if it does not exist in the dictionary?
Easy92In the MVC (Model-View-Controller) pattern, which component is responsible for handling user input and updating the model?
Hard93A developer is writing unit tests for a Python module that parses show command output from network devices. The tests must be deterministic and must not depend on real devices or the network. Which TWO practices should the developer apply? (Choose two.)
Hard94A developer needs to create a Python function that accepts any number of keyword arguments and prints them. Which function definition correctly uses **kwargs?
Medium95In a microservices architecture, which of the following is a primary advantage over a monolithic architecture?
Hard96A developer is using Git to manage a project. They need to temporarily save changes that are not ready to be committed so they can switch to another branch. Which Git command should they use?
Easy97Given the Python list comprehension: result = [x*2 for x in range(10) if x > 5] What is the value of result?
HardOther domains
All 200-901 exam domains
Frequently asked questions
- What does the Software Development and Design domain cover on the 200-901 exam?
- You must be able to read short Python snippets and predict their output, choose the right data structure for a task, identify architecture patterns like MVC, and map REST API situations to correct HTTP status codes. The single most important thing is knowing exactly when Python raises exceptions such as KeyError.
- How many questions are in this domain?
- This page lists all 97 Software Development and Design questions in the 200-901 question bank. The actual exam draws from this domain proportionally to its weighting in the official exam blueprint.
- What is the best way to practise this domain?
- Start with a short focused session (10 questions) to identify gaps, then work through explanations. Repeat with a longer session once the weak areas feel solid.
- Can I practise only Software Development and Design questions?
- Yes — the session launcher on this page filters questions to this domain only. Choose any session length for inline explanations and scoring.