Example question for Python TI and/or ASMT
Created by Unknown User (valentin_goroshko@[Link]), last modified on Nov 23, 2022
Experience questions, SDLC, and soft-skills-related questions
Development process on your previous project
Estimation
Current project CI/CD and linting
Testing
Documentation
Code review/mentoring
Customer and team communication
Architecture
Clouds
Self-learning
Python
Python core
Python memory management
Python threads, processes, async
OOP in python
Django Framework
Databases
Docker
Kafka
Algorithms and general CS
OS
System Design
Cloud (AWS/GCP/Azure. AWS as more often)
Web Development
GIT
Experience questions, SDLC, and soft-skills-related questions
Development process on your previous project
1. What was your role on this project?
2. Could you describe a project team that worked with you on the project?
3. Who was responsible for task decomposition and prioritization on your project? (Name the role)
4. Could you describe all steps that the task should pass from the new feature request from the customer to
production?
5. Is this process relevant to SCRUM, KANBAN, or WATERFALL? Do you know the key differences between these
methodologies?
6. Could you provide some examples of this process enhancement or share some ideas on what can be improved in
this process?
7. What's the optimal balance to work on new features and maintain some technical debt?
8. How did knowledge transfer and mentoring happen on your project?
9. Describe how backlog refinement happens on your project. (prioritization/estimation)
10. Provide the reasons for using specific tools/technologies on your project
Estimation
1. Could you tell me how planning was organized on the previous project?
2. Do you know any estimation techniques?
3. Did you hear about the term story point? Could you explain what is the difference in estimation between hours and
story points?
4. What was the baseline task for the story point that you used on your previous project?
5. Did you have a chance to apply some risk management to your estimation?
Current project CI/CD and linting
1. Which CI/CD tool was used on your previous/current project?
2. Could you list some steps of your CI/CD pipeline and explain some core pipelines?
3. Did you have a chance to modify CI/CD or set it up from scratch?
4. Do you have some experience with other CI/CD tools?
Testing
1. How was your previous project tested? Could you tell me about the frameworks and tools that were used?
2. Do you know the term test pyramid?
3. Could you explain the difference between unit and integration tests?
4. Did you have a chance to work with stress tests?
5. Did you work on the optimization of slow tests? Do you know any approaches for test performance optimization?
6. What is optimal test coverage in your opinion?
7. How to understand if code has low quality?
Documentation
1. Did you have technical documentation on your previous project?
2. What’s the best way to work with technical documentation?
3. How did you document contracts/interfaces/APIs to simplify work between commands (e.g. frontend and backend
teams)?
4. Share some ideas on the optimal level of documentation on your projects. (what is necessary and what is not)
5. How to track technical debt?
6. Autogenerated documentation what is it how can we create it for our Python apps? (pydoc, doxygen, swagger for
API)
Code review/mentoring
1. How did code review help to improve code quality on your project?
2. Could you list some code review best practices?
3. Do you have experience resolving conflicts during the code review?
4. Did you mentor any employees in your current project?
5. What are the vital qualities for a newbie to become a mature developer?
6. Did you conduct a Technical Interview at your previous place of work? Could you name the top 3 most important
questions that a candidate should answer?
Customer and team communication
1. Did you do some demos/presentations to show features to the customer?
2. Did you pitch a new feature design for the customer or teammates?
3. Do you have the experience to convince customers that your module/service design is better?
4. Do you have experience with the escalation of some project issues to the manager?
Architecture
1. Could you explain the high-level architecture of current projects (monolith, SOA, microservices) and list core
modules and applications?
2. How did you design it?
3. How did you select components? (e.g. databases, frameworks, 3rd party libraries,)
Clouds
1. Please name AWS/GCP/Azure service you worked with.
2. Did you face tasks of cost optimization in the cloud?
Self-learning
1. How do you keep your technical knowledge up to date? (books, articles, podcasts, online courses, pet projects,
passing interviews)
Python
Python core
1. What is a PEP8?
2. What types do you know in python? immutable/mutable? What’s the goal to have immutable types in python?
3. t = ([], []). Can we do t[0] = [] or t[0].append(10)
4. Could you provide the difference between copy() and deepcopy() operations? Why should we use them for
example with lists?
5. When is better to use __str__ and when to use __repr__?
6. Could you describe the benefits of using __slots__ in python?
7. What is a context manager? Can you tell which methods should be implemented and provide some examples for
common usage of context managers?
8. What’s the difference between is and ==?
9. What are *args and **kwargs?
10. Do you know how scope resolution works in Python? Did you hear about LEGB-rule (Local, Enclosing, Global,
Built-in)?
11. What is closure?
12. What is a list comprehension and dictionary comprehension? Provide some examples of use.
13. How to define an anonymous function with lambda in python?
14. Do you know such functions as map(), reduce(), filter(), zip()? Please provide some examples of use.
15. Which data types can be used as keys in python dictionaries and why? Why can’t we use immutable types for the
same purpose? Is it possible to use a list as a key in the dictionary?
16. How is the dictionary (dict) type implemented in python? Could you describe how collision resolution works?
17. When does a dictionary allocate memory?
18. How does the default equal (==) operator work in python? How is it possible to override it?
19. Is it required to override __eq__ when we implement a custom hash function
20. What’s the difference between generators and iterators in python?
21. How to get the last item from the list?
22. What is a decorator? Have you worked with decorators?
23. How to make a parameterized decorator? (coding task)
24. Could you provide some decorator common use cases?
25. Please name the Limitations of recursion in python. How to change the recursion limit? Why do we need it?
26. What is a tail recursion? Do we have recursion optimization in Python?
27. Is it possible to use a closure instead of a recursion?
28. Name of programming paradigms in python and how they were implemented in Python?
29. What is a partitional function call?
30. What do you know about exception handling in Python? Name some exception-handling best practices.
31. What callable word means in python? What callable() function can return? How to make an object of your class
callable?
Python memory management
1. Why don't we call __new__ and __del__ directly in python as in C and C++?
2. What memory overhead each object has in python? What is PyObject?
3. How does CPython allocate memory from the operating system? (blocks, pools, arenas)
4. When be memory returned back from the python app to the OS?
5. What is reference counting? When does the reference counting algorithm increase and decrease its count?
6. What is a cyclic reference and how python can manage it?
7. What is a weakref?
8. What is garbage collection? How does it work? What’s the idea to have generations in it?
9. How is it possible to tune GC to achieve some performance improvements?
10. Is it possible for example for web apps to work with disabled GC?
Python threads, processes, async
1. Did you work with parallelization in python? (e.g. reading huge amounts of files and sending data from/to some
API)
2. What’s the difference between a thread and a process?
3. How is it possible to share data between processes?
4. What is GIL?
5. Describe some benefits that we have from GIL?
6. When doesn’t GIL affect the performance of parallelized apps?
7. Why is it so hard to cut out the GIL from CPython?
8. What is race condition?
9. Could you list synchronization primitives in python?
10. Is it better to use thread or process workers for web applications (e.g. setup gunicorn)?
11. How threads are scheduled by CPython?
12. What is asyncio and what is good for?
13. Why use asyncio instead of multithreading in Python?
14. What’s the difference between future and task?
15. What is an event loop?
16. Let’s imagine a situation in which we have an async framework that processes a request and we need to do a long
sync call during the request processing. How can we handle it?
17. Processing HTTP request with async vs multi-threading vs multi-processing? Name the benefits.
OOP in python
1. What limitations does python have compared to java?
2. How to implement private/protected methods/attributes in python?
3. Is it useful to use optional typing in python?
4. What’s the difference between __new__ and __init__ methods? Which one is called first? How to implement a
singleton?
5. How does MRO work in python? (C3 linearization) What is the diamond problem? Did you hear about old-style
classes?
6. Are there any limitations of usage in C3 linearization? Do you know issues that cannot be resolved by C3?
7. How to change basic behavior of MRO?
8. What is Mixin, could you provide some usage examples?
9. How can we implement a java-like interface in python? (module abc, raise notimplementederror)
10. Class and instance attributes, how to define each and what’s the difference between them?
11. Common decorators for class methods: classmethod, staticmethod, property. When can each be used?
12. What is a metaclass? Where to use it? How to create a class in a runtime?
13. What are SOLID, GRASP, DRY, and KISS principles?
14. What is dependency injection in python? Provide some examples of how to use it.
15. When to use inheritance and when to use composition? (coding task)
16. What are descriptors (__get__, __set__, __del__)
17. What is a dataclass? How to use dataclasses in python?
18. Could you name OOP principles (all 4) and name it’s limitations or some specific things in implementation for
Python
19. Private vs protected what’s the difference?
20. Do you know the types of polymorphism, which types of polymorphism do we have in Python?
21. What is a method super() in python and how can we use it?
22. Aggregation vs inheritance when to use which approach?
Django Framework
1. Could you explain the architecture of Django frameworks and list all its components?
2. Could you explain how Django processes the request? What is the concept of middleware in Django? Did you have
a chance to implement your own middleware? Could you list some default middlewares?
3. Could you compare Django with any other framework (Flask, aiohttp, fastapi)? List pros and cons. When is it better
to use Django and flask?
4. What are Django signals? How does it work? Could you provide some common use cases?
5. What is a Manager in Django?
6. Could you list all types of model inheritance in Django?
7. What is a QuerySet in Django? When does Django ORM evaluate a QuerySet?
8. What’s the difference between select_related() and prefetch_related()?
9. Could you list some Django ORM features that are helpful for some advanced lookups? Q-queries? F-objects?
10. What is DRF? Could you list some core features of DRF?
Databases
1. What are normalization and denormalization? Could you list different normalization forms?
2. What is a cursor?
3. What is the database transaction?
4. Could you explain what the ACID acronym is?
5. What is the CAP theorem?
6. What is MVCC? Could you explain its implementation for specific DBMS?
7. Could you list Transaction Isolation Levels in RDBMS on PostgreSQL or MySQL?
8. Could you explain the next DB read phenomena: dirty read, non-repeatable read, phantom read?
9. What is WAL? And why does this component exist in some RDBMS?
10. What is a replication slot?
11. Could you compare SQL and NoSQL solutions? When is it better to use for example mongo and when to use
PostgreSQL?
12. Could you explain how the selected RDBMS can process your SQL query?
13. Did you work with SQL query optimization? How is it possible to analyze your query?
14. What is an index? Name the pros and cons of it.
15. What is a compositional index?
16. Could you explain why we’re getting logarithmic time of search when we have an index (b-tree)?
17. List the type of indexes supported in selected RDMBS and explain when to use each specific type.
18. Please, name some constraints for columns.
19. What is join, and what types of joins there are? Why cross joins can be dangerous?
20. What are replicas?
21. What is partitioning? How can it be done?
Docker
1. What are the advantages of using Docker containers?
2. What’s the difference between approaches of using Virtual Machines against containers?
3. What’s the goal of using Docker for local development instead the python virtualenv
4. Could you provide Container and image definition? What’s the difference?
5. How is it possible to share data between containers?
6. Why is rebuilding the docker image efficient? What is a layer?
7. What’s the concept of Multi-stage builds? Where can it be useful?
8. How does Docker implement isolation? What are a namespace, cgroups and UFS (union file system)?
9. What is the diff between docker CMD and ENTRYPOINT?
10. How docker stop working (SIGTERM to PID 1, timeout, SIGKILL)?
11. How to expose the port in docker?
12. What is a docker volume?
13. Can we run containers from multiple compose files in one network? (e.g. we can have a file for front-end devs, and
another one for the backend devs)
Kafka
1. How to Scale Kafka?
2. What is ISR (in-sync replica)?
3. What is a Kafka topic?
4. What is a partition in Kafka?
5. What is a segment?
6. If we have multiple partitions in a topic will we have FIFO for an entire topic?
7. What is a partition leader?
8. How is the consumer count connected with a count of partitions?
9. Is it possible to find a specific message in Kafka topic (e.g. read by offset, start read from a specific time stamp?)
Algorithms and general CS
1. What is algorithm complexity?
2. Linked list vs array-based list what’s the difference between these structures?
3. How does a hash table work?
4. Binary search? What is it and how it works?
5. What is recursion? Pros and cons of using it. Could you provide some examples?
6. What is a dynamically-typed language?
7. What is a strongly typed language?
8. What is the difference between an interpreter and a compiler?
OS
1. What is the difference between thread and process in OS?
2. What is the init process in Unix?
3. What happens when we do fork?
4. Do you know such terms like: User level and kernel level?
5. What is a light-weight thread?
System Design
1. Could you name some design patterns on any level that you use on a daily basis?
a. Singleton (when this one is not evil?)
b. Decorator vs Chain of Responsibility (Middleware)
c. Adaptor vs Facade
d. etc
2. What is Event Sourcing?
3. What is a SAGA pattern?
4. What is SQRS?
5. How will you choose retries timeouts and the number of retries?
6. Do you know what is Circuit Breaker pattern?
7. What are SOLID, DRY, KISS principles? (we have it in OOP also)
8. What is clean architecture?
9. How business logic layer can be isolated in the web app (e.g. in Django or flask)?
10. Serverless approach vs development with frameworks (pros and cons)
11. Microservices architecture (pros and cons)
Cloud (AWS/GCP/Azure. AWS as more often)
1. Lambdas pros and cons
2. Cost optimization techniques in the cloud platform
Web Development
1. WSGI/ASGI what is it? Why do we need it?
2. Did you configure Gunicorn? Worker types/max_requests?
3. REST: pros and cons?
4. What is a Maturity model of REST?
5. What is HATEOAS?
6. What is GraphQL? What is RPC? When is it better to use which approach?
7. What is a 12-Factor Application?
8. What is REST? Are there any rest limitations? PUT vs POST?
9. How to prevent multiple form re-submission. Or creating duplicated entities on POST request?
10. What is idempotence? Which HTTP methods are Idempotent?
GIT
1. Merge vs rebase
2. Squash
3. git-bisect
4. Cherrypick
5. Branching strategies pros and cons
6. Commit best practices
No labels