SoFunction
Updated on 2024-11-07

10 Frequently Asked Questions in Python Interviews (Summary)

summarize

Python is a very popular programming language, and with the development of machine learning, cloud computing and other technologies in recent years, the demand for Python jobs is getting higher and higher. Below I have collected 10 questions often asked by Python interviewers for your reference and learning.

class inheritance

There is the following piece of code:

class A(object):
  def show(self):
    print 'base show'

class B(A):
  def show(self):
    print 'derived show'
 
obj = B()
()

How to call the show method of class A now.

The methodology is as follows:

obj.__class__ = A
() 

The __ class__ method points to the class object, just assign him type A and call the method show, but remember to change it back when you're done.

method object

QUESTION: What code needs to be added in order for the following piece of code to run?

 class A(object):
  def __init__(self,a,b):
    self.__a = a
    self.__b = b
  def myprint(self):
    print 'a=', self.__a, 'b=', self.__b
  
 
a1=A(10,20)
()
 
a1(80)

Answer: The call method needs to be implemented in order for the object instance to be called directly

class A(object):
  def __init__(self, a, b):
    self.__a = a
    self.__b = b
  def myprint(self):
    print 'a=', self.__a, 'b=', self.__b
  def __call__(self, num):
    print 'call:', num + self.__a

new and init

What do you enter into this code below?

 class B(object):
  def fn(self):
    print 'B fn'
  def __init__(self):
    print "B INIT"
 
 
class A(object):
  def fn(self):
    print 'A fn'
 
  def __new__(cls,a):
      print "NEW", a
      if a>10:
        return super(A, cls).__new__(cls)
      return B()
 
  def __init__(self,a):
    print "INIT", a
 
a1 = A(5)
()
a2=A(20)
()

Answers:

NEW 5
B INIT
B fn
NEW 20
INIT 20
A fn 

Using the new method, you can decide to return that object, that is, before creating the object, this can be used in the design pattern of the single case, factory pattern. init is to create the object is called.

Python list and dict generation

What is the output of the following code?

ls = [1,2,3,4]
list1 = [i for i in ls if i>2]
print list1
 
list2 = [i*2 for i in ls if i>2]
print list2
 
dic1 = {x: x**2 for x in (2, 4, 6)}
print dic1
 
dic2 = {x: 'item' + str(x**2) for x in (2, 4, 6)}
print dic2
 
set1 = {x for x in 'hello world' if x not in 'low level'}
print set1

ANSWER.

[3, 4] 
[6, 8]
{2: 4, 4: 16, 6: 36}
{2: 'item4', 4: 'item16', 6: 'item36'}
set(['h', 'r', 'd']) 

Global and local variables

What is the output of the following code?

num = 9
def f1():
  num = 20
def f2():
  print num
 
f2()
f1()
f2()

ANSWER.

9
9

num is not a global variable, so each function gets its own copy of num, and if you want to modify it, you have to declare it with the global keyword. For example

num = 9
 
def f1():
  global num
  num = 20
 
def f2():
  print num
 
f2()
f1()
f2()
 
# prints:
#   9
#   20

Swapping the values of two variables

One line of code exchanges two variable values

a=8
b=9

Answers:

(a,b) = (b,a) 

default method

The following code

class A(object):
  def __init__(self,a,b):
    self.a1 = a
    self.b1 = b
    print 'init'
  def mydefault(self):
    print 'default'
 
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()

The methods fn1/fn2/fn3 are all undefined, add code that is undefined methods all call the mydefault function, the code above should output

default
default
default 

Answers:

class A(object):
  def __init__(self,a,b):
    self.a1 = a
    self.b1 = b
    print 'init'
  def mydefault(self):
    print 'default'
  def __getattr__(self,name):
    return 
 
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()

The method getattr is calling him only when the undefined method is called. When the fn1 method is passed arguments, we can add a *args indefinite argument to the mydefault method to be compatible.

class A(object):
  def __init__(self,a,b):
    self.a1 = a
    self.b1 = b
    print 'init'
  def mydefault(self,*args):
    print 'default:' + str(args[0])
  def __getattr__(self,name):
    print "other fn:",name
    return 
 
a1 = A(10,20)
a1.fn1(33)
a1.fn2('hello')
a1.fn3(10)

package management

There are three modules in a package,, , but when importing modules using from demopack import *, how do I make sure that only mod1, mod3 have been imported.

Answer:Add the file and add it to the file:

__ all__ = ['mod1','mod3']

closure (math)

Write a function that takes an integer argument n and returns a function that multiplies the function's argument with n and returns the result.

ANSWER.

def mulby(num):
  def gn(val):
    return num * val
 
  return gn
 
 
zw = mulby(7)
print(zw(9));

performances 

Parsing the following code is slow

def strtest1(num):
  str='first'
  for i in range(num):
    str+="X"
  return str

Answer: python's str is an immutable object, each iteration, a new str object is generated to store the new string, the larger the num, the more str objects are created and the more memory is consumed.

This is the whole content of this article.