python手寫函數(shù)面試的簡單介紹

Python面試基礎(chǔ)題十大陷阱,你中招了嗎

我們在會碰到各種各樣的面試,有的甚至是HR專門為你設(shè)置的障礙,在python面試中也是,無論你是應(yīng)聘Python web開發(fā),爬蟲工程師,或是數(shù)據(jù)分析,還是自動化運維,這些python面試基礎(chǔ)題十大陷阱也許你會遇到,今天的python培訓(xùn)總結(jié)出來給你以防萬一:

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供永福企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為永福眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

問題1:請問如何修改以下Python代碼,使得下面的代碼調(diào)用類A的show方法?

class A(object)

def show(self):

print 'derived show'

class B(A)

def show(self):

print 'derived show'

obj=B()

obj.show()

答:這道題的考點是類繼承,只要通過__class__ 方法指定類對象就可以了。補充的代碼如下:

obj._class_=A

obj.show()

問題2:請問如何修改以下Python代碼,使得代碼能夠運行?

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)

答:此題考察得是方法對象,為了能讓對象實例能被直接調(diào)用,需要實現(xiàn) __call__ 方法,補充代碼如下:

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

問題3:下面這段代碼的輸出是什么?

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 a10:

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 5

B INIT

B fn

NEW 20

INIT 20

A fn

此題考察的是new和init的用法,使用 __new__ 方法,可以決定返回那個對象,也就是創(chuàng)建對象之前調(diào)用的,這個常見于于設(shè)計模式的單例、工廠模式。__init__ 是創(chuàng)建對象是調(diào)用的。

問題4:下面這段代碼輸出什么?

1s=[1,2,3,4]

list1 =[i for i in ls if i2

print list1

list2 =[1*2 for i in ls if 12

print list2

dicl={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

setl ={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= 9

def f1():

um=20

def f2():

print num

f2()

f1()

f2()

答:

9

9

此題考察全局變量和局部變量。num 不是個全局變量,所以每個函數(shù)都得到了自己的 num 拷貝,如果你想修改 num ,則必須用 global 關(guān)鍵字聲明。比如下面這樣

num=9

def f1():

global num

um=20

def f2():

print num

f2()

f1()

f2()

#prints:

#9

#20

問題6:如何使用一行代碼交換兩個變量值?

a=8

b=9

答:

(a,b)=(b,a)

問題7:如何添加代碼,使得沒有定義的方法都調(diào)用mydefault方法?

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

答:

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.mydefault

a1=A(10,20)

a1.fn1()

a1.fn2()

a1.fn3()

此題的考的是Python的默認(rèn)方法, 只有當(dāng)沒有定義的方法調(diào)用時,才會調(diào)用方法 __getattr__。當(dāng) fn1 方法傳入?yún)?shù)時,我們可以給 mydefault 方法增加一個 *args 不定參數(shù)來兼容。

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 self.mydefault

a1=A(10,20)

a1.fn1(33)

a1.fn2('hello')

a1.fn3(10)

問題8:一個包里有三個模塊,mod1.py , mod2.py , mod3.py ,但使用 from demopack import * 導(dǎo)入模塊時,如何保證只有 mod1 、 mod3 被導(dǎo)入了。

答:在包中增加 __init__.py 文件,并在文件中增加:

_all_=['mod1','mod3']

問題9:寫一個函數(shù),接收整數(shù)參數(shù) n ,返回一個函數(shù),函數(shù)返回n和參數(shù)的積。

答:

def mulby(num):

def gn(val):

return num*val

return gn

zw=mulby(7)

print(zw(9));

問題10:請問下面的代碼有什么隱患?(Python2中)

def strtest1(num):

str='first'

for i in range(num):

str+="X"

return str

答:由于變量str是個不可變對象,每次迭代,python都會生成新的str對象來存儲新的字符串,num越大,創(chuàng)建的str對象越多,內(nèi)存消耗越大。

python運維開發(fā)工程師面試常見問題有哪些

面試python運維開發(fā)工程師每家公司對專業(yè)知識的考察側(cè)重點是不一樣的,下面給你整理了一些,希望能幫助到你!

python

1、python是強類型還是弱類型的語言

2、python的動態(tài)性體現(xiàn)在哪

3、python的namespace:四種;len()等函數(shù)的命名空間

4、range和xrange的區(qū)別,談到了迭代器

5、于是問怎么實現(xiàn)迭代器,然后又問了生成器,yield語句

6、將list的中的一萬條字符串合成一條字符串的方法

7、python多線程(g il)

8、python的三目運算符有嗎? 怎么用一行代碼實現(xiàn)三目運算

linux

1、問linux命令

2、top和ps在進(jìn)程占有資源率的統(tǒng)計方式有什么不同

3、然后扯到了頁表,內(nèi)存管理,TLB

5、linux文件系統(tǒng):inode,inode存儲了哪些東西,目錄名,文件名存在哪里

python面試必備題目有哪些

給你一份千鋒python的面試題吧

1、多線程使用Python是個好主意嗎?列出一些方法可以讓一些Python代碼以并行方式運行。

答:Python不允許真正意義上的多線程。它有一個多線程包,但如果你想使用多線程來加速你的代碼,那么使用它通常不是一個好主意。Python有一個名為全局解釋器鎖(Global

Interpreter

Lock(GIL))的結(jié)構(gòu)。GIL確保每次只能執(zhí)行一個“線程”。一個線程獲取GIL,做一點工作,然后將GIL傳遞到下一個線程。這種情況發(fā)生的很快,因此對于人眼看來,你的線程似乎是并行運行的,但它們實際上只是輪流使用相同的CPU核心。所有這些GIL傳遞都增加了運行的內(nèi)存。這意味著如果你想讓代碼運行得更快,那么使用線程包通常不是一個好主意。

使用Python的線程包也是有原因的。如果你想同時運行一些東西,并且效率不是一個問題,那么它就完全沒問題了?;蛘?,如果你正在運行需要等待某些事情的代碼(例如某些IO),那么它可能會很有意義。但是線程庫不會讓你使用額外的CPU核心。

多線程可以外包到操作系統(tǒng)(通過多處理),一些調(diào)用Python代碼的外部應(yīng)用程序(例如,Spark或Hadoop),或者Python代碼調(diào)用的一些代碼例如:你可以使用你的Python代碼調(diào)用一個C函數(shù)來完成昂貴的多線程事務(wù)。

2、這段代碼輸出了什么:

def f(x,l=[]):for i in range(x):l.append(i*i)print(l) f(2)f(3,[3,2,1])f(3)

答:[0, 1][3, 2, 1, 0, 1, 4][0, 1, 0, 1, 4]

3、如何在Python中管理內(nèi)存?

Python中的內(nèi)存管理由Python私有堆空間管理。所有Python對象和數(shù)據(jù)結(jié)構(gòu)都位于私有堆中。程序員無權(quán)訪問此私有堆。Python解釋器負(fù)責(zé)處理這個問題。Python對象的堆空間分配由Python的內(nèi)存管理器完成。核心API提供了一些程序員編寫代碼的工具Python還有一個內(nèi)置的垃圾收集器,它可以回收所有未使用的內(nèi)存,并使其可用于堆空間。

4、range&xrange有什么區(qū)別?

在大多數(shù)情況下,xrange和range在功能方面完全相同。它們都提供了一種生成整數(shù)列表的方法,唯一的區(qū)別是range返回一個Python列表對象,x range返回一個xrange對象。

這就表示xrange實際上在運行時并不是生成靜態(tài)列表。它使用稱為yielding的特殊技術(shù)根據(jù)需要創(chuàng)建值。該技術(shù)與一種稱為生成器的對象一起使用。因此如果你有一個非常巨大的列表,那么就要考慮xrange。

5、Python中help()和dir()函數(shù)的用法是什么?

Help()和dir()這兩個函數(shù)都可以從Python解釋器直接訪問,并用于查看內(nèi)置函數(shù)的合并轉(zhuǎn)儲。

help()函數(shù):help()函數(shù)用于顯示文檔字符串,還可以查看與模塊,關(guān)鍵字,屬性等相關(guān)的使用信息。

dir()函數(shù):dir()函數(shù)用于顯示定義的符號。

6、NumPy中有哪些操作Python列表的函數(shù)?

Python的列表是高效的通用容器。它們支持(相當(dāng))有效的插入,刪除,追加和連接,Python的列表推導(dǎo)使它們易于構(gòu)造和操作。

它們有一定的局限性:它們不支持像素化加法和乘法等“向量化”操作,并且它們可以包含不同類型的對象這一事實意味著Python必須存儲每個元素的類型信息,并且必須執(zhí)行類型調(diào)度代碼在對每個元素進(jìn)行操作時。

NumPy不僅效率更高; 它也更方便。你可以免費獲得大量的向量和矩陣運算,這有時可以避免不必要的工作。它們也得到有效實施。

NumPy數(shù)組更快,你可以使用NumPy,F(xiàn)FT,卷積,快速搜索,基本統(tǒng)計,線性代數(shù),直方圖等內(nèi)置。

這些內(nèi)容還是比較重要的,如果有幫到你,麻煩采納謝謝

python手寫排序函數(shù) 在線等

#舉個例子,冒泡排序

def?sort_list(f,?l):

print?"befor:",?l

for?i?in?range(len(l)):

for?j?in?range(i,?len(l)):

if?not?f(l[j],?l[i]):

l[i],?l[j]?=?l[j],?l[i]

print?"sorted:?",?l

#function

f??=?lambda?a,b?:?a=?b

#test

l1?=?[3,2,1,6,4]

l2?=?["a","x",?5,?"g"]

sort_list(f,?l1)

sort_list(f,?l2)

#STDOUT:

"""

befor:?[3,?2,?1,?6,?4]

sorted:??[1,?2,?3,?4,?6]

befor:?['a',?'x',?5,?'g']

sorted:??[5,?'a',?'g',?'x']

"""

python面試注意什么

一、自我介紹

之前講過很多關(guān)于如何應(yīng)對面試官提出的“自我介紹”這個問題,今天,針對Python程序員這個崗位,給大家重新梳理一下答題的結(jié)構(gòu)。我們在做自我介紹時,可以按照:個人基本信息+基本技術(shù)構(gòu)成+項目經(jīng)驗(具體項目以及在項目中的負(fù)責(zé)部分)+自我評價的結(jié)構(gòu)來回答。注意一定要緊緊圍繞招聘崗位的需求做介紹,在此之前要做好準(zhǔn)備工作,看看招聘方具體需要什么方向的研發(fā)工程師。目前針對Python,有自動化測試平臺的設(shè)計與開發(fā)、數(shù)據(jù)的挖掘與清洗以及Python開發(fā)等具體崗位,所以面試Python方向的同學(xué)注意,可以多和運維以及自動化方面靠攏。當(dāng)然,具體還是要看公司空缺崗位與你的專業(yè)是否對口。

二、不要給自己挖坑

確保你在回答面試官的過程中,回答的每個知識點都了然于胸,不然被問住,是很難堪的。如果遇到不會的問題,一定不要盲目亂答一通。比如有一次,有位同學(xué)在回答Web安全問題時,順嘴說了SQL注入,面試官便順?biāo)浦?,讓這位同學(xué)接著講講SQL的原理及解決方法。然而這位同學(xué)卻把XSS跨站注入攻擊和SQL注入搞混了,歸根結(jié)底,還是知識掌握得不夠牢固。所以,在面試時,要斟酌每一句話,聰明的同學(xué)還可以引導(dǎo)面試官,讓他問出自己想要被問的問題。當(dāng)然,化被動為主動,就是面試中比較高的一種境界了。

三、有足夠的自信

如果你學(xué)歷不是特別高,在面試時,面試官很有可能會問你是怎樣看待學(xué)歷和能力的。學(xué)歷和能力在當(dāng)今的社會都不可或缺,學(xué)歷往往是你面試的敲門磚,但敲完門用途就不大了,后面才是證明你能力的時刻。針對這個問題,我們一定要不卑不亢地說出自己看法:“我想只要完成了大學(xué)校園內(nèi)的學(xué)業(yè),就表明已經(jīng)具備了一定的學(xué)習(xí)能力。如果我們努力學(xué)習(xí)代碼技能,并且有能力學(xué)好,那么是學(xué)士還是博士就不是很重要。競爭這個崗位的關(guān)鍵是看你能在這個領(lǐng)域上發(fā)揮什么作用,而不單單是學(xué)了多少書本上的知識?!?/p>

當(dāng)前名稱:python手寫函數(shù)面試的簡單介紹
URL網(wǎng)址:http://muchs.cn/article16/hcgpdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google建站公司、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計公司、外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管