← Wells Fargo Interview Insights

Wells Fargo·Software Engineer·Technical Phone Screen·Senior

SeniorPrefer not to say
May 2026

Summary

Senior backend engineer interview at Wells Fargo covering Java, Spring, and Kafka fundamentals in a rapid-fire format. The questions leaned heavily on trade-offs and mechanics rather than textbook definitions, which made it trickier than expected.

Questions Asked (6)

Q1

What is the difference between an interface and an abstract class in Java, when would you choose one over the other, and what changed about interfaces in recent Java versions?

Technical Trade-offs
Author's notes

I started with the capability vs.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining both concepts clearly, then compare them across key dimensions like inheritance, state, and method implementation. Explain when to use each based on design goals such as code reuse versus contract definition, and finally highlight the evolution of interfaces in Java 8+ with default and static methods. Tailor your answer to show how these choices impact maintainability and scalability in enterprise applications.

Pro tip: Emphasize that interfaces enable polymorphism and decoupling, which are crucial for enterprise systems like those at Wells Fargo, while abstract classes provide a foundation for shared code. Mention that modern Java interfaces with default methods allow for API evolution without breaking existing implementations, a key consideration in large-scale financial systems.

1. Define interface and abstract class

Clearly state that an interface is a contract specifying method signatures (and constants) that implementing classes must fulfill, while an abstract class is a partial implementation that can contain both abstract and concrete methods, fields, and constructors.

2. Compare key differences

Highlight differences: interfaces support multiple inheritance of type, cannot hold state (except constants), and all methods are implicitly public and abstract (pre-Java 8). Abstract classes support single inheritance, can have instance variables, and can provide default implementations.

3. Explain when to choose each

Choose an interface when you need to define a role or contract that multiple unrelated classes can implement, promoting loose coupling. Choose an abstract class when you want to share code among closely related classes and enforce a common structure with some default behavior.

4. Discuss Java version changes

Describe how Java 8 introduced default and static methods in interfaces, allowing interfaces to have method implementations. Java 9 added private methods. These changes blur the line but interfaces still cannot hold state.

5. Relate to real-world scenarios

Give examples from enterprise development, such as using interfaces for service contracts and abstract classes for base entities, and explain how these choices affect testability, extensibility, and maintenance.

Key Points to Mention

  • Interfaces support multiple inheritance, abstract classes do not.
  • Abstract classes can have state (fields) and constructors; interfaces cannot (except static final constants).
  • Java 8+ interfaces can have default and static methods; Java 9+ can have private methods.
  • Use interfaces to define a contract for unrelated classes; use abstract classes for shared code among related classes.
  • Design principle: program to an interface, not an implementation.
  • Consider backward compatibility: adding methods to interfaces breaks implementations unless default methods are used.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Explain the Bridge design pattern in depth: what problem it solves, its structure, and a real example from your work. Also contrast it with the Adapter pattern and the Strategy pattern.

Technical Trade-offsSystem Design
Author's notes

This one tripped me up more than I expected.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining the Bridge pattern and the problem it solves (decoupling abstraction from implementation), then describe its structure with a UML diagram in words. Provide a concrete example from your experience, and finally contrast it with Adapter and Strategy patterns, highlighting differences in intent and structure.

Pro tip: Emphasize that Bridge is about preventing a combinatorial explosion of classes, while Adapter is about making incompatible interfaces work together, and Strategy is about interchangeable algorithms. Use a real-world analogy like a universal remote and TV brands to make the distinction memorable.

1. Define the Bridge Pattern

Explain that Bridge decouples an abstraction from its implementation so both can vary independently. Mention it involves an abstraction hierarchy and an implementation hierarchy connected via composition.

2. Describe the Problem It Solves

Discuss how without Bridge, you might end up with a class explosion when you need to extend both abstractions and implementations. Bridge avoids this by favoring composition over inheritance.

3. Outline the Structure

Describe the key components: Abstraction, RefinedAbstraction, Implementor, ConcreteImplementor. Explain how the Abstraction holds a reference to an Implementor and delegates calls to it.

4. Provide a Real Example

Share a specific example from your work where you applied Bridge. For instance, a reporting system that can output to different formats (PDF, HTML) and different platforms (Windows, Linux) without creating a class for each combination.

5. Contrast with Adapter and Strategy

Explain that Adapter makes existing interfaces work together without changing them, while Bridge is designed upfront to separate abstraction and implementation. Strategy encapsulates interchangeable algorithms and allows the client to choose one, but it doesn't separate two hierarchies.

Key Points to Mention

  • Bridge decouples abstraction from implementation, allowing independent variation.
  • It prevents class explosion by using composition instead of inheritance.
  • Key components: Abstraction, RefinedAbstraction, Implementor, ConcreteImplementor.
  • Adapter is about compatibility, Bridge is about separation of concerns.
  • Strategy is about interchangeable algorithms, Bridge is about structural decoupling.
  • Real-world example: graphics rendering across different APIs and platforms.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

Walk through each of the SOLID principles with a one-line definition and a concrete code smell that comes from violating it. Which one do you see broken most often in real codebases?

Technical Trade-offs
Author's notes

Comfortable territory.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Structure your answer by defining each SOLID principle in one sentence, then immediately pairing it with a concrete code smell that indicates a violation. After covering all five, pick the one you see most often (likely SRP or OCP) and justify your choice with a brief real-world example, emphasizing maintainability and testability.

Pro tip: Tie your answer to business impact—e.g., how violating OCP leads to fragile code that slows feature delivery—and mention that you use these principles as heuristics, not dogma, to show pragmatic judgment.

1. Define each principle concisely

State each SOLID principle in one clear sentence, avoiding jargon where possible. For example: 'Single Responsibility Principle: A class should have only one reason to change.'

2. Pair with a concrete code smell

For each principle, give a specific smell that signals a violation, such as a 'God class' for SRP or 'switch statements on type' for OCP. Keep it brief but vivid.

3. Identify the most commonly violated principle

Choose one principle (SRP or OCP are safe bets) and explain why it's frequently broken, citing common patterns like large classes or frequent modifications to existing code.

4. Provide a real-world example

Briefly describe a scenario from your experience where violating that principle caused problems (e.g., a class that handled both business logic and persistence, leading to merge conflicts and hard-to-test code).

5. Conclude with impact and balance

Summarize how adhering to SOLID improves maintainability, testability, and team velocity, but note that over-application can lead to over-engineering—show you apply them judiciously.

Key Points to Mention

  • Single Responsibility Principle (SRP): A class should have one reason to change; smell: God class or class with multiple unrelated methods.
  • Open/Closed Principle (OCP): Software entities should be open for extension but closed for modification; smell: frequent edits to existing classes when adding new features, often via switch statements.
  • Liskov Substitution Principle (LSP): Subtypes must be substitutable for their base types; smell: methods that throw NotImplementedException or override with incompatible behavior.
  • Interface Segregation Principle (ISP): Clients should not be forced to depend on interfaces they don't use; smell: 'fat' interfaces with many methods, leading to empty implementations.
  • Dependency Inversion Principle (DIP): High-level modules should not depend on low-level modules; both should depend on abstractions; smell: direct instantiation of concrete classes, making testing difficult.
  • Most commonly violated: SRP or OCP, often due to tight deadlines and lack of refactoring; emphasize impact on maintainability and testing.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

Explain the core Kafka concepts of topic, partition, and broker, then describe Kafka's message ordering guarantee precisely, including what is and is not ordered and how a producer controls ordering.

System DesignTechnical Trade-offs
Author's notes

Nailed the partition-level ordering point right away.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining topic, partition, and broker in a clear, hierarchical manner, then explain Kafka's ordering guarantee at the partition level. Emphasize that ordering is only guaranteed within a partition, not across partitions, and describe how producers control ordering via partitioning keys and idempotence.

Pro tip: Mention that ordering guarantees are per partition, so if global ordering is needed, use a single partition—but note the trade-off with parallelism and throughput. Also, highlight that idempotent producers and transactions help maintain ordering during retries.

1. Define Core Concepts

Explain that a topic is a logical channel for messages, partitioned for scalability; a partition is an ordered, immutable sequence of messages; and a broker is a server that stores and serves messages.

2. Explain Ordering Guarantee

State that Kafka guarantees order within a partition, meaning messages are appended and consumed in the same order. Across partitions, there is no global ordering.

3. Describe Producer Control

Explain that producers control which partition a message goes to via a partitioning key or custom partitioner. Messages with the same key go to the same partition, preserving order for that key.

4. Address Edge Cases and Trade-offs

Mention that increasing partitions improves parallelism but reduces global ordering; using a single partition ensures global order but limits scalability. Also note that retries can cause reordering unless idempotence is enabled.

Key Points to Mention

  • Topic is a logical category, partitioned for parallelism and scalability.
  • Partition is an ordered, immutable log; messages are assigned offsets.
  • Broker is a Kafka server that manages partitions and handles read/write requests.
  • Ordering is guaranteed only within a partition, not across partitions.
  • Producers use keys to determine partition; same key ensures same partition and order.
  • Idempotent producer and transactions prevent reordering during retries.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q5

In Spring Security, what is the difference between a Filter and a HandlerInterceptor, where does each sit in the request lifecycle, and what does pre-authentication mean and when would you use it?

Technical Trade-offsAPI & Integrations
Author's notes

Filter vs.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining both components and their positions in the request lifecycle, emphasizing that Filters operate at the servlet container level before Spring's DispatcherServlet, while HandlerInterceptors operate within Spring MVC after the DispatcherServlet. Then explain pre-authentication as a mechanism to establish a user's identity before Spring Security's standard authentication filters, and give a concrete use case such as SSO or header-based authentication in enterprise environments.

Pro tip: Mention that pre-authentication is often used in legacy or enterprise systems where an external system (e.g., Siteminder, CA SiteMinder) already authenticates users, and Spring Security's PreAuthenticatedAuthenticationFilter can leverage that. This shows real-world experience and understanding of integration challenges.

1. Define Filter and HandlerInterceptor

Clearly state that a Filter is part of the Servlet API and processes requests before they reach the DispatcherServlet, while a HandlerInterceptor is part of Spring MVC and processes requests after the DispatcherServlet but before the controller.

2. Explain request lifecycle positions

Describe the order: Filter (pre-processing) -> DispatcherServlet -> HandlerInterceptor (preHandle) -> Controller -> HandlerInterceptor (postHandle) -> Filter (post-processing). Emphasize that Filters have broader scope and can modify request/response, while Interceptors have access to Spring context and handler metadata.

3. Define pre-authentication

Explain that pre-authentication means the user's identity is established by an external system before the request reaches Spring Security's authentication filters, and Spring Security simply trusts and uses that identity.

4. Provide use cases for pre-authentication

Give examples such as SSO (e.g., CAS, SAML), header-based authentication (e.g., X-Remote-User), or when integrating with legacy systems that already handle authentication, like SiteMinder.

5. Summarize trade-offs and when to use each

Conclude that Filters are for low-level, cross-cutting concerns (e.g., logging, CORS) and Interceptors for Spring MVC-specific concerns (e.g., authorization checks, locale). Pre-authentication is used when authentication is delegated to an external system.

Key Points to Mention

  • Filter is part of Servlet API, HandlerInterceptor is part of Spring MVC.
  • Filters run before DispatcherServlet; Interceptors run after DispatcherServlet but before controller.
  • Filters can modify request/response; Interceptors can access handler and model.
  • Pre-authentication means identity is established externally before Spring Security.
  • Use pre-authentication with SSO, header-based auth, or legacy systems like SiteMinder.
  • Spring Security's PreAuthenticatedAuthenticationFilter handles pre-authenticated requests.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q6

Compare a load balancer and an API gateway: what does each do, at what network layer, and when would you use one, the other, or both together?

System DesignTechnical Trade-offs
Author's notes

Pretty standard system design question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining each component's core responsibility and the OSI layer it operates at, then contrast their primary use cases. Use a concrete example (e.g., an e-commerce platform) to illustrate when you'd use one, the other, or both together, emphasizing that they are complementary rather than mutually exclusive.

Pro tip: Mention that in modern cloud-native architectures, API gateways often incorporate load balancing capabilities, but dedicated load balancers still excel at raw traffic distribution and health checking at scale. Also, highlight that at a regulated bank like Wells Fargo, you'd consider security, compliance, and audit requirements when deciding where to terminate TLS and enforce policies.

1. Define Load Balancer

Explain that a load balancer distributes incoming network traffic across multiple servers to ensure high availability and scalability. It operates primarily at Layer 4 (TCP/UDP) or Layer 7 (HTTP/HTTPS) and focuses on routing based on IP, port, or basic HTTP attributes.

2. Define API Gateway

Describe an API gateway as an entry point for APIs that handles cross-cutting concerns like authentication, rate limiting, request/response transformation, and routing to microservices. It operates at Layer 7 and is application-aware, often dealing with API contracts and policies.

3. Compare Layers and Responsibilities

Contrast their network layers: load balancers at L4/L7 for traffic distribution, API gateways at L7 for API management. Highlight that load balancers are infrastructure-focused, while API gateways are application-focused.

4. Discuss Use Cases

Explain when to use each: load balancer for simple traffic distribution to identical servers; API gateway for managing diverse microservices with varying protocols and policies. Use both together when you need global traffic distribution (load balancer) in front of API gateways that handle API-specific logic.

5. Illustrate with an Example

Provide a concrete scenario, such as a banking application: a load balancer distributes traffic to multiple API gateway instances, which then route to backend microservices, enforcing security and rate limits. This shows how they complement each other.

Key Points to Mention

  • OSI layer differences: L4 vs. L7 for load balancers; L7 for API gateways.
  • Core functions: load balancing (traffic distribution, health checks) vs. API management (auth, rate limiting, transformation).
  • Scalability and high availability benefits of load balancers.
  • API gateway's role in microservices, security, and policy enforcement.
  • When to use both: load balancer for global distribution, API gateway for API-specific concerns.
  • Real-world example (e.g., e-commerce or banking) to demonstrate understanding.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.