Common Python Interview Questions you’ll most likely be asked
The fact is that there are far too many developers with allegedly extensive Python programming experience and education on their resumes who are terrible at some of the most primitive Python interview programming skills.These days, for our Python Software Developer positions, we now routinely ask during phone screening the followingTo prepare for our interview please implement the following code:For each integer in the range 1 to 100 (inclusive)
Print a line such that:
If it is evenly divisible by 3 print “Fizz”
If it is evenly divisible by 5 print “Buzz”
If it is evenly divisible by 15 print “FizzBuzz”
Otherwise: print the number itself.
Be prepared to talk about testing methodology, refactoring, code maintenance or design considerations We have done this about a hundred times over the last couple of years. So far no one has gotten a perfect score on it and only one developer has gotten a correct bit of code on the first attempt.Here’s a working solution:for i in range(1,101):
if i % 15 == 0:
elif i % 5 == 0:
elif i % 3 == 0:
That’s by no means perfect. But it exactly implements the specified functionality. Less than one in ten people who have been scheduled for phone screening as developers does this well at this problem.
A couple of weeks ago I did a written homework assignment with some essential Python interview questions. During the phone interview discussion after turning in the project, the lead Python Developer couldn’t find anything to nitpick and even confessed me he thought I was a better Python Developer than him. The conversation went very well and I felt confident I would be invited to in person interview. You may already guess would happened next. I never heard from them again and all of my attempts at communication were ignored. I’d like to say this was an isolated incident, but that would be a complete lie. I just spent last weekend doing another Python homework assignment and I haven’t heard back from them yet.
Not every developer has the luxury of that much free time to focus on puzzle type Python interview questions just to get a foot in the door. All companies want you coding, sometimes over the phone, sometimes on a computer, sometimes on a white board. The companies take that too far and I am 100% positive that the daily job for people who work there does not involve reversing a string in place or writing a function that determines if a word is a palindrome or not, but those interview questions are meant to shrink the pool of potential hires from the thousands to the dozens. Nobody wants to waste time through a normal interview process with thousands of people, better to stump most of them with idiotic, useless quiz questions and interview only a few dozen developers in person. I get it.
For the last few weeks I have been interviewing several people for Python developer position and to my surprise found out that all of them had no idea about Python virtual environments. Answering this common Python interview question may not get the job, but at least you would continue the interview process.A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project A depends on version Django 1.8 but, Project B needs Django 1.9.6” dilemma, and keeps your global site-packages directory clean and manageable.$ pip install virtualenv
My disappointment is compounded when a candidate misses this topic even when they claim several years of Python experience.
Isolation and repeatable clean environment development without hidden dependencies on the base system is a good thing. Virtual Environment primary goal is to conveniently provide Python level isolation. For Python packages that depend on system libraries, only the Python level part of those packages are isolated. Provided the
developer is fully conscious that this is python-level-only isolation, then it is useful.
I can sense some developers bristle at the mention of virtual environment. What about using Docker instead of virtual environment? You can install all dependencies inside a container instead of virtualenv. Installing dependencies in Docker has it’s advantages over using just virtual environment, because thanks to containers, the developer doesn’t have to worry about system’s dependencies, and your app is now better isolated. However running Python becomes a bit cumbersome, because developer doesn’t have dependencies installed on machine, and developer would have to get into docker container to run Python there. Just use Python as you always do
Before software developer goes in for a Python interview, there are a few things which one should refresh. For example how about solving “ImportError: No module named requests” error. Imagine that the Python interpreter returns this error on basic “import requests” command➜ ~ python
Python 2.7.11 (default, Jan 15 2016, 21:24:19)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import requests
Traceback (most recent call last):
File “”, line 1, in
ImportError: No module named requests
The most obvious check is to run Python’s package manager – pip to show details about an installed package. If it returns nothing, it means that package is not installed. ➜ ~ pip show requests
One more precise check is to execute the same pip to list installed packages➜ ~ pip list
The usual trick to answer this Python interview question is to install the request package by running the simple command and than check the installation again.➜ ~ pip install requests
Imagine that you are preparing to go to your Python interview and looking for the ultimate interview question that would show all your skills and knowledge. How about the most simplest interview question that would suit to the beginner – swap values of two variables! You could obviously provide the following answertemp = foo
foo = bar
bar = temp
unfortunately this in not a Python way of coding and the interviewee would be definitely not happy with your performance during this coding test. How about swapping the values without using a third variable? The answer below is much better, but it is still not a Python way to solve the problem. Now is better than never. foo = foo + bar
bar = foo – bar
foo = foo – bar
The correct answer the interviewee is patently trying to get is (foo, bar) = (bar, foo)
and this would be a great confirmation of your Python skills and knowledge, but of course the interview for beginner is not over yet. In the face of ambiguity, refuse the temptation to guess.
As many Python beginners, I wonder with which version of Python they should start. Perhaps the I should start with the version that best Python books for beginners are written in, and figure out the differences later on. What if as beginner I want to start a new project and have the choice to pick Python version? The End Of Life date for Python 2.7 has been moved five years into the future, to 2020 and realistically speaking it is quite possible that in 2020 I will be using some other language, not Python. From the other point of view it would be better to study the newest version of the language. At least I have a look at the major differences between Python 2 and Python 3 to avoid common pitfalls when writing the code on the whiteboard during technical Python interview. The most visible (difference) is probably the way the “print” statement works. It is definitely the most widely known change, but still it is worth mentioning. The print statement in Python 2 has been replaced with a print() function in Python 3, with keyword arguments to replace most of the special syntax of the old print statementPython 2 :print “Python”, python_version()
print “How to pass Python 2 Interview?”
Python 3 :print(“Python, python_version())
print(“How to pass Python 3 Interview?”)
Somehow I like an old statement mainly because it allowed me to type two less characters (ie, the parentheses), but the good explanation of the change to the interviewer would without doubt put me in the front of other job candidates.
I would not call myself an absolute beginner in Python’s world, so I decided to choose the best Python IDE. Just a side note – when you are learning the absolute basics of Python the last thing you need is to learn another set of terminology and rules for the IDE. I am absolutely agree with this statement. PyCharm is one of the most popular Python IDE and the installation of PyCharm went well, unnervingly well. JetBrains’s tool has great support and it has amazing documentation, although the sheer number of menus, toggles. leavers, choices, and dialogs is potentially very difficult to navigate and cognitively overwhelming at first glance.
In order to successfully run a simple “Hello world” program in PyCharm, I needed to
Navigate to the file menu and create a new project
Select the project type and interpreter that I wanted (default works like a charm)
Right-click on the project name in order to create a new Python file
Write my one liner
Click the Run button, and my code finally runs.
I am glad that I am not using VIM. Although the work with VIM would help better for whiteboard “testing” during an Python interview.
In order to pass the coding interview questions I have to write some code and it would be a wonderful idea to post the code of python interview question to this blog. Unfortunately Blogger platform doesn’t have syntax highlighting feature by design. I tried a number of excellent free Syntax Highlighters like Google Code Prettify a highlighter used on Stack Overflow and SyntaxHighlighter by Alex Gorbachev, but decided to go with Highlight.js. It is small, fast and rich. There are straightforward instruction how to configure prebuilt version of highlight.js with 23 commonly used languages on Blogger platform using open source cdnjs CDN:
Take backup of your blogger templateOpen your Blogger template in Edit HTML modePaste the following code before head tag
Save Blogger TemplateNow you could simply enclose Python code in pre tagsHello, World! Python style :print(“Hello, World!”)
Now I am ready to python interview challenge.
I have been a QA Tester developer for the past 13 years and working in a software testing has its own merits and drawbacks. I am considering going into software development as a full time occupation. While I have some background in scripting and coding, I don’t feel incredibly competent. I know that I am going to need a learn a ton of things quickly as a software developer. I thought I could write down the list of things that I need to do to juggle with a new role and decided to start with Python.
Write about the technologies, toolset, idiomatic way of doing things in it and write it a lot, because it is very hard to keep all these things in mind.
Get familiarized with the best tool set available for Python and learn the shortcuts in it.
Look into lot of open source projects and try contributing to them and it is a good way to learn the best practices in the language.
Setup the Python environment on my Mac and try running it successfully. I think it gives me more confidence and can learn easily by troubleshooting.
Lots of learning materials are available online, both free and paid ones.
Preparing for the coding interviews by meticulously going through Python interview questions.
Hopefully I had created the list of things to do when being a Python programmer.