How would you replace all NaN values in a DataFrame with zeros in Pandas?

  • df.fillna(0)
  • df.NaNToZero()
  • df.replace(NaN, 0)
  • df.zeroNaN()
To replace all NaN values with zeros in a Pandas DataFrame, you can use the fillna() method with the argument 0. This will fill all NaN occurrences with zeros.

How would you run a Python script from the command line and pass arguments to it?

  • python execute script.py with-args arg1 arg2
  • python -r script.py arg1 arg2
  • python run script.py --args arg1 arg2
  • python script.py arg1 arg2
To run a Python script from the command line and pass arguments, you use the python command followed by the script name and the arguments separated by spaces, like python script.py arg1 arg2. This allows you to pass arguments to your script for processing.

How would you set a breakpoint in a Python script to start debugging?

  • breakpoint()
  • debug()
  • pause()
  • stop()
In Python 3.7 and later, you can set a breakpoint by using the breakpoint() function. It pauses the script's execution and enters the interactive debugger at that point, allowing you to examine variables and step through code.

How would you set up a custom command in Django that can be run using the manage.py file?

  • a. Create a Python script with your command logic, save it in the Django project directory, and add an entry in the commands list in the project's __init__.py.
  • b. Create a Python script with your command logic and place it in the management/commands directory of your Django app.
  • c. Modify the Django source code to add your custom command.
  • d. Use a third-party package for custom commands.
To set up a custom management command in Django, you should create a Python script in the management/commands directory of your app. Django will automatically discover and make it available through manage.py. Options a, c, and d are not standard practices.

How would you split a dataset into training and testing sets using Scikit-learn?

  • dataset_split(data, 0.2)
  • split_data(data, train=0.8, test=0.2)
  • train_and_test(data, test_ratio=0.2)
  • train_test_split(data, test_size=0.2)
You would use the train_test_split function from Scikit-learn to split a dataset into training and testing sets. It's a common practice in machine learning to use an 80-20 or 70-30 train-test split to evaluate model performance. The other options are not valid functions in Scikit-learn.

How would you test a function that does not return a value, but prints something out, using unittest?

  • Manually check the printed output during testing.
  • Redirect the printed output to a file and compare the file contents in the test case.
  • This cannot be tested with unittest as it's impossible to capture printed output.
  • Use the unittest.mock library to capture the printed output and compare it to the expected output.
To test a function that prints something without returning a value, you can use the unittest.mock library to capture the printed output and then compare it to the expected output in your test case. This allows you to assert that the function is producing the expected output.

How would you initialize an empty list in Python?

  • empty_list = []
  • empty_list = [None]
  • empty_list = {}
  • empty_list = None
To initialize an empty list in Python, you use square brackets []. Option 2 initializes an empty dictionary, option 3 initializes a variable as None, and option 4 initializes a list with a single element, which is None.

How would you investigate memory leaks in a Python application?

  • Manually inspect each variable in the code to find memory leaks.
  • Use a memory profiler like memory_profiler to track memory usage over time.
  • Use the psutil library to monitor CPU usage and infer memory leaks.
  • Use the timeit module to measure execution time and find memory leaks.
To investigate memory leaks in a Python application, you can use a memory profiler like memory_profiler, which tracks memory usage over time, helping you identify areas of concern. Manual inspection (Option 3) is impractical for large codebases, and psutil (Option 2) primarily focuses on CPU usage. The timeit module (Option 4) measures execution time, not memory usage.

How would you optimize a Python function that is found to be CPU-bound during profiling?

  • a) Use a Just-In-Time (JIT) compiler like PyPy.
  • b) Increase the number of threads to parallelize the code.
  • c) Optimize the algorithm or use data structures that are more efficient.
  • d) Use a faster computer for running the code.
When a Python function is CPU-bound, the most effective optimization is usually to optimize the algorithm or use more efficient data structures. JIT compilation (a) can help in some cases, but it may not be as effective as algorithmic improvements. Increasing the number of threads (b) might help if the code can be parallelized, but this is not always the case. Using a faster computer (d) is generally not a solution to CPU-bound code as it doesn't address the underlying inefficiencies.

If multiple base classes have methods with the same name, method resolution in a derived class follows the _______ rule.

  • FIFO (First In, First Out)
  • LIFO (Last In, First Out)
  • LOO (Last Out, Out)
  • MRO (Method Resolution Order)
In Python, when multiple base classes have methods with the same name, the method resolution follows the Method Resolution Order (MRO) to determine which method to call.