How to Tackle a Python Interview
In the first section, we’ll discuss a few questions about Python’s philosophy — those that help you make decisions about the architecture of a project. In the next section, we cover questions related to the Pythonic way of programming —
In the first section, we’ll discuss a few questions about Python’s philosophy — those that help you make decisions about the architecture of a project. In the next section, we cover questions related to the Pythonic way of programming — which may manifest in the form of review or finding the output of a code snippet.
A word of caution before we start. This guide talks primarily about Python’s built-in capabilities. The aim of this guide is to help you get up to speed with the inherent Python functionalities that enable quick development. So we won’t be able to cover every question you may face from the various types of companies out there.
Want to level up your Python skills and stand out in a rapidly growing market? Check out SitePoint Premium! You’ll find books to get you started (like The Python Apprentice) and develop job-ready skills (like Front-end Testing in Python). Enhance your skills with The Python Master, and access a growing library of over 400 books and courses on web design and development.
Development in Python: Project Architecture
What is Python? Why should you use Python?
If you’re interviewing for a Python role, you should have a clear idea of what Python is and how it’s different from other programming languages. Here are a few key points regarding Python that you should be aware of.
First, you should not be wrong about the etymology. A large section of Python programmers wrongly think that Guido van Rossum named it after the snake! On the contrary, Python is named after British sketch comedy Monty Python’s Flying Circus.
Next, Python is a high level, object-oriented, interpreted programming language. This means that Python code is executed line by line. Python is also dynamically typed, as it doesn’t require you to specify the type of variables when declaring them.
Given Python’s ease of use, it has found uses for common automation tasks. Python is often the go-to scripting choice for programmers who know multiple languages. With the increasing popularity of Python-based web frameworks like Django and Flask, Python’s share of the pie has increased significantly in recent years.
Limitations of Python
While it’s good to know about the capabilities of a programming language, it’s also good to be aware of its limitations to truly comprehend the situations you need to be wary of.
The first limitation of Python is execution speed. Though development in Python is quick, executing a similar block of Python code is often slower compared to compiled languages such as C++. For this reason, hackathons often give Python programs some extra time for execution. There are ways to circumvent this issue, though. For instance, you can integrate Python with a compiled language like C to perform the core processing through the other language.
In a world which is going mobile first, Python is not native to mobile development. You will rarely find mobile applications developed in Python. The two major mobile operating systems, Android and iOS, don’t support Python as an official programming language.
Package Determination: Django vs Flask
In addition to Python’s capabilities and limitations, a category of questions that are popular in interviews focuses around choosing between packages based on your requirements. Let’s look at one approach that you may take when tackling such questions.
Let’s say you’re given a choice between Django and Flask to start a web application. The answer to this question should lie within an amalgamation of the requirements of the project and the culture of the organization.
At the outset, you should know that with the use of plugins, there’s no right answer here: you can create the similar applications using either framework. However, there’s a stark difference between the design philosophies of each framework. Flask provides you the bare minimum features for you to create a web application like URL routing, templating, unit testing and a development server, thereby giving you a lot of freedom to design your application. On the other hand, Django provides you a large array of built in features from the beginning — database support, extensive admin functionality, and security features.
If you’re building an application that will use relational databases, with a lot of dynamic content, you should probably choose Django. However, if you’re looking for a lot of freedom in your project, you should opt for Flask.
Pythonic Way of Programming
A significant part of a Python interview consists of hands-on programming. It may be in the form of finding the output or reviewing code snippets, or simply a discussion on specific Python features that would help in certain scenarios. In this section, we look at various features and guidelines for Python development.
The way you create loops in Python is different from other programming languages. Python’s built-in functions
enumerate help you create more effective loops that run quicker. Let’s see the demonstration of these two functions.
Suppose you’d like to access corresponding elements from two different lists. You could loop over the length of the lists and access the corresponding element from each list. For instance, the following code prints the car and its corresponding manufacturer:
cars = ['CR-V', 'Silverado', 'F-150'] manufacturers = ['Honda', 'GM', 'Ford'] for i in range(len(cars)): print(cars[i], manufacturers[i])
This can be achieved using a simpler function in Python,
for car, manufacturer in zip(cars, manufacturers): print(car, manufacturer)
In this example,
zip creates pairs between the elements of the two lists. It may also be used to join more than two lists.
Let’s see how
enumerate works. If you’d like to access the index as well as the value of elements of a list, you could run the following snippet:
for i in range(len(cars)): print (i, cars[i])
enumerate function does the same task:
for i, car in enumerate(cars): print (i, car)
enumerate not only makes your code condense, but makes it run faster too.
Single-line List Operations
If you’d like to modify elements of a list, you may wish to use a function like
map, perhaps as follows:
numbers = [1, 2, 3, 4, 5] def squared(num): return num**2 squares = map(squared, numbers)
However, Python allows single-line list operations to achieve such tasks. Two ways of achieving the same task are shown below:
squares = [squared(x) for x in numbers] squares = [x**2 for x in numbers]
Further, you can use a single line
if ... else statements within such an operation too:
square_only_evens = [x**2 if x%2 == 0 else x for x in numbers]
You can also use lambda expressions in these single-line operations.
While you may use print statements to debug your code in other programming languages, Python comes with an in-built debugger,
pdb. Insert the following line of code in your program, and execution stops at that line for you to debug the environment:
import pdb; pdb.set_trace()
All variables and functions available till that point are available for you to inspect and find any error.
To utilize the full capabilities of Python, you must be comfortable with the built-in data structures. A list is a collection of items, which may not be of the same type. A tuple is similar to a list, but is immutable. A set is an unordered collection of items and doesn’t have any duplicates. A dictionary is a collection of key–value pairs.
You must be aware of various situations in which these data structures may be used.
With this, we come to the end of our considerations for a Python interview. Hopefully they’ve provided you with some helpful guidelines on how to prepare for your next interview. Good luck!