Practise Object-Oriented Programming one question at a time. Answer out loud or in writing, get graded, and see exactly what you missed.
What are the four pillars of object-oriented programming?
Encapsulation, abstraction, inheritance and polymorphism are the four pillars.
- Encapsulation keeps an object's data with the code that changes it, reachable only through the object's methods.
- Abstraction shows what an object does and hides how it does it.
- Inheritance lets one class build on another.
- Polymorphism lets one piece of code work with several types.
The four overlap. Encapsulation and abstraction are two views of the same boundary. One hides state, the other hides steps. Inheritance is only one route to polymorphism, and often not the best.
Treat them as tools, not goals. Applying all four to every class produces deep hierarchies and wrappers that add nothing. The payoff is that a change lands in one file instead of twenty, and a new case plugs in without touching old code.
Missed:
“Encapsulation is keeping the data inside an object private, so other code has to go through its methods to change it. The way I think about it, the class owns its own rules. Take an Order with a status field. If status is public, any code can mark an order as shipped before it is paid. If the only way in is a ship method, that method checks payment first, and there is exactly one place to get that rule right. The other thing it buys you is freedom to change the internals. On one project we kept line items in an array and later switched to a map keyed by product id for faster lookups, and because nothing outside touched the array directly, none of the callers had to change.”
Knew itHits both: a single method guards the invariant and swapping the array for a map didn't touch callers. Could add that this also localizes debugging when state goes wrong.
Missed: Doesn't mention that encapsulation narrows where a bug can originate, since only the owning class can have changed the state.
Missed: No mention that encapsulation has a cost and isn't free for plain data holders with no real invariants.
Get your own answers graded
Sign up free. Your account comes with 50 credits for grading, and it remembers what you missed.
What it covers
- Classes, objects and paradigms
- Encapsulation and abstraction
- Inheritance and interfaces
- Polymorphism, overloading and overriding
- Composition versus inheritance
- Object equality and hashing
- Immutability and copying
- Coupling and cohesion
- Single responsibility and interface segregation
- Open/closed and Liskov substitution
- Dependency inversion and injection
- Applying SOLID in real code
All 90 questions
Classes, objects and paradigms
What a class and an object are, how objects are built, passed and destroyed, and how OOP compares with procedural and functional styles.
- What are the four pillars of object-oriented programming?
- What is the difference between a class and an object? Pro
- What is the difference between procedural and object-oriented programming? Pro
- What is a constructor, and what types of constructors are there? Pro
- When you pass an object to a method, is it by value or reference? Pro
- What is a destructor, and how does it differ from a finalizer? Pro
- What are the key differences between functional and object-oriented programming? Pro
Encapsulation and abstraction
Hiding state behind methods, access specifiers, choosing what a type shows, and why getters and setters alone are not encapsulation.
- What is encapsulation, and what does hiding an object's state actually buy you?
- What is abstraction, and what techniques do you use to achieve it?
- Give a real-world example of abstraction and one of encapsulation Pro
- What are access specifiers and what is their significance in OOP? Pro
- How is encapsulation different from abstraction when they look so similar? Pro
- Do getters and setters really give you encapsulation, or just expose the fields? Pro
Inheritance and interfaces
Types of inheritance, abstract classes versus interfaces, single versus multiple inheritance and the diamond problem.
- What is inheritance for, and what types of inheritance exist?
- How does an abstract class differ from an interface?
- Should a class hierarchy start from an interface or an abstract class? Pro
- Why do most languages allow many interfaces but only one base class? Pro
- What is the diamond problem, and how do languages resolve it? Pro
Polymorphism, overloading and overriding
Compile-time and runtime dispatch, overload rules, what can and cannot be overridden, static hiding, covariant returns and virtual functions.
- What is polymorphism, and what types of polymorphism do languages support?
- What are the rules a method must follow to be a valid overload? Pro
- What is the difference between method overloading and method overriding? Pro
- Can a static method be overridden, or is it only hidden? Pro
- What is compile-time polymorphism, and how does it differ from runtime polymorphism? Pro
- Which methods can a subclass never override, and why not? Pro
- Can an overriding method declare a different return type than the original? Pro
- Why is calling a static method through an instance considered bad practice? Pro
- What is a virtual function and a pure virtual function? Pro
Composition versus inheritance
Has-a versus is-a, why composition is the default, the fragile base class problem, object relationships and mixins.
- What is the difference between composition and inheritance?
- Why prefer composition over inheritance, and what does each approach cost you? Pro
- What are the limits of inheritance, including the fragile base class problem? Pro
- What is the difference between association, aggregation, and composition? Pro
- What is a mixin, and how does it compare with inheritance and composition? Pro
Object equality and hashing
Reference versus value equality, the equals and hashCode contract, collisions, entity ids, subclass checks and consistency with ordering.
- What is the difference between reference equality and value equality? Pro
- When you override equals, what other method must you override, and why? Pro
- What must a correct equals method guarantee, including when it is given null? Pro
- Can two objects that are not equal share the same hash code? Pro
- Should an entity's id field take part in its equals method? Pro
- Should equals accept subclasses in its type check, or require an exact class match? Pro
- What breaks when equality and ordering comparison disagree about two objects? Pro
Immutability and copying
Building truly immutable classes, defensive and deep copies, and what immutability gives you for thread safety and hash keys.
- What is an immutable class, and how do you recognise one? Pro
- What steps turn an ordinary class into a genuinely immutable one? Pro
- Are immutable objects automatically thread safe, and what makes them so? Pro
- Why do immutable objects make better hash map keys than mutable ones? Pro
- What is the difference between a shallow copy and a deep copy? Pro
- How do you keep a class immutable when one of its fields is mutable? Pro
Coupling and cohesion
Measuring how modules depend on each other and hang together, reducing coupling, and the Law of Demeter.
Single responsibility and interface segregation
One reason to change per class, splitting bloated classes and fat interfaces, and how SRP and ISP differ.
- What is the Single Responsibility Principle, and what does it ask of a class? Pro
- What is the Interface Segregation Principle trying to prevent? Pro
- Describe a class that violates the Single Responsibility Principle and how you would split it Pro
- What goes wrong months later when one class carries several unrelated responsibilities? Pro
- An interface has ten methods but a class needs two - how do you fix that? Pro
- How does ISP relate to cohesion and coupling? Pro
- What's the difference between ISP and SRP? Pro
- What are the benefits and potential drawbacks of strictly following SRP? Pro
Open/closed and Liskov substitution
Extending behaviour without editing working code, patterns that enable it, balancing it with YAGNI, and keeping subtypes substitutable.
- What is the Open/Closed Principle, and what is a real example of it? Pro
- What does the Liskov Substitution Principle ask of a subclass, and why? Pro
- A subclass cannot honour a method it inherits - why does that break LSP? Pro
- How do you add a new payment type without editing the existing classes? Pro
- What design patterns help achieve the Open/Closed Principle? Pro
- What are the key rules for maintaining LSP compliance? Pro
- How do you balance the Open/Closed Principle with YAGNI? Pro
- How do you identify and fix LSP violations in existing code? Pro
Dependency inversion and injection
Depending on abstractions, forms of injection, containers, inversion of control, service locators and the costs of indirection.
- What is dependency injection, and how does it differ from creating objects yourself? Pro
- What are the three forms of dependency injection, and how do they differ? Pro
- What do you gain by injecting dependencies instead of constructing them inside a class? Pro
- What is a dependency injection container, and what work does it take over? Pro
- What does the Dependency Inversion Principle mean, and can you give an example? Pro
- What is inversion of control, and how does dependency injection relate to it? Pro
- What are the downsides and hidden costs of dependency injection? Pro
- What is Dependency Injection and how does it relate to DIP? Pro
- How do you apply DIP in scenarios without a DI container? Pro
- What are the trade-offs of applying DIP extensively? Pro
- How does a service locator compare with dependency injection? Pro
Applying SOLID in real code
SOLID as a whole: spotting violations, refactoring legacy and complex classes, conflicts between principles, performance and microservices.
- What are the SOLID principles, and why do teams bother with them?
- How do SOLID principles relate to code maintainability and testability?
- A class that fetches, processes and formats a report - which SOLID principles break? Pro
- A method switching over a type code - which SOLID principles does that violate? Pro
- How do SOLID principles interact with each other? Can following one principle violate another? Pro
- How do you introduce SOLID principles to a legacy codebase? Pro
- How do SOLID principles apply to microservices architecture? Pro
- What metrics or code smells indicate SOLID principle violations? Pro
- How do you balance SOLID principles with performance requirements? Pro
- Can you provide an example of refactoring a complex class to follow all SOLID principles? Pro
More questions
- What do public, private and protected mean, and when would you use each? Pro
- What is the difference between a class and an object? Pro
- What is the difference between a shallow copy and a deep copy of an object? Pro
- What is the Singleton pattern, and what problems does it cause? Pro
- In what order do field initialisers and constructors run when you create a subclass? Pro
All questions
Showing of 90What are the four pillars of object-oriented programming?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Encapsulation, abstraction, inheritance and polymorphism are the four pillars.
- Encapsulation keeps an object's data with the code that changes it, reachable only through the object's methods.
- Abstraction shows what an object does and hides how it does it.
- Inheritance lets one class build on another.
- Polymorphism lets one piece of code work with several types.
The four overlap. Encapsulation and abstraction are two views of the same boundary. One hides state, the other hides steps. Inheritance is only one route to polymorphism, and often not the best.
Treat them as tools, not goals. Applying all four to every class produces deep hierarchies and wrappers that add nothing. The payoff is that a change lands in one file instead of twenty, and a new case plugs in without touching old code.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is encapsulation, and what does hiding an object's state actually buy you?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Encapsulation means an object owns its data, and outside code reaches that data only through methods the object controls. Fields stay private, and the class decides which changes are legal.
Hiding state gives you three things:
- You enforce invariants in one place, so an account refuses a withdrawal that goes below zero and no caller can skip that check.
- You swap the internal representation, a list for a map, without touching callers.
- When a balance is wrong, only one class can have changed it, so only that class needs checking.
The cost is extra code. A plain data holder passed between two functions gains nothing from private fields and pass-through accessors. The extra layer only makes the code longer to read.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is abstraction, and what techniques do you use to achieve it?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Abstraction is deciding what to leave out. You name an operation by its intent and hide the steps behind that name. A caller writes save(order) and never learns whether that is a SQL insert, a file write or an HTTP call.
Four techniques do this. Interfaces state a contract with no implementation. Abstract classes fix a shape and leave gaps for subclasses. Ordinary methods give one name to a block of steps. Access modifiers back all of this up by keeping the internals out of reach.
A wrong abstraction costs more than none. If the contract you picked does not match how callers use the thing, every caller writes a workaround. Flags and special cases follow. Duplicated code is easier to fix later than a bad abstraction everyone depends on.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is inheritance for, and what types of inheritance exist?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Inheritance lets one class take another's fields and behaviour as a starting point, then add to them or replace parts. It gives code reuse and a subtype relationship, so a dog can be passed anywhere an animal is expected. The second matters more.
Textbooks name the shapes by how the arrows point:
- Single: one class extends one parent.
- Multilevel: a chain, where a child is also a parent.
- Hierarchical: several classes extend the same parent.
- Multiple: one class extends more than one parent, which most languages allow for interfaces but not classes.
The split worth remembering is implementation inheritance versus interface inheritance. Taking a parent's code ties you to its internals, so its next change can break you. Taking only its contract does not.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is polymorphism, and what types of polymorphism do languages support?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Polymorphism means code written against one name works with many types, and the right version runs automatically. A loop calling shape.area() gets the circle's formula for circles and the square's for squares.
Languages support several flavours:
- Subtype polymorphism: a subclass or implementation supplies its own version, and the object picks at runtime.
- Ad-hoc polymorphism: one name, several parameter lists, resolved when the code is compiled. Operator overloading is the same idea.
- Parametric polymorphism: generics, where one
List<T>works for every element type. - Duck typing: in dynamic languages, any object with the right method fits.
The gain is that adding a type does not mean editing existing branches, so old code stays untouched. The cost is indirection. Reading a call site no longer tells you which method actually runs.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is the difference between composition and inheritance?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
Composition means one object holds another and asks it to do work. Inheritance means one class is a specialised kind of another and receives its members automatically. A car has an engine, and an electric car is a car.
Three differences matter in practice.
- Inheritance is fixed when the code is written, while a composed part can be swapped at runtime.
- A subclass can see
protectedmembers, while a holder sees only thepublicmembers. - A subclass inherits the whole parent interface, wanted or not.
Both reuse code, but only inheritance also declares substitutability. That promise is what lets a subclass be passed where the parent is expected, and it is the part you cannot take back later. If all you want is reuse, composition makes no such promise, so the held part stays easy to change.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
How does an abstract class differ from an interface?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
An interface states a contract and nothing else. An abstract class states a contract plus part of the implementation. It can hold fields, constructors and finished methods that subclasses share.
- A class can implement many interfaces but extend only one abstract class. That makes an interface cheap to add to a type that already has a parent.
- An abstract class can carry state and enforce an order of steps.
- Classes from unrelated hierarchies can implement the same interface.
Some languages now let interfaces carry default method bodies. State and constructors still belong to classes. The choice comes down to whether subclasses share code, or only share a capability that callers depend on.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What are the SOLID principles, and why do teams bother with them?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
SOLID is an acronym for five design rules that keep code easy to change, test and reuse.
- Single responsibility: a class should have one reason to change.
- Open/closed: you can add behaviour without editing code that works.
- Liskov substitution: a subtype must work wherever its base type does.
- Interface segregation: small contracts beat one fat contract.
- Dependency inversion: high-level code should depend on abstractions, not concrete classes.
Teams bother because each letter names a pain they have felt.
- Shotgun edits across five files for one change.
- An
ifchain that grows with every feature. - A subclass that throws from an inherited method.
- Stubs full of empty methods.
- Logic that cannot run without a real database.
Applied blindly, SOLID produces a class per line of logic, which is its own mess.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What is the Single Responsibility Principle, and what does it ask of a class?
What is the Open/Closed Principle, and what is a real example of it?
What does the Liskov Substitution Principle ask of a subclass, and why?
What is the Interface Segregation Principle trying to prevent?
What is dependency injection, and how does it differ from creating objects yourself?
What are the three forms of dependency injection, and how do they differ?
What do you gain by injecting dependencies instead of constructing them inside a class?
What is a dependency injection container, and what work does it take over?
What do coupling and cohesion mean, and why aim for low coupling and high cohesion?
What is the difference between reference equality and value equality?
When you override equals, what other method must you override, and why?
What must a correct equals method guarantee, including when it is given null?
What is an immutable class, and how do you recognise one?
What are the rules a method must follow to be a valid overload?
Give a real-world example of abstraction and one of encapsulation
What are access specifiers and what is their significance in OOP?
What is the difference between a class and an object?
What is the difference between procedural and object-oriented programming?
What is a constructor, and what types of constructors are there?
What does the Dependency Inversion Principle mean, and can you give an example?
What do public, private and protected mean, and when would you use each?
What is the difference between a class and an object?
Why prefer composition over inheritance, and what does each approach cost you?
Should a class hierarchy start from an interface or an abstract class?
Why do most languages allow many interfaces but only one base class?
What is the diamond problem, and how do languages resolve it?
What are the limits of inheritance, including the fragile base class problem?
What is the difference between method overloading and method overriding?
Can a static method be overridden, or is it only hidden?
What is compile-time polymorphism, and how does it differ from runtime polymorphism?
Which methods can a subclass never override, and why not?
Can an overriding method declare a different return type than the original?
Why is calling a static method through an instance considered bad practice?
How is encapsulation different from abstraction when they look so similar?
Describe a class that violates the Single Responsibility Principle and how you would split it
What goes wrong months later when one class carries several unrelated responsibilities?
A subclass cannot honour a method it inherits - why does that break LSP?
An interface has ten methods but a class needs two - how do you fix that?
How do you add a new payment type without editing the existing classes?
What is inversion of control, and how does dependency injection relate to it?
What are the downsides and hidden costs of dependency injection?
How do you reduce coupling between two classes that know too much about each other?
Can two objects that are not equal share the same hash code?
Should an entity's id field take part in its equals method?
What steps turn an ordinary class into a genuinely immutable one?
Are immutable objects automatically thread safe, and what makes them so?
Why do immutable objects make better hash map keys than mutable ones?
When you pass an object to a method, is it by value or reference?
How do SOLID principles relate to code maintainability and testability?
Answer it yourself first - out loud, or typed below.
How should your speech become text?
Listening… your words appear above as you speak - tap Stop when you're done.
Recording · cr - tap Stop & transcribe when you're done.
Transcribing with AI…
Voice:
Last attempt -
SOLID makes code easier to maintain by keeping each change local, and easier to test by letting each class run on its own.
For maintainability, single responsibility gives each class one clear purpose, so a change is predictable and lands in one place. Dependency inversion puts abstractions between modules, which reduces the ripple effects of a change. Open/closed lets you extend behaviour without modifying code that works. Liskov substitution lets you swap one component for another without breaking callers.
For testability, dependency inversion and interface segregation mean a class depends on small interfaces. A test replaces those with mocks or stubs. Single responsibility keeps classes small and focused, so each one is easier to unit test.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
What design patterns help achieve the Open/Closed Principle?
What are the key rules for maintaining LSP compliance?
How does ISP relate to cohesion and coupling?
What's the difference between ISP and SRP?
What is Dependency Injection and how does it relate to DIP?
What is the difference between a shallow copy and a deep copy?
What is the difference between association, aggregation, and composition?
What is a virtual function and a pure virtual function?
What is a destructor, and how does it differ from a finalizer?
What is a mixin, and how does it compare with inheritance and composition?
What is the Law of Demeter, and why does it matter?
What are the key differences between functional and object-oriented programming?
What are the benefits and potential drawbacks of strictly following SRP?
How do you apply DIP in scenarios without a DI container?
What are the trade-offs of applying DIP extensively?
What is the difference between a shallow copy and a deep copy of an object?
What is the Singleton pattern, and what problems does it cause?
In what order do field initialisers and constructors run when you create a subclass?
How do you keep a class immutable when one of its fields is mutable?
Should equals accept subclasses in its type check, or require an exact class match?
What breaks when equality and ordering comparison disagree about two objects?
Do getters and setters really give you encapsulation, or just expose the fields?
A class that fetches, processes and formats a report - which SOLID principles break?
A method switching over a type code - which SOLID principles does that violate?
How does a service locator compare with dependency injection?
How do you balance the Open/Closed Principle with YAGNI?
How do you identify and fix LSP violations in existing code?
How do SOLID principles interact with each other? Can following one principle violate another?
How do you introduce SOLID principles to a legacy codebase?
How do SOLID principles apply to microservices architecture?
What metrics or code smells indicate SOLID principle violations?
How do you balance SOLID principles with performance requirements?
Can you provide an example of refactoring a complex class to follow all SOLID principles?
This answer is part of Pro.
The full written answer, with the trade-offs and follow-ups an interviewer will probe.
No matches
Try a different filter or search term.
Object-Oriented Programming in pictures.
A quick recap of Object-Oriented Programming in 28 short animated pictures, one idea at a time. About 7 min to get the whole topic back in your head before you walk in. Pause any picture, slow it down, or step through it.
Pro The first chapter is free to play. The other 25 pictures come with Pro.
Object-Oriented Programming cheatsheet
- Objects & the four pillars01
- Encapsulation & abstraction02
- Inheritance & interfaces03
- Polymorphism & overriding04
- Composition & coupling05
- Equality & hashing06
- Immutability & copies07
- The SOLID principles08
- Dependency inversion & DI09
- SOLID in real code10
- The model11
- + 5 more inside
This picture is part of Pro. The first chapter is free to play; the other 25 pictures come with Pro.
Get Pro · $10/mo Already Pro? Sign in81 of 90 Object-Oriented Programming answers are in Pro.
Full answers, code samples, and AI explanations that go simpler or deeper. Cancel anytime.
- Full answers + code
- AI explanations, simpler or deeper
- 1,000 AI credits / month
- Cancel anytime
Change topic
Pick a different technology or stack. Your current topic stays put until you choose a new one.
MEAN
MongoDB, Express, Angular, Node.jsMERN
MongoDB, Express, React, Node.jsDjango
Python Full-Stack DevelopmentRuby on Rails
Convention over ConfigurationServerless on AWS
Serverless Architecture on AWSInterviewers also test these - they're common to every stack, whichever one you picked above.
Flutter Mobile
Flutter Cross-Platform Mobile DevelopmentInterviewers also test these - they're common to every stack, whichever one you picked above.
Spring Boot
Enterprise Java Development.NET
Microsoft EcosystemVue
Vue.js, Vite, TypeScript, Tailwind, Node.jsGo Backend
Golang, gRPC, PostgreSQL, Redis, RabbitMQInterviewers also test these - they're common to every stack, whichever one you picked above.
FastAPI
Python, FastAPI, SQLAlchemy, PostgreSQLReact Native
React, TypeScript, Redux, FirebaseiOS Native
Swift, SwiftUI, UIKit, FirebaseAndroid Native
Java, Jetpack Compose, FirebaseDevOps / Platform
Docker, Kubernetes, Terraform, CI/CDInterviewers also test these - they're common to every stack, whichever one you picked above.
AI Engineer
LLMs, RAG, Agents, EvalsAI-Powered Developer
Claude Code, Copilot, Agentic WorkflowsCore SWE Interview Prep
Data structures, algorithms, OS, concurrency, networking, gitInterviewers also test these - they're common to every stack, whichever one you picked above.
Interviewers also test these - they're common to every stack, whichever one you picked above.