## Coding Interview Questions and Answers

Today we are sharing Best 15 Coding **Interview **Questions and Answers. These are some classic coding interview questions that can help you prepare for your coding interviews. Make sure to practice solving these problems to enhance your problem-solving skills. Here are 15 commonly asked coding interview questions, along with their answers:

#### 1: Reverse a String:

**Question: **Write a function to reverse a string.

**Answer:** def reverse_string(s):

return s[::-1]

#### 2: Check for Palindrome:

**Question: **Write a function to determine if a given string is a palindrome.

**Answer:** def is_palindrome(s):

return s == s[::-1]

#### 3: Find the Maximum Subarray:

**Question:** Write a function to find the contiguous subarray with the largest sum.

**Answer:** def max_subarray(nums):

max_sum = curr_sum = nums[0]

for num in nums[1:]:

curr_sum = max(num, curr_sum + num)

max_sum = max(max_sum, curr_sum)

return max_sum

#### 4: Two Sum Problem:

**Question:** Given an array of integers, return indices of the two numbers such that they add up to a specific target.

**Answer: **def two_sum(nums, target):

num_dict = {}

for i, num in enumerate(nums):

complement = target – num

if complement in num_dict:

return [num_dict[complement], i]

num_dict[num] = i

#### 5: Merge Two Sorted Lists:

**Question: **Merge two sorted linked lists and return it as a new sorted list.

**Answer:** def merge_two_lists(l1, l2):

if not l1:

return l2

if not l2:

return l1

if l1.val < l2.val:

l1.next = merge_two_lists(l1.next, l2)

return l1

else:

l2.next = merge_two_lists(l1, l2.next)

return l2

#### 6: Reverse Linked List:

**Question:** Reverse a singly linked list.

**Answer:** def reverse_linked_list(head):

prev = None

while head:

next_node = head.next

head.next = prev

prev = head

head = next_node

return prev

#### 7: Binary Search:

**Question:** Implement binary search on a sorted array.

**Answer:** def binary_search(nums, target):

left, right = 0, len(nums) – 1

while left <= right:

mid = left + (right – left) // 2

if nums[mid] == target:

return mid

elif nums[mid] < target:

left = mid + 1

else:

right = mid – 1

return -1

#### 8: Implement a Stack:

**Question:** Implement a stack using arrays/lists.

**Answer:** class Stack:

def __init__(self):

self.stack = []

def push(self, val):

self.stack.append(val)

def pop(self):

if not self.is_empty():

return self.stack.pop()

def is_empty(self):

return len(self.stack) == 0

def peek(self):

if not self.is_empty():

return self.stack[-1]

#### 9: Implement a Queue:

**Question: **Implement a queue using arrays/lists.

**Answer:** class Queue:

def __init__(self):

self.queue = []

def enqueue(self, val):

self.queue.append(val)

def dequeue(self):

if not self.is_empty():

return self.queue.pop(0)

def is_empty(self):

return len(self.queue) == 0

def peek(self):

if not self.is_empty():

return self.queue[0]

#### 10: Find the Missing Number:

**Question:** Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.

**Answer:** def missing_number(nums):

n = len(nums)

total_sum = n * (n + 1) // 2

return total_sum – sum(nums)

#### 11: Implement Trie (Prefix Tree):

**Question: **Implement a trie with insert, search, and startsWith methods.

**Answer: **class TrieNode:

def __init__(self):

self.children = {}

self.is_end_of_word = False

class Trie:

def __init__(self):

self.root = TrieNode()

def insert(self, word):

node = self.root

for char in word:

if char not in node.children:

node.children[char] = TrieNode()

node = node.children[char]

node.is_end_of_word = True

def search(self, word):

node = self.root

for char in word:

if char not in node.children:

return False

node = node.children[char]

return node.is_end_of_word

def startsWith(self, prefix):

node = self.root

for char in prefix:

if char not in node.children:

return False

node = node.children[char]

return True

#### 12: Check Balanced Parentheses:

**Question:** Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘ and ‘]’, determine if the input string is valid.

**Answer: **def is_valid(s):

stack = []

mapping = {‘)’: ‘(‘, ‘}’: ‘{‘, ‘]’: ‘[‘}

for char in s:

if char in mapping:

top_element = stack.pop() if stack else ‘#’

if mapping[char] != top_element:

return False

else:

stack.append(char)

return not stack

#### 13: Counting Sort:

**Question:** Implement counting sort algorithm.

**Answer:** def counting_sort(arr):

max_val = max(arr)

counts = [0] * (max_val + 1)

for num in arr:

counts[num] += 1

sorted_arr = []

for i in range(len(counts)):

sorted_arr.extend([i] * counts[i])

return sorted_arr

#### 14: Find Longest Common Prefix:

**Question:** Write a function to find the longest common prefix string amongst an array of strings.

**Answer:** def longest_common_prefix(strs):

if not strs:

return “”

min_str = min(strs, key=len)

for i, char in enumerate(min_str):

for string in strs:

if string[i] != char:

return min_str[:i]

return min_str

#### 15: Rotate Array:

**Question:** Rotate an array to the right by k steps.

**Answer: **def rotate(nums, k):

k %= len(nums)

nums[:] = nums[-k:] + nums[:-k]

## Conclusion

These questions cover various aspects of **data** structures and algorithms commonly encountered in coding interviews.