How would you enable Cross-Origin Resource Sharing (CORS) in a Flask application?
- Add Access-Control-Allow-Origin header to each route manually.
- CORS is not applicable to Flask applications.
- Set CORS_ENABLED = True in the Flask app configuration.
- Use the @cross_origin decorator from the flask_cors extension.
To enable CORS in a Flask application, you typically use the @cross_origin decorator provided by the flask_cors extension. This allows you to control which origins are allowed to access your API.
How would you ensure that a piece of code in a module is only executed when the module is run as a standalone program and not when it is imported?
- #execute_if_standalone
- #only_run_when_main
- #standalone_code
- if name == "main":
To ensure that a piece of code in a Python module is only executed when the module is run as a standalone program and not when it is imported, you can use the special if __name__ == "__main__": conditional statement. Code inside this block will only run when the module is the main entry point of the program.
How would you find the loop in a linked list?
- Iterate through the list and check for a null reference
- Use a hash table to store visited nodes
- Use a stack to track visited nodes
- Use Floyd's Tortoise and Hare algorithm
Floyd's Tortoise and Hare algorithm is a popular technique to detect a loop in a linked list. It involves two pointers moving at different speeds through the list. If there's a loop, they will eventually meet. The other options are not efficient for loop detection.
How would you find the shortest path in a weighted graph?
- A* Algorithm
- Breadth-First Search
- Depth-First Search
- Dijkstra's Algorithm
Dijkstra's Algorithm is used to find the shortest path in a weighted graph with non-negative edge weights. It guarantees the shortest path but doesn't work with negative weights. Breadth-First and Depth-First Search are used for different purposes, and A* is for finding the shortest path with heuristics.
How would you handle collisions in a hash table?
- Ignore the new value
- Replace the existing value with the new one
- Resize the hash table
- Use linear probing
Collisions in a hash table can be handled by using techniques like linear probing, which involves searching for the next available slot in the table when a collision occurs. This ensures that all values are eventually stored without excessive collisions.
How would you handle large DataFrames that do not fit into memory using Pandas?
- Reducing the precision of data
- Reshaping the DataFrame
- Splitting the DataFrame into smaller chunks
- Using the Dask library
When dealing with large DataFrames that do not fit into memory, you can use the Dask library, which allows for distributed computing and can handle larger-than-memory datasets.
How would you handle missing data for a numerical feature in a dataset before training a machine learning model?
- Ignore missing data, it won't affect the model
- Remove the rows with missing data
- Replace missing values with a random value
- Replace missing values with the mean of the feature
Handling missing data is crucial. Replacing missing values with the mean of the feature is a common practice as it retains data and doesn't introduce bias, especially in numerical features. Removing rows or using random values can lead to loss of information or noise.
How would you apply a decorator to a class method that needs to access the class itself?
- Use a class method decorator with @classmethod
- Use a function decorator with @func
- Use a property decorator with @property
- Use a static method decorator with @staticmethod
To apply a decorator to a class method that needs to access the class itself, you should use a class method decorator with @classmethod. Class methods have access to the class itself as their first argument, conventionally named cls. Static methods do not have access to the class, and property decorators are used to define getter, setter, and deleter methods for class attributes. Function decorators without specifying @func are not standard in Python.
How would you implement a custom loss function in a TensorFlow or PyTorch model?
- Call the loss function during evaluation
- Define a function that calculates the loss
- Use the built-in loss functions
- Use the optimizer to define a loss function
To implement a custom loss function, you need to define a function that calculates the loss based on your specific requirements. This function is used in the training loop to compute the loss during training.
How would you chain multiple decorators on a single function?
- By defining an array of decorators and applying them using a loop.
- By wrapping the function in multiple decorator functions within the function definition, e.g., function myFunction() { return decorator1(decorator2(innerFunction)); }
- JavaScript doesn't support chaining multiple decorators.
- Using the @ symbol and listing decorators one after another before a function definition, e.g., @decorator1 @decorator2 function myFunction() {...}
In JavaScript, you can chain multiple decorators by using the @ symbol and listing them one after another before a function definition. This is a common technique in modern JavaScript to apply multiple decorators to a single function.