ICICI Bank Interview Preparation

55+ banking, finance, SQL and coding questions with complete solutions for freshers.

QuestionAnswerCategory
Q1. What is KYC and why is it important?Know Your Customer: verify customer identity and assess risks. Mandatory for regulatory compliance, prevents fraud and money laundering.Technical
Q2. Explain CASA account.Current Account Savings Account: hybrid product combining current and savings benefits. Low-cost funds for banks.Technical
Q3. Write SQL query to find second highest salary.Use subquery or ORDER BY with LIMIT OFFSET.
SELECT DISTINCT salary FROM employees 
ORDER BY salary DESC LIMIT 1 OFFSET 1;
Coding
Q4. What is NEFT and RTGS?NEFT (National Electronic Funds Transfer): batch processing, slower. RTGS (Real-Time Gross Settlement): immediate, for large amounts.Technical
Q5. What is a fixed deposit?Lump sum investment for fixed period at fixed interest rate. Cannot be withdrawn before maturity without penalty.Technical
Q6. Two pointer approach for array problems.Use left and right pointers converging from ends. Efficient for sorted arrays.
def two_pointer_sum(arr, target):
    left, right = 0, len(arr) - 1
    while left < right:
        current_sum = arr[left] + arr[right]
        if current_sum == target:
            return [left, right]
        elif current_sum < target:
            left += 1
        else:
            right -= 1
    return []
Coding
Q7. What is mutual fund?Investment fund pooling money from multiple investors. Professionally managed, diversified portfolio.Technical
Q8. Implement simple stack.Array-based or linked list-based with push, pop, peek operations.
class Stack:
    def __init__(self):
        self.items = []
    def push(self, x):
        self.items.append(x)
    def pop(self):
        return self.items.pop() if self.items else None
    def peek(self):
        return self.items[-1] if self.items else None
Coding
Q9. What is EMI?Equated Monthly Installment: fixed payment for loan over period. Includes principal + interest.Technical
Q10. Find maximum product subarray.Track max and min products (negative becomes positive). Update max at each step.
def max_product_subarray(arr):
    if not arr:
        return 0
    max_prod = min_prod = max_result = arr[0]
    for i in range(1, len(arr)):
        max_prod = max(arr[i], max_prod * arr[i], min_prod * arr[i])
        min_prod = min(arr[i], min_prod * arr[i], min_prod * arr[i])
        max_result = max(max_result, max_prod)
    return max_result
Coding
Q11. Explain NPA (Non-Performing Asset).Loan where principal/interest unpaid for 90+ days. High NPA indicates bank health issues.Technical
Q12. String manipulation: replace spaces with %20.Iterate through string, replace each space with %20.
def replace_spaces(s):
    return s.replace(' ', '%20')

# Or using list
def replace_spaces_v2(s):
    return ''.join(['%20' if c == ' ' else c for c in s])
Coding
Q13. What is SENSEX and NIFTY?SENSEX: 30 largest BSE companies index. NIFTY: 50 largest NSE companies index. Represent market.Technical
Q13. Find common elements in three sorted arrays.Use three pointers, compare and increment accordingly.Coding
Q14. What is credit score?Numerical rating 300-900 indicating creditworthiness. Based on payment history, debt, credit mix.Technical
Q15. Merge sort implementation.Divide array in half recursively, merge sorted subarrays. O(n log n) complexity.
def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result
Coding
Q16. Difference between savings and current account.Savings: interest earned, limited transactions, for individuals. Current: no interest, unlimited transactions, for businesses.Technical
Q17. Detect cycle in linked list (Floyd algorithm).Use slow (1 step) and fast (2 steps) pointers. If they meet, cycle exists.
def has_cycle(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
        if slow == fast:
            return True
    return False
Coding
Q18. What is P2P lending?Peer-to-Peer: direct loans between individuals/businesses through platforms. Bypasses traditional banks.Technical
Q19. Implement queue using array.Maintain front and rear pointers. Enqueue adds to rear, dequeue removes from front.
class Queue:
    def __init__(self):
        self.items = []
    def enqueue(self, x):
        self.items.append(x)
    def dequeue(self):
        return self.items.pop(0) if self.items else None
Coding
Q20. Explain blockchain in banking.Distributed ledger technology for secure, transparent transactions. Used in cryptocurrency, cross-border payments.Technical
Q21. Tell me about yourself.Concise intro: education, relevant projects, internships, banking interest, key skills.HR
Q22. Why ICICI Bank?Strong brand, innovation in fintech, customer service excellence, career growth opportunities.HR
Q23. Your strengths.Analytical, detail-oriented, quick learner, strong communication, problem-solving ability.HR
Q24. Count sort for numbers 0-100.Create count array, count occurrences, reconstruct sorted array. O(n+k) time.Coding
Q25. Find kth largest element.Use min heap of size k. Time: O(n log k).
import heapq

def find_kth_largest(arr, k):
    return heapq.nlargest(k, arr)[-1]
Coding
Q26. Check balanced parentheses.Use stack. Push opening, pop on closing. Stack empty = balanced.
def is_valid_parens(s):
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            if not stack or stack[-1] != mapping[char]:
                return False
            stack.pop()
        else:
            stack.append(char)
    return len(stack) == 0
Coding
Q27. What is digital wallet?Virtual wallet for storing payment info, money transfer, bill payments. Examples: PayTM, Google Pay.Technical
Q28. Longest common subsequence (LCS).Dynamic programming: dp[i][j] = chars matched between str1[:i] and str2[:j].Coding
Q29. Rotate array by k positions.Use slicing or reverse technique. O(n) time, O(1) space (in-place).
def rotate(arr, k):
    k = k % len(arr)
    return arr[-k:] + arr[:-k]
Coding
Q30. Shortest path in grid (BFS).BFS from start, track distances, reach destination.Coding
Q31. Handling pressure and deadlines.Prioritize, break into chunks, communicate status, stay calm and focused.HR
Q32. Team collaboration experience.STAR method: describe situation, task, action taken, results. Emphasize communication.HR
Q33. Your weaknesses and improvement.Be honest but show growth mindset. Example: was slow at coding, now solving problems faster.HR
Q34. Implement binary search tree.Left subtree values < root < right subtree. Insert, search, delete operations.Coding
Q35. What is liquidity?Ability to convert asset to cash quickly. Banks maintain liquidity for operational needs.Technical
Q36. Wildcard matching with * and ?.Dynamic programming: * matches any sequence, ? matches any single character.Coding
Q37. Flatten nested list.Recursive or iterative approach to flatten all levels.
def flatten(nested_list):
    result = []
    for item in nested_list:
        if isinstance(item, list):
            result.extend(flatten(item))
        else:
            result.append(item)
    return result
Coding
Q38. Best time to buy/sell stock.Track minimum price, calculate max profit at each step.
def max_profit(prices):
    if not prices:
        return 0
    min_price = float('inf')
    max_profit_val = 0
    for price in prices:
        max_profit_val = max(max_profit_val, price - min_price)
        min_price = min(min_price, price)
    return max_profit_val
Coding
Q39. What is APR?Annual Percentage Rate: yearly cost of loan including interest and fees.Technical
Q40. Salary expectations.Research market: give realistic range. Show flexibility based on growth opportunities.HR
Q41. Career goals in 5 years.Show ambition: senior developer, team lead, or specialized expertise in banking.HR
Q42. Word break - can form word from dictionary.Dynamic programming: dp[i] = True if word[:i] can be segmented.Coding
Q43. Reverse words in sentence.Split string, reverse order, join back.
def reverse_words(s):
    return ' '.join(s.split()[::-1])
Coding
Q44. Path sum in tree.DFS from root to leaf, track sum, check if equals target.Coding
Q45. What is CRR?Cash Reserve Ratio: percentage of deposits banks must keep as cash. Set by RBI.Technical
Q46. How do you keep learning?Online courses, tech blogs, GitHub, LeetCode, coding competitions, reading documentation.HR
Q47. Majority element (appears > n/2).Moore voting algorithm. O(n) time, O(1) space.
def majority_element(arr):
    count = 0
    candidate = None
    for num in arr:
        if count == 0:
            candidate = num
        count += (1 if num == candidate else -1)
    return candidate
Coding
Q48. Implement LRU cache.HashMap + Doubly Linked List. O(1) for get/put operations.Coding
Q49. What is repo rate?Rate at which RBI lends to banks. Affects lending rates, inflation control.Technical
Q50. Any questions for us?Ask about team size, tech stack, banking domain work, mentoring, growth path.HR
Q51. Regular expression matching.Dynamic programming with pattern matching rules.Coding
Q52. What is microfinance?Small loans to low-income individuals/entrepreneurs. Promotes financial inclusion.Technical
Q53. Palindrome partitions.Backtracking: partition string, check palindromes, collect valid partitions.Coding
Q54. Minimum window substring.Sliding window with character count tracking.Coding
Q55. Tell about challenging project.Describe challenge, approach taken, learning, results. Show problem-solving skills.HR