---
tags:
- devops
- l1
- flashcard-deck
- python-automation
---
<!-- wiki:breadcrumb:start -->
[Portal](../../../../library/portal/index.md) | **Level:** [L1: Foundations](../../../../library/portal/levels.md) | **Topics:** [Python Automation](../../../../library/portal/topics.md) | **Domain:** DevOps & Tooling
<!-- wiki:breadcrumb:end -->

id	category	difficulty	tags	question	answer	source_path
software-development/0c03c3a300bd	software-development	easy	software-development, agile, design-patterns	What is Scrum in regards to software development?	"* Scrum is an agile software development framework\n\n* Fixed length iterations\n* Requires the team to have roles like scrum master and product owner\n\nRemember: ""DRY = Don't Repeat Yourself."" Extract repeated logic into functions/modules. But don't over-DRY — some duplication is fine if the contexts differ.\n\nGotcha: Premature abstraction is worse than duplication. Wait for the third occurrence.\n\nName origin: ""Scrum"" comes from rugby — a formation where the team works together to move the ball forward. Coined by Takeuchi and Nonaka (1986).\n\nNumber anchor: Sprint length is typically 2 weeks. Daily standup = 15 min max."	projects/knowledge/interview/software-development/003-what-is-scrum-in-regards-to-software-development.txt
software-development/0c290a0edab5	software-development	easy	software-development, design-patterns, testing	What are static typed (or simply typed) languages?	"In static typed languages the variable type is known at compile-time instead of at run-time.\nSuch languages are: C, C++ and Java\n\nRemember: ""SOLID = five OOP design principles."" S = Single Responsibility, O = Open/Closed, L = Liskov Substitution, I = Interface Segregation, D = Dependency Inversion.\n\nX vs Y: Static typing catches type errors at compile time. Dynamic typing catches them at runtime. Trade-off: safety vs. flexibility.\n\nExample: Go, Rust, TypeScript are modern statically typed languages. Python, Ruby, JavaScript are dynamically typed."	projects/knowledge/interview/software-development/006-what-are-static-typed-or-simply-typed-languages.txt
software-development/12a159e5335d	software-development	hard	software-development, agile, design-patterns	Can you compare between Kanban and Scrum?	* Kanban is continuous, fluid and visualized process whereas Scrum is short and structured, where work is shipped during fixed intervals known as sprints\n\n\n* Kanban is less structured compared to other frameworks like scrum\n* Kanban is more visualized way of managing the development process\n* Kanban has fewer meetings and formal roles compared to other frameworks like scrum	projects/knowledge/interview/software-development/004-can-you-compare-between-kanban-and-scrum.txt
software-development/15dc9ae8c650	software-development	easy	software-development, design-patterns, testing	What is DRY? What is your opinion on it?	"DRY - Don't repeat yourself. Actually it means that you shouldn't duplicate logic and use functions/classes instead. But this must be done smartly and pay attention to the domain logic. Same code lines don't always mean duplication\n\nGotcha: Over-applying DRY creates tight coupling. The rule of three: wait until you see the same pattern three times before abstracting.\n\nRemember: ""WET = Write Everything Twice (acceptable). DRY = Don\'t Repeat Yourself (ideal). AHA = Avoid Hasty Abstractions (pragmatic)."""	projects/knowledge/interview/software-development/013-what-is-dry-what-is-your-opinion-on-it.txt
software-development/25c639c23923	software-development	easy	software-development, design-patterns, testing	What is Object Oriented Programming? Why is it important?	"[educative.io](https://www.educative.io/blog/object-oriented-programming) ""Object-Oriented Programming (OOP) is a programming paradigm in computer science that relies on the concept of classes and objects. It is used to structure a software program into simple, reusable pieces of code blueprints (usually called classes), which are used to create individual instances of objects.""\n\nOOP is the mainstream paradigm today. Most of the big services are wrote with OOP\n\nName origin: OOP was pioneered by Alan Kay at Xerox PARC with Smalltalk (1972). He later said ""I made up the term object-oriented and I did not have C++ in mind."""	projects/knowledge/interview/software-development/008-what-is-object-oriented-programming-why-is-it-impo.txt
software-development/2902e83336f9	software-development	hard	software-development, architecture, design-patterns	What is binary search and what is its time complexity?	It's a search algorithm used with sorted arrays/lists to find a target value by dividing the array each iteration and comparing the middle value to the target value. If the middle value is smaller than target value, then the target value is searched in the right part of the divided array, else in the left side. This continues until the value is found (or the array divided max times)\n\nPython implementation: use bisect module or a simple while loop halving the search range.\n\nThe average performance of the above algorithm is O(log n). Best performance can be O(1) and worst O(log n).	projects/knowledge/interview/software-development/022-binary-search-how-does-it-works-can-you-implement-.txt
software-development/38d84e34828b	software-development	medium	software-development, design-patterns, testing	Explain Dependency Injection (DI)	"Dependency Injection - design pattern, used with IoC. Our object fields (dependencies) must be configurated by external objects\n\nRemember: ""Code review catches bugs, shares knowledge, enforces standards."" Review the code, not the person.\n\nExample: Instead of `class Service { db = new Database() }`, inject: `class Service { constructor(db) { this.db = db } }`. Now you can swap implementations for testing.\n\nAnalogy: DI is like a restaurant where you bring your own ingredients — the chef (class) doesn\'t decide what to cook with."	projects/knowledge/interview/software-development/017-explain-dependency-injection-di.txt
software-development/42771651ff75	software-development	medium	software-development, design-patterns, testing	Explain expressions and statements	An expression is anything that results in a value (even if the value is None). Basically, any sequence of literals so, you can say that a string, integer, list, ... are all expressions.\n\nStatements are instructions executed by the interpreter like variable assignments, for loops and conditionals (if-else).\n\nExample: `x = 5` is a statement (no value). `5 + 3` is an expression (returns 8). In Python, `x = (y := 5)` is a walrus operator — expression inside a statement.	projects/knowledge/interview/software-development/007-explain-expressions-and-statements.txt
software-development/5b32158dfa43	software-development	hard	software-development, architecture, design-patterns	Describe (no need to implement) how to detect a loop in a Linked List	There are multiple ways to detect a loop in a linked list. I'll mention three here:\n\nWorst solution: \nTwo pointers where one points to the head and one points to the last node. Each time you advance the last pointer by one and check whether the distance between head pointer to the moved pointer is bigger than the last time you measured the same distance (if not, you have a loop). \nThe reason it's probably the worst solution, is because time complexity here is O(n^2)\n\nDecent solution: \n\nCreate an hash table and start traversing the linked list.	projects/knowledge/interview/software-development/025-describe-no-need-to-implement-how-to-detect-a-loop.txt
software-development/62c1c4f500e0	software-development	medium	software-development, agile, design-patterns	What is Kanban in regards to software development?	* Kanban is an agile software development framework\n\n* It focuses on having flexible and fluid process - no deadlines, fewer meetings, less formal roles\n* While arguable, Kanban seems to fit better small teams rather than big teams who might benefit more from structurized process\n\nUnder the hood: Kanban\'s key metric is lead time (time from request to done). WIP (Work In Progress) limits prevent multitasking overhead.	projects/knowledge/interview/software-development/002-what-is-kanban-in-regards-to-software-development.txt
software-development/75da9b9a8cdc	software-development	easy	software-development, debugging, architecture	What is a compiler and interpreter?	"[bzfar.org](https://www.bzfar.org/publ/algorithms_programming/programming_languages/translators_compiler_vs_interpetator/42-1-0-50)\n\nCompiler:\n\n""A compiler is a translator used to convert high-level programming language to low-level programming language.  It converts the whole program in one session and reports errors detected after the conversion. Compiler takes time to do its work as it translates high-level code to lower-level code all at once and then saves it to memory.""\n\nInterpreter:\n\"	projects/knowledge/interview/software-development/010-what-is-a-compiler-and-interpreter.txt
software-development/8b73c6170d9b	software-development	hard	software-development, design-patterns, testing	Are you familiar with SOLID design principles?	SOLID design principles are about:\n\n* Make it easier to extend the functionality of the system\n* Make the code more readable and easier to maintain\n\nSOLID is:\n\n* Single Responsibility - A class* should have one ~responsibility~ reason to change. It was edited by Robert Martin due to wrong understanding of principle\n* Open-Closed - A class should be open for extension, but closed for modification. What this practically means is that you should extend functionality by adding a new code and not by modifying it.	projects/knowledge/interview/software-development/011-are-you-familiar-with-solid-design-principles.txt
software-development/9725eb119d4a	software-development	medium	software-development, architecture, design-patterns	Tell me everything you know about Linked Lists	* A linked list is a data structure\n  * It consists of a collection of nodes. Together these nodes represent a sequence\n  * Useful for use cases where you need to insert or remove an element from any position of the linked list\n  * Some programming languages don't have linked lists as a built-in data type (like Python for example) but it can be easily implemented	projects/knowledge/interview/software-development/024-tell-me-everything-you-know-about-linked-lists.txt
software-development/98230e6828cf	software-development	medium	software-development, design-patterns, testing	"What is ""Duck Typing""?"	"When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.\n\nThis is direction in programming, where we are checking properties of object, but not it's type\n\nName origin: From the phrase ""If it walks like a duck and quacks like a duck, it must be a duck."" Used in Python, Ruby, and JavaScript.\n\nExample: In Python, any object with a `.read()` method can be used where a file is expected — it doesn\'t need to inherit from a File class."	projects/knowledge/interview/software-development/020-what-is-duck-typing.txt
software-development/b238c7252058	software-development	hard	software-development, architecture, design-patterns	Describe what would be the time complexity of the operations access, search insert and remove for the following data structures:	"* Stack\n  * Queue\n  * Linked List\n  * Binary Search Tree\n\nRemember: ""Technical debt = shortcuts that must be repaid."" Interest accrues as maintenance cost. Track it explicitly, don't ignore it.\n\nGotcha: Not all debt is bad — conscious debt with a payoff plan is a valid strategy."	projects/knowledge/interview/software-development/023-describe-what-would-be-the-time-complexity-of-the-.txt
software-development/b7d264864432	software-development	medium	software-development, design-patterns, testing	What programming language do you prefer to use for DevOps related tasks? Why specifically this one?	"For example, Python. It's multipurpose, easy-to-learn, continuously-evolving, and open-source. And it's very popular today\n\nRemember: ""Refactoring = changing structure without changing behavior."" Always have tests before refactoring.\n\nExample: Extract method, rename variable, split class — small, safe steps.\n\nInterview tip: Name 2-3 specific projects where you used the language. Generic answers like ""it\'s popular"" are weak."	projects/knowledge/interview/software-development/005-what-programming-language-do-you-prefer-to-use-for.txt
software-development/b8d46c6b709e	software-development	medium	software-development, design-patterns, testing	Explain Inversion of Control (IoC)	"Inversion of Control - design principle, used to achieve loose coupling. You must use some abstraction layer to access some functionality (similar to SOLID Dependency Inversion)\n\nRemember: ""Pair programming = two devs, one machine."" Driver types, navigator reviews. Switch roles frequently.\n\nExample: A web framework is IoC — you register handlers, and the framework calls them. You don\'t control the execution flow, the framework does."	projects/knowledge/interview/software-development/016-explain-inversion-of-control-ioc.txt
software-development/b8eaae733fa4	software-development	medium	software-development, design-patterns, refactoring	Explain what are design patterns	"[refactoring.guru](https://refactoring.guru/): ""Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.""\n\nRemember: ""TDD cycle: Red (write failing test) → Green (make it pass) → Refactor (clean up)."" Repeat.\n\nExample: Singleton (one instance), Factory (create objects), Observer (pub/sub), Strategy (swappable algorithms). The Gang of Four book (1994) cataloged 23 patterns."	projects/knowledge/interview/software-development/018-explain-what-are-design-patterns.txt
software-development/c0bb959ef38d	software-development	hard	software-development, architecture, design-patterns	Explain big O notation	"[habr.com](https://habr.com/ru/post/559518/) ""We can use Big O notation to compare and search different solutions to find which solution is best. The best solution is one that consumes less amount of time and space. Generally, time and space are two parameters that determine the efficiency of the algorithm.\n\n Big O Notation tells accurately how long an algorithm takes to run. It is a basic analysis of algorithm efficiency. It describes the execution time required. It depends on the size of input data that essentially passes in."	projects/knowledge/interview/software-development/019-explain-big-o-notation.txt
software-development/cd115ab725fb	software-development	medium	software-development, design-patterns, testing	Explain string interpolation	"String interpolation - process of evaluating of string literal. For example (JS):\n```js\nconst messages = 5;\nconsole.log(`You have ${messages} new messages`); // You have 5 new messages \n```\n\nRemember: ""Feature flags = deploy ≠ release."" Ship code behind flags, enable for a subset of users, then roll out gradually.\n\nGotcha: Stale flags are tech debt. Clean up flags after full rollout.\n\nExample: Python: f""Hello {name}"". Ruby: ""Hello #{name}"". Bash: ""Hello ${name}"". Each language has its own syntax but the concept is universal."	projects/knowledge/interview/software-development/021-explain-string-interpolation.txt
software-development/cd9b2d30c240	software-development	medium	software-development, agile, design-patterns	What is Agile in regards to software development?	"[Atlassian](https://www.atlassian.com/agile/kanban/kanban-vs-scrum): ""is a structured and iterative approach to project management and product development. It recognizes the volatility of product development, and provides a methodology for self-organizing teams to respond to change without going off the rails.""\n\nTimeline: The Agile Manifesto was published in 2001 by 17 software developers in Snowbird, Utah. It values individuals, working software, collaboration, and responding to change."	projects/knowledge/interview/software-development/001-what-is-agile-in-regards-to-software-development.txt
software-development/e402f3eb06ef	software-development	easy	software-development, design-patterns, testing	What is YAGNI? What is your opinion on it?	"YAGNI - You aren't gonna need it. You must add functionality that will be used. No need to add functionality that is not directly needed\n\nRemember: ""API versioning prevents breaking clients."" Use URL path (/v1/users) or headers.\n\nGotcha: Never remove fields from an API response without a major version bump.\n\nName origin: YAGNI = ""You Ain\'t Gonna Need It."" From Extreme Programming (XP). Don\'t build features until they\'re actually needed."	projects/knowledge/interview/software-development/012-what-is-yagni-what-is-your-opinion-on-it.txt
software-development/f08f2032723d	software-development	medium	software-development, architecture, design-patterns	What is recursion and when is it useful in programming?	"Recursion - process (or strategy), when function calls itself. It has recursive case and exit case. In recursive case we call function again, in exit case we finish function without calling it again. If we don't have exit case - function will work infinite, until memory overload or call stack limit\n\nRemember: ""Microservices = independently deployable services."" Each service owns its data and API. The trade-off: operational complexity.\n\nGotcha: Don't start with microservices — start monolith, extract when needed.\n\nGotcha: Every recursive function must have a base case (exit condition) or it will cause a stack overflow. Python\'s default recursion limit is 1000."	projects/knowledge/interview/software-development/015-explain-recursion.txt
software-development/f2d0b4750781	software-development	medium	software-development, design-patterns, testing	What is Composition in the context of infrastructure or OOP?	"Composition - ability to build a complex object from other objects\n\nExample: A Car HAS-A Engine (composition) vs. a Car IS-A Vehicle (inheritance). Composition is more flexible because you can swap the engine.\n\nRemember: ""Favor composition over inheritance"" — GoF Design Patterns. Inheritance creates rigid hierarchies; composition creates flexible assemblies."	projects/knowledge/interview/software-development/009-explain-composition.txt
software-development/fcf5d7ba51f0	software-development	medium	software-development, design-patterns, testing	What are the four pillars of object oriented programming?	"* Abstraction - you don't need to know how this class implemented. You need to know what functionality does it provide (interface) and how to use it\n* Encapsulation - keep fields for class purposes private (or protected) and provide public methods if needed. We must keep the data and code safe within the class itself\n* Inheritance - gives ability to create class that shares some of attributes of existing classes\n* Polymorphism - same methods in different contexts can do different things. Method overloading and overriding are some forms of polymorphism\n\nRemember: ""12-Factor App = methodology for building SaaS."" Key factors: config in env vars, stateless processes, port binding, disposability."	projects/knowledge/interview/software-development/014-what-are-the-four-pillars-of-object-oriented-progr.txt
software-development/feeee077c793	software-development	medium	software-development, architecture, design-patterns	Given an array/list of integers, find 3 integers which are adding up to 0 (in any language you would like)	```\ndef find_triplets_sum_to_zero(li):\n    li = sorted(li)\n    for i, val in enumerate(li):\n        low, up = 0, len(li)-1\n        while low < i < up:\n            tmp = var + li[low] + li[up]\n            if tmp > 0:\n                up -= 1\n            elif tmp < 0:\n                low += 1\n            else:\n                yield li[low], val, li[up]\n                low += 1\n                up -= 1\n```	projects/knowledge/interview/software-development/026-given-an-arraylist-of-integers-find-3-integers-whi.txt

<!-- wiki:related:start -->
---

## Wiki Navigation

### Related Content

- Perl Flashcards *(CLI)* (flashcard_deck, L1) — Python Automation
- Python Algorithms Flashcards *(CLI)* (flashcard_deck, L2) — Python Automation
- [Python Async & Concurrency](../../../../library/topics/python-async-concurrency/index.md) (Topic Pack, L2) — Python Automation
- Python Concepts Flashcards *(CLI)* (flashcard_deck, L0) — Python Automation
- [Python Debugging](../../../../library/topics/python-debugging/index.md) (Topic Pack, L1) — Python Automation
- [Python Drills](../../../../library/drills/python_drills.md) (Drill, L0) — Python Automation
- Python Exercises (Quest Ladder) *(CLI)* (Exercise Set, L0) — Python Automation
- Python Flashcards *(CLI)* (flashcard_deck, L1) — Python Automation
- Python OOP Flashcards *(CLI)* (flashcard_deck, L2) — Python Automation
- [Python Packaging](../../../../library/topics/python-packaging/index.md) (Topic Pack, L2) — Python Automation

<!-- wiki:related:end -->
