154 9 25MB
English Pages 250 Year 2023
w ie rv te In
Bi
m co e. bl
w ie rv te In Bi m co e. bl
The Python Interview HANDBOOK Your best guide with Essential Questions and Answers!
Copyright © 2023 Nezir Zahirovic All rights reserved InterviewBible.com
w ie rv te In Bi m co e. bl
DEDICATION To all those who struggle at interviews, This book is dedicated to you. We understand how stressful and overwhelming the interview process can be, and we want you to know that you are not alone. We know that sometimes it feels like you'll never be able to impress an interviewer or land your dream job. But we believe in you, and we want to equip you with the knowledge and tools you need to succeed. Throughout these pages, you'll find valuable tips and advice to help you navigate the interview process with confidence. We hope that by reading this book, you'll gain the skills and insights you need to ace your next interview and secure the job you've been dreaming of. Remember,
interviews
can
be
challenging,
but
they
are
also
opportunities for growth and learning. With perseverance and the right mindset, you can overcome any obstacle and achieve your goals. So, here's to you, the brave souls who keep pushing forward in the face of adversity. We salute you and wish you all the best in your interview journey. Sincerely, One of you!
All rights reserved InterviewBible.com 2023
w ie rv te In Bi m co e. bl
DISCLAIMER The information provided in this book is for educational and interview preparation purposes. The author has made effort to ensure the accuracy of the information within this book was correct at time of publication. However, the author makes no representation or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaims any implied warranties of merchantability or fitness for any particular purpose. The information in this book is sold without any warranty, express or implied. The author will not be held liable for any damages, direct or indirect, arising from the use of information contained in this book. The views and opinions expressed in this book are those of the author and do not necessarily reflect the official and latest policy or position of any company, organization, or institution. Any mention of commercial products, processes, or services within this book does not constitute an endorsement or recommendation by the author. The author has taken all reasonable care to ensure that any examples, code snippets, or technical information provided in this book are accurate and up to date. However, the author cannot guarantee that the code will work in all situations and it is the responsibility of the reader to test and modify the code to meet their specific requirements. The author will not be held liable for any damages, direct or indirect, arising from the use or misuse of the code contained in this book. Finally, the author would like to express their gratitude to all the contributors, reviewers, and readers of this book. Your feedback, suggestions,
and
support
have
been
invaluable
comprehensive guide to Python interview preparation. All rights reserved InterviewBible.com 2023
in
creating
this
w ie rv te In Bi I would like to express my deepest gratitude to everyone who contributed to the creation of this book, "The Python Interview Handbook". First and foremost, I would like to thank the Python community for creating and sharing their knowledge and experience, which was instrumental in the making of this book. Without their contributions and support, this book would not have been possible. I would also like to thank my family and friends for their unwavering support and encouragement throughout this project. Your love and encouragement kept me motivated and focused during the long hours of research and writing. I would also like to thank the team at OpenAI for providing the technology that powers ChatGPT, the AI language model that assisted in generating content for this book. Finally, I would like to thank the readers of this book for their interest in Python and for considering this handbook as a resource to enhance their knowledge and skills. I hope this book provides value and helps you in your journey to becoming a proficient Python developer.
All rights reserved InterviewBible.com 2023
m co e. bl
AKNOWLEDGMENTS
w ie rv te In Bi
Python
Machine Learning
Testing
Microservices
Debugging
App Architecture
Database
Payment Processing
Deployment
Tools & Resources
Security
Python Frameworks
Memory Management
Django
Error Handling
Flask
Concurrency
NumPy
Routing
Matplotlib
Performance and Scalability
Programming Jokes
All rights reserved InterviewBible.com 2023
m co e. bl
CONTENTS
w ie rv te In Bi Python is a high-level, interpreted programming language that is used for a wide range of applications, including web development, data analysis, artificial intelligence, and scientific computing.
1) Write a Python function to check whether a given number is prime or not.
def is_prime(n): if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True # Example usage: print(is_prime(17)) # Output: True print(is_prime(4)) # Output: False
1
All rights reserved InterviewBible.com 2023
m co e. bl
Python
w ie rv te In Bi
def largest_continuous_sum(numbers): max_sum = current_sum = numbers[0] for n in numbers[1:]: current_sum = max(current_sum + n, n) max_sum = max(max_sum, current_sum) return max_sum # Example usage: print(largest_continuous_sum([1, -2, 3, 4, -1, 2, -6, 5])) # Output: 10
3) What is the difference between 'is' and '==' in Python? The 'is' operator in Python checks if two objects are the same object (i.e., they have the same memory address), whereas the '==' operator checks if two objects have the same value. Here's an example:
2
All rights reserved InterviewBible.com 2023
m co e. bl
2) Write a Python function to find the largest continuous sum in a given list of integers.
w ie rv te In Bi m co e. bl
# create two different lists with the same elements list1 = [1, 2, 3] list2 = [1, 2, 3] # use 'is' to check if they are the same object print(list1 is list2) # Output: False # use '==' to check if they have the same value print(list1 == list2) # Output: True
4) What is the purpose of the 'enumerate' function in Python? Provide an example. The 'enumerate' function in Python is used to iterate over an iterable (such as a list) and return a tuple for each element that includes the index of the element and the element itself. Here's an example:
my_list = ['a', 'b', 'c'] for i, value in enumerate(my_list): print(f"Index: {i}, Value: {value}")
3
All rights reserved InterviewBible.com 2023
w ie rv te In Bi The 'zip' function in Python is used to combine multiple iterables (such as lists) into a single iterable that produces tuples of corresponding elements from each of the input iterables. Here's an example:
# create two lists list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] # use the 'zip' function to combine the lists combined_list = list(zip(list1, list2)) # print the resulting list of tuples print(combined_list) # Output: [(1, 'a'), (2, 'b'), (3, 'c')]
4
All rights reserved InterviewBible.com 2023
m co e. bl
5) What is the purpose of the 'zip' function in Python? Provide an example.
w ie rv te In Bi The 'yield' keyword is used in a function to define a generator that can be iterated over using a 'for' loop. When the 'yield' keyword is encountered in the function, the current state of the function is saved and the yielded value is returned to the caller. The next time the function is called, execution resumes from where it left off, with the saved state restored. Here's an example:
# define a generator function that yields a sequence of squares def squares(n): for i in range(n): yield i**2 # use the generator to print the first 5 squares for square in squares(5): print(square) # Output: 0, 1, 4, 9, 16
5
All rights reserved InterviewBible.com 2023
m co e. bl
6) What is the purpose of the 'yield' keyword in Python? Provide an example.
w ie rv te In Bi
Provide an example of each. A list comprehension is a concise way to create a new list by applying an expression to each element of an existing list or iterable. A generator expression is similar, but instead of creating a new list, it creates a generator object that can be iterated over. The key difference is that a list comprehension creates the entire list in memory all at once, whereas a generator expression generates values on-the-fly as they are needed. Here are examples of each:
# create a new list using a list comprehension numbers = [1, 2, 3, 4, 5] squared_numbers = [x**2 for x in numbers] print(squared_numbers) # Output: [1, 4, 9, 16, 25] # create a generator expression numbers = [1, 2, 3, 4, 5] squared_numbers = (x**2 for x in numbers) # iterate over the generator to print the squared numbers for square in squared_numbers: print(square) # Output: 1, 4, 9, 16, 25
6
All rights reserved InterviewBible.com 2023
m co e. bl
7) What is the difference between a list comprehension and a generator expression in Python?
w ie rv te In Bi
def is_palindrome(s): return s == s[::-1] # Example usage: print(is_palindrome('racecar')) # Output: True print(is_palindrome('hello')) # Output: False
9) Write a Python function to find the second highest number in a list.
def second_highest(numbers): numbers = sorted(set(numbers)) return numbers[-2] if len(numbers) >= 2 else None # Example usage: print(second_highest([1, 3, 2, 4, 4, 5])) # Output: 4 print(second_highest([1])) # Output: None
7
All rights reserved InterviewBible.com 2023
m co e. bl
8) Write a Python function to check whether a given string is a palindrome or not.
w ie rv te In Bi
def count_vowels(s): return sum(1 for c in s.lower() if c in 'aeiou') # Example usage: print(count_vowels('hello world'))
# Output: 3
11) Write a Python function to find the common elements between two lists.
def common_elements(list1, list2): return list(set(list1) & set(list2)) # Example usage: print(common_elements([1, 2, 3], [2, 3, 4]))
8
# Output: [2, 3]
All rights reserved InterviewBible.com 2023
m co e. bl
10) Write a Python function to count the number of vowels in a given string.
w ie rv te In Bi
class Node: def __init__(self, data): self.data = data self.next = None def reverse_list(head): prev = None curr = head while curr: next_node = curr.next curr.next = prev prev = curr curr = next_node return prev # Example usage: head = Node(1) head.next = Node(2) head.next.next = Node(3) reversed_head = reverse_list(head) print(reversed_head.data) # Output: 3 print(reversed_head.next.data) # Output: 2 print(reversed_head.next.next.data) # Output: 1
9
All rights reserved InterviewBible.com 2023
m co e. bl
12) Write a Python function to reverse a linked list.
w ie rv te In Bi
from collections import deque def shortest_path(graph, start, end): queue = deque([(start, [start])]) visited = set() while queue: node, path = queue.popleft() if node == end: return path if node in visited: continue visited.add(node) for neighbor in graph[node]: queue.append((neighbor, path + [neighbor])) return None # Example usage: graph = {'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': [], 'F': []} print(shortest_path(graph, 'A', 'F')) # Output: ['A', 'C', 'F']
10
All rights reserved InterviewBible.com 2023
m co e. bl
13) Write a Python function to find the shortest path between two nodes in a graph.
w ie rv te In Bi
def intersection(list1, list2): i, j = 0, 0 result = [] while i < len(list1) and j < len(list2): if list1[i] < list2[j]: i += 1 elif list1[i] > list2[j]: j += 1 else: result.append(list1[i]) i += 1 j += 1 return result # Example usage: print(intersection([1, 2, 3, 4, 5], [2, 4, 6])) # Output: [2, 4]
11
All rights reserved InterviewBible.com 2023
m co e. bl
14) Write a Python function to find the intersection of two sorted lists.
w ie rv te In Bi
def longest_common_prefix(strings): if not strings: return '' for i, c in enumerate(strings[0]): for s in strings[1:]: if i >= len(s) or s[i] != c: return strings[0][:i] return strings[0] # Example usage: print(longest_common_prefix(['flower', 'flow', 'flight'])) # Output: 'fl'
12
All rights reserved InterviewBible.com 2023
m co e. bl
15) Write a Python function to find the longest common prefix among a list of strings.
w ie rv te In Bi
def binary_search(numbers, target): left, right = 0, len(numbers) - 1 while left numbers[j]: dp[i] = max(dp[i], dp[j] + 1) return max(dp) # Example usage: print(longest_increasing_subsequence( [10, 9, 2, 5, 3, 7, 101, 18])) # Output: 4
17
All rights reserved InterviewBible.com 2023
m co e. bl
20) Write a Python function to find the longest increasing subsequence in a given list of integers.
w ie rv te In Bi
algorithm.
import heapq def dijkstra(graph, start, end): heap = [(0, start, [])] visited = set() while heap: (cost, node, path) = heapq.heappop(heap) if node not in visited: visited.add(node) path = path + [node] if node == end: return path for neighbor, c in graph[node].items(): heapq.heappush(heap, (cost + c, neighbor, path)) return None # Example usage: graph = { 'A': {'B': 1, 'C': 4}, 'B': {'A': 1, 'C': 2, 'D': 5}, 'C': {'A': 4, 'B': 2, 'D': 1}, 'D': {'B': 5, 'C': 1} } print(dijkstra(graph, 'A', 'D')) # Output: ['A', 'C', 'D']
18
All rights reserved InterviewBible.com 2023
m co e. bl
21) Write a Python function to find the shortest path between two nodes in a graph using Dijkstra's
w ie rv te In Bi
def longest_common_substring(str1, str2): m = len(str1) n = len(str2) dp = [[0] * (n + 1) for _ in range(m + 1)] longest_substring = "" for i in range(1, m + 1): for j in range(1, n + 1): if str1[i - 1] == str2[j - 1]: dp[i][j] = dp[i - 1][j - 1] + 1 if dp[i][j] > len(longest_substring): longest_substring = str1[i - dp[i][j]:i] else: dp[i][j] = 0 return longest_substring # Example usage: print(longest_common_substring("abcdefg", "defghi")) # Output: "def"
19
All rights reserved InterviewBible.com 2023
m co e. bl
22) Write a Python function to find the longest common substring between two given strings.
w ie rv te In Bi
def is_palindrome(s): i = 0 j = len(s) - 1 while i < j: if s[i] != s[j]: return False i += 1 j -= 1 return True # Example usage: print(is_palindrome("racecar")) # Output: True print(is_palindrome("hello")) # Output: False
24) Write a Python function to sort a given list of integers using the quicksort algorithm.
def quicksort(numbers): if len(numbers)