一個尋找Python相關工做者的分享

點擊藍字python教程」關注咱們喲!

立刻到金三銀四黃金求職時間了,想要尋找Python相關的工做,好比Python工程師,那要面試成功,固然得知道面試官的喜愛了,那今天就帶你來看看Python面試官都喜歡問什麼問題吧:python

0. 概述面試

Python是個很是受歡迎的編程語言,隨着近些年機器學習、雲計算等技術的發展,Python的職位需求愈來愈高。編程

下面我收集了一些Python面試官常常問的問題,供你們參考學習。設計模式

1. 類繼承微信

有以下的一段代碼:閉包

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

如何調用類A的show方法了,方法以下:機器學習

obj.__class__ = Aobj.show()

__class__方法指向了類對象,只用給他賦值類型A,而後調用方法show,可是用完了記得修改回來。編程語言

2. 方法對象函數

問題:爲了讓下面這段代碼運行,須要增長哪些代碼?工具

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.myprint()a1(80)

答案:爲了能讓對象實例能被直接調用,須要實現__call__方法

class A: 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)

3. new和init

下面這段代碼輸出什麼?

class B: 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)a1.fn()a2=A(20)a2.fn()

答案:

NEW 5B INITB fnNEW 20INIT 20A fn

使用__new__方法,能夠決定返回那個對象,也就是建立對象以前,這個能夠用於設計模式的單例、工廠模式。__init__是建立對象是調用的。

4. Python list和dict生成

下面這段代碼輸出什麼?

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)

答案:

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

5. 全局和局部變量

下面這段代碼輸出什麼?

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

答案:

99

num不是個全局變量,因此每一個函數都獲得了本身的num拷貝,若是你想修改num,則必須用global關鍵字聲明。好比下面這樣:

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

6. 交換兩個變量的值

一行代碼交換兩個變量值

a = 8b = 9

答案:

a, b = b, a

7. 默認方法

以下的代碼:

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()

方法 fn1/fn2/fn3 都沒有定義,添加代碼,是沒有定義的方法都調用mydefault函數,上面的代碼應該輸出

defaultdefaultdefault

答案:


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 self.mydefaulta1 = A(10,20)a1.fn1()a1.fn2()a1.fn3()

方法__getattr__只有當沒有定義的方法調用時,纔是調用他。當fn1方法傳入參數時,咱們能夠給mydefault方法增長一個*args不定參數來兼容。

class A: 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 self.mydefaulta1 = A(10,20)a1.fn1(33)a1.fn2('hello')a1.fn3(10)

8. 包管理

一個包裏有三個模塊,mod1.py, mod2.py, mod3.py,但使用from demopack import *導入模塊時,如何保證只有mod一、mod3被導入了。

答案:增長__init__.py文件,並在文件中增長:

__all__ = ['mod1', 'mod3']

9. 閉包

寫一個函數,接收整數參數n,返回一個函數,函數的功能是把函數的參數和n相乘並把結果返回。

答案:

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

以上這些就是Python面試官比較喜歡問的基礎性的專業問題,你可以準確地回答出來嗎?

注意事項

01

對Python開發技術感興趣的同窗,歡迎加下方的交流羣一塊兒學習,相互討論。

02

python交流學習秋秋羣:463024091,多多交流問題,互幫互助,羣裏有不錯的學習教程和開發工具。學習python有任何問題(學習方法,學習效率,如何就業),能夠隨時來諮詢我

好啦!文章就給看官們分享到這兒

最後,若是以爲有幫助,記得關注、轉發、收藏


本文分享自微信公衆號 - python教程(pythonjc)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索