← Bank of America Interview Insights

Bank of America·Software Engineer·Technical Phone Screen·Intermediate

IntermediatePending
May 2026

Summary

Applied for a Java Backend role with 3+ years experience required, spent weeks prepping for hard stuff like system design and concurrency, then fumbled a basic Streams API question on the day. The rest went fine but two miscommunications are eating at me while I wait for feedback.

Questions Asked (4)

Q1

Use the Java Streams API to filter and sort a collection by multiple criteria.

Algorithms & Data StructuresTechnical Trade-offs
Author's notes

Completely blanked on the right methods.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the data model and the exact filtering and sorting criteria, then walk through a clean Streams pipeline using filter, sorted with a multi-field Comparator, and collect. Emphasize readability, correctness, and performance considerations like avoiding repeated stream creation and handling nulls.

Pro tip: Mention that for large datasets or frequent queries, you might pre-sort or use a database, and that parallel streams should be used cautiously due to overhead and thread-safety concerns—this shows you think beyond just syntax.

1. Clarify requirements and data

Ask about the collection type, the fields involved, null handling, and whether the sort should be ascending or descending. Confirm if the result should be a List, Set, or other collection.

2. Build the filter chain

Use filter with a predicate that combines multiple conditions using logical operators. Mention that predicates can be composed with and/or for readability.

3. Implement multi-criteria sorting

Use sorted with a Comparator that chains thenComparing for secondary and tertiary criteria. Show how to use Comparator.comparing with method references and reverse order.

4. Collect the result

Use collect(Collectors.toList()) or toCollection to produce the final collection. Mention that collect is preferred over forEach for side-effect-free pipelines.

5. Discuss trade-offs and optimizations

Talk about performance: lazy evaluation, short-circuiting, and the cost of sorting. Mention alternatives like using a database query or pre-sorted data if the collection is large.

Key Points to Mention

  • Use of filter with composed predicates for multiple criteria
  • Comparator chaining with thenComparing for multi-field sorting
  • Handling nulls safely with Comparator.nullsFirst or nullsLast
  • Lazy evaluation and short-circuiting in streams
  • Performance considerations: sorting cost, parallel stream pitfalls
  • Readability and maintainability of stream pipelines

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

Q2

Walk me through how authentication is handled in your current project.

API & IntegrationsSystem Design
Author's notes

We talked past each other completely.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start with a high-level overview of the authentication flow, then dive into specific technologies and design decisions. Highlight security best practices and how you handle edge cases like token expiration and revocation. Tailor your answer to show alignment with banking industry standards and regulatory requirements.

Pro tip: Emphasize security and compliance considerations, such as OAuth 2.0 with short-lived tokens, multi-factor authentication, and audit logging, to demonstrate you understand the high-stakes environment of a bank.

1. Overview of Authentication Flow

Briefly describe the end-to-end authentication process, from user login to accessing protected resources. Mention the protocols and standards used (e.g., OAuth 2.0, OpenID Connect).

2. Technologies and Architecture

Explain the specific technologies (e.g., JWT, OAuth2, SAML) and how they are integrated into the system architecture. Discuss the role of identity providers, token issuance, and validation.

3. Security Measures and Best Practices

Detail the security measures in place, such as token expiration, refresh tokens, MFA, encryption, and secure storage. Mention how you prevent common vulnerabilities like CSRF and XSS.

4. Edge Cases and Error Handling

Describe how you handle token revocation, expired tokens, and failed authentication attempts. Include monitoring and logging for security audits.

5. Compliance and Scalability

Discuss how the authentication system meets regulatory requirements (e.g., PSD2, GDPR) and scales with increasing user load. Mention any performance optimizations.

Key Points to Mention

  • OAuth 2.0 and OpenID Connect for delegated authorization and authentication
  • JSON Web Tokens (JWT) for stateless authentication and their validation
  • Multi-factor authentication (MFA) and its implementation
  • Token lifecycle management: issuance, expiration, refresh, and revocation
  • Secure storage of credentials and tokens (e.g., HttpOnly cookies, secure vaults)
  • Audit logging and monitoring for security and compliance

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

Q3

System design question covering architecture and scalability.

System Design
Author's notes

Went well.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the functional and non-functional requirements, especially around scalability, consistency, and security, given the banking context. Then propose a high-level architecture, and dive into specific components like load balancing, database sharding, and caching. Finally, discuss trade-offs and how you would handle failures and monitoring.

Pro tip: Emphasize security and compliance (e.g., encryption, audit logs, PCI DSS) early on, as this is critical for a bank. Also, show awareness of cost and operational complexity when choosing technologies.

1. Clarify Requirements

Ask questions to understand the system's purpose, expected scale (users, transactions per second), data consistency needs, and any regulatory constraints.

2. High-Level Design

Sketch the main components: clients, load balancers, application servers, databases, caches, and message queues. Explain how they interact.

3. Deep Dive into Scalability

Discuss how to scale each component: horizontal scaling for app servers, database sharding or replication, caching strategies, and asynchronous processing.

4. Address Reliability and Security

Explain how to ensure high availability (redundancy, failover), data durability (backups, replication), and security (encryption, authentication, authorization).

5. Discuss Trade-offs and Monitoring

Talk about trade-offs between consistency and availability, latency and cost, and how you would monitor the system (metrics, logging, alerting).

Key Points to Mention

  • Load balancing and horizontal scaling
  • Database sharding, replication, and consistency models (e.g., ACID vs BASE)
  • Caching strategies (e.g., Redis, CDN) and cache invalidation
  • Asynchronous processing and message queues (e.g., Kafka, RabbitMQ)
  • Security measures: encryption at rest and in transit, OAuth, audit trails
  • Monitoring, logging, and alerting (e.g., Prometheus, ELK stack)

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

Q4

Algorithm or data structures problem.

Algorithms & Data Structures
Author's notes

No issues.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem constraints and requirements, then discuss potential approaches with their trade-offs before coding. Choose an optimal solution, explain your reasoning, and analyze time and space complexity.

Pro tip: At a bank like Bank of America, emphasize robustness and edge cases—interviewers value code that handles invalid inputs and extreme scenarios gracefully, reflecting the reliability needed in financial systems.

1. Clarify the Problem

Ask questions to understand input/output formats, constraints, and edge cases. Confirm assumptions before proceeding.

2. Discuss Approaches

Brainstorm multiple solutions, from brute force to optimized, and compare their time and space complexities. Choose the best one based on constraints.

3. Outline the Algorithm

Explain your chosen approach step-by-step in plain English, including data structures used and why they are appropriate.

4. Code the Solution

Write clean, modular code with meaningful variable names. Handle edge cases and avoid off-by-one errors.

5. Test and Analyze

Walk through test cases, including edge cases, and verify correctness. State the final time and space complexity.

Key Points to Mention

  • Time and space complexity analysis (Big O notation)
  • Trade-offs between different data structures (e.g., arrays vs. hash maps vs. trees)
  • Edge cases and input validation
  • Code readability and maintainability
  • Real-world applications or relevance to banking/finance
  • Testing strategy and debugging approach

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