Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan
Context Manager Code
00:00
5 left

Context Manager Code

MediumPython

Problem

EPAM India QA automation code often needs a resource lifecycle that behaves consistently when an operation succeeds or raises an exception. Implement execute_session(actions) using a Python context manager.

The context manager must record lifecycle events in this order:

  1. Append "acquire" when the session starts.
  2. Execute each action in actions, appending ordinary action names to the event log.
  3. If an action equals "fail", raise a ValueError and do not append "fail".
  4. Append "commit" only when every action completes successfully.
  5. Append "rollback" when any exception occurs.
  6. Append "release" exactly once in all cases, including failures.
  7. Handle the deliberate ValueError inside execute_session and return the event log. Do not suppress exceptions inside the context manager itself.

Formal Specification

  • Input: actions, a list of strings containing ordinary action names and optionally one "fail" action.
  • Output: A list of strings describing the lifecycle events.
  • The input contains at most one "fail" action.

Constraints

  • 0 <= len(actions) <= 10^4
  • Each action is a non-empty string of at most 50 characters
  • There is at most one "fail" action
  • The expected failure is represented only by the action "fail"

Function Signature

def execute_session(actions):
Interviewer

Your question is Context Manager Code. Start with the requirements in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePython 3
Sign up free to run your codeLog inLn 2
Run your code to see test output here.