Interview Experience
Real interview experiences.
Coding interview questions with solutions for fintech/payments roles 2025.
Practice coding interview questions for fintech/payments companies. Focus on transaction processing and scalable systems.
def two_sum(nums, target): seen = {} for i, num in enumerate(nums): complement = target - num if complement in seen: return [seen[complement], i] seen[num] = i return []def is_valid(s): stack = [] mapping = {')': '(', '}': '{', ']': '['} for char in s: if char in mapping: top = stack.pop() if stack else '#' if mapping[char] != top: return False else: stack.append(char) return not stackdef validate_transaction(transactions, daily_limit): """ Validate transactions against daily limit """ daily_totals = {} valid = []
for trans in transactions: date = trans['date'] amount = trans['amount']
if date not in daily_totals: daily_totals[date] = 0
if daily_totals[date] + amount <= daily_limit: daily_totals[date] += amount valid.append(trans)
return validimport timefrom collections import defaultdict
class RateLimiter: def __init__(self, max_requests, window_seconds): self.max_requests = max_requests self.window_seconds = window_seconds self.requests = defaultdict(list)
def is_allowed(self, user_id): current_time = time.time() window_start = current_time - self.window_seconds
self.requests[user_id] = [ t for t in self.requests[user_id] if t > window_start ]
if len(self.requests[user_id]) < self.max_requests: self.requests[user_id].append(current_time) return True return Falsefrom collections import OrderedDict
class LRUCache: def __init__(self, capacity): self.cache = OrderedDict() self.capacity = capacity
def get(self, key): if key not in self.cache: return -1 self.cache.move_to_end(key) return self.cache[key]
def put(self, key, value): if key in self.cache: self.cache.move_to_end(key) self.cache[key] = value if len(self.cache) > self.capacity: self.cache.popitem(last=False)def coin_change(coins, amount): dp = [float('inf')] * (amount + 1) dp[0] = 0 for i in range(1, amount + 1): for coin in coins: if coin <= i: dp[i] = min(dp[i], dp[i - coin] + 1) return dp[amount] if dp[amount] != float('inf') else -1def max_subarray(nums): max_sum = current_sum = nums[0] for num in nums[1:]: current_sum = max(num, current_sum + num) max_sum = max(max_sum, current_sum) return max_sumfrom collections import deque
def level_order(root): if not root: return [] result = [] queue = deque([root]) while queue: level = [] for _ in range(len(queue)): node = queue.popleft() level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(level) return resultInterview Experience
Real interview experiences.
Preparation Guide
Complete preparation strategy.
Master payment system concepts!
Last updated: January 2026