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.
Start practicing
Software Development and Design — choose a session length
Free · No account required
Domain overview
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.
Exam objectives
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
REST API design: HTTP methods, status codes, and JSON payloads for network automation calls
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
Click any question to see the full explanation and answer options, or start a focused practice session above.
A 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?
2A 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?
3Which HTTP status code indicates that a POST request successfully created a new resource?
4In Python, which data type is used to represent an unordered collection of unique elements?
5A Python function needs to accept a variable number of keyword arguments. Which parameter syntax should be used?
6In a microservices architecture, which of the following is a key characteristic compared to a monolithic architecture?
7Which Python list comprehension correctly creates a list of squares for even numbers from 0 to 10?
8A developer needs to parse a JSON string received from a REST API into a Python dictionary. Which function should they use?
9In the MVC (Model-View-Controller) pattern, which component is responsible for handling user input and updating the model?
10What does the Git command 'git log --oneline' display?
11A Python script sends a PUT request to update a resource. The API returns a response with status code 204. What does this indicate?
12Which TWO of the following are valid branching strategies in Git? (Choose two.)
13Which THREE of the following are benefits of using event-driven architecture in a distributed system? (Choose three.)
14A 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?
15A 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?
16When 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?
17A 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)?
18Given 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"}]}?
19A developer needs to create a Python function that accepts any number of keyword arguments and prints them. Which function definition correctly uses **kwargs?
20Which Git command is used to switch to an existing branch named 'feature-x' and update the working directory?
21Which HTTP status code indicates that a POST request successfully created a new resource on the server?
22In software architecture, which pattern separates an application into three interconnected components: Model (data), View (UI), and Controller (input logic)?
23Given the Python list comprehension: result = [x*2 for x in range(10) if x > 5] What is the value of result?
24A 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?
25In a microservices architecture, which of the following is a primary advantage over a monolithic architecture?
26Which TWO HTTP status codes indicate client errors?
27Which THREE statements about RESTful APIs are true?
28A Python script uses the 'requests' library to make a POST request to create a new resource. Which HTTP status code indicates successful creation?
29A 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?
30Which data structure in Python would be most appropriate for storing a collection of unique items and performing fast membership tests?
31A 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?
32A 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()?
33Which Git command is used to create a new branch and switch to it in one step?
34In Python, which of the following is a valid way to define a function that accepts a variable number of positional arguments?
35A 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?
36In 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?
37A 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.)
38What 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)
39Which HTTP status code indicates a successful POST request that created a resource?
40A 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?
41A 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)?
42In version control with Git, which command creates a new branch and switches to it in one step?
43Given the JSON string: '{"name": "Alice", "scores": [90, 85, 92]}', which Python code correctly extracts the second score (85)?
44In a microservices architecture, which communication pattern is typically asynchronous and decoupled?
45Which Git branching strategy typically involves a long-lived 'develop' branch where feature branches are merged, and releases are created from a 'release' branch?
46A developer uses the requests library to call an API. The API returns 429 Too Many Requests. What is the best practice to handle this?
47Which Python exception would be raised by the following code? my_dict = {'a': 1} value = my_dict['b']
48Which TWO statements about the MVC pattern are correct? (Choose two.)
49Which THREE of the following are characteristics of GraphQL compared to REST? (Choose three.)
50Which THREE of the following are best practices when using Git for a collaborative project? (Choose three.)
51A 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?
52A 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?
53A 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?
54A 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?
55A 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.)
56A 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.)
57A 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.)
58A 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.)
59A 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?
60A 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?
61A 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?
62A 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?
63A 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?
64A 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?
65A 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.)
66A 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?
67A 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?
68A 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?
69A 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?
70A 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.)
71A 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.)
72A 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?
73A 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?
74A 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?
75A 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?
76A 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?
77A 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?
78A 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?
79A 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?
80A 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?
81A 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?
82A 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.)
83A 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?
84A 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.)
85A 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.)
86A 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?
87A 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.)
88A 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?
89A 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?
90A 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?
91A 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.)
92A 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.)
93A 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?
94A 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?
95A 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?
96A 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?
97A 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?
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.
The Courseiva 200-901 question bank contains 97 questions in the Software Development and Design domain, covering the 15% of the exam attributed to this domain in the official Cisco blueprint. Click any question to see the full explanation and answer breakdown.
Start with a 10-question focused session to identify your baseline accuracy in this domain. Read every explanation — even for questions you answer correctly — to understand the reasoning. Once you score consistently above 80%, move to a 20–30 question session to confirm depth before moving to the next domain.
Yes — the session launcher on this page draws questions exclusively from the Software Development and Design domain. Choose 10, 20, 30, or 50 questions for a focused session, or click individual questions to review them one by one.
Save your results, see per-domain analytics, and get readiness scores — free, for every certification.
Sign Up FreeFree forever · Every certification included