- 論壇徽章:
- 0
|
[color=rgba(0, 0, 0, 0.75)]Q.27. 解釋 Python 中的賦值和算數(shù)運(yùn)算符?
[color=rgba(0, 0, 0, 0.75)]![]()
[color=rgba(0, 0, 0, 0.75)]Q.28. 解釋 Python 中的邏輯運(yùn)算符
[color=rgba(0, 0, 0, 0.75)]Python 中有三個(gè)邏輯運(yùn)算符:and、or、not
![]()
[color=rgba(0, 0, 0, 0.75)]Q.29. 解釋 Python 中的成員運(yùn)算符
[color=rgba(0, 0, 0, 0.75)]使用 in 和 not in 運(yùn)算符我們可以判斷某個(gè)值是否在成員中。
![]()
[color=rgba(0, 0, 0, 0.75)]Q.30. 解釋 Python 中的身份運(yùn)算符
[color=rgba(0, 0, 0, 0.75)]這是非常常見的 Python 面試題,用下面的示例來回答.
is 和 not is 運(yùn)算符可以判斷兩個(gè)對(duì)象是否相同
![]()
[color=rgba(0, 0, 0, 0.75)]Q.31. 解釋 Python 中的位運(yùn)算符
[color=rgba(0, 0, 0, 0.75)]此運(yùn)算符按二進(jìn)制位對(duì)值進(jìn)行操作。
[color=rgba(0, 0, 0, 0.75)]1.與 (& 返回按位與結(jié)果
![]()
2
[color=rgba(0, 0, 0, 0.75)]2.或 (|) 返回按位或結(jié)果
![]()
3
[color=rgba(0, 0, 0, 0.75)]3.異或 (^) 返回按位異或結(jié)果
![]()
1
[color=rgba(0, 0, 0, 0.75)]4.取反 (~) 返回按位取反結(jié)果
![]()
-3
[color=rgba(0, 0, 0, 0.75)]5.左移位 (<< 將符號(hào)左邊數(shù)的二進(jìn)制左移右邊數(shù)位
![]()
4
[color=rgba(0, 0, 0, 0.75)]1 的二級(jí)制 001 左移 2 位變成 100 也即十進(jìn)制的 4
[color=rgba(0, 0, 0, 0.75)]6.右移位 (>>
![]()
1
[color=rgba(0, 0, 0, 0.75)]Q.32. 如何在 Python 使用多進(jìn)制數(shù)字?
[color=rgba(0, 0, 0, 0.75)]除十進(jìn)制以外,在 Python 中還可以使用二進(jìn)制、八進(jìn)制、十六進(jìn)制。
[color=rgba(0, 0, 0, 0.75)]1.二進(jìn)制數(shù)有 0 和 1 組成,我們使用 0b 或 0B 前綴表示二進(jìn)制數(shù)
![]()
10
[color=rgba(0, 0, 0, 0.75)]使用 bin 函數(shù)可以將數(shù)字轉(zhuǎn)換為二進(jìn)制
![]()
‘0b1111’
[color=rgba(0, 0, 0, 0.75)]2.八進(jìn)制數(shù)由數(shù)字 0-7 組成,使用前綴 0o 或 0O 表示 8 進(jìn)制數(shù)
![]()
‘0o10’
[color=rgba(0, 0, 0, 0.75)]3.十六進(jìn)數(shù)由數(shù)字 0-15 組成,使用前綴 0x 或者 0X 表示 16 進(jìn)制數(shù)
![]()
‘0x10’
![]()
‘0xf’
[color=rgba(0, 0, 0, 0.75)]Q.33. 如何獲取字典中的所有鍵?
[color=rgba(0, 0, 0, 0.75)]使用 keys 來獲取字典中的所有鍵
![]()
[color=rgba(0, 0, 0, 0.75)]Q.34. 問什么標(biāo)識(shí)符不建議使用下劃線開頭?
[color=rgba(0, 0, 0, 0.75)]因?yàn)樵?Python 中以下劃線開頭的變量為私有變量,如果你不想讓變量私有,就不要使用下劃線開頭。
[color=rgba(0, 0, 0, 0.75)]Q.35. 如何聲明多個(gè)變量并賦值?
[color=rgba(0, 0, 0, 0.75)]有兩種方式:
![]()
[color=rgba(0, 0, 0, 0.75)]Q.36. 什么是元組的解封裝?
[color=rgba(0, 0, 0, 0.75)]首先我們來介紹元組封裝:
![]()
(3, 4, 5)
[color=rgba(0, 0, 0, 0.75)]將 3,4,5 封裝到元組 mytuple 中。
[color=rgba(0, 0, 0, 0.75)]現(xiàn)在我們要將這些值解封裝到變量 x,y,z 中
![]()
12
[color=rgba(0, 0, 0, 0.75)]Q.37. 簡(jiǎn)述面向?qū)ο笾衉_new__和__init__區(qū)別
[color=rgba(0, 0, 0, 0.75)]__init__是初始化方法,創(chuàng)建對(duì)象后,就立刻被默認(rèn)調(diào)用了,可接收參數(shù)。
[color=rgba(0, 0, 0, 0.75)](1、__new__至少要有一個(gè)參數(shù)cls,代表當(dāng)前類,此參數(shù)在實(shí)例化時(shí)由Python解釋器自動(dòng)識(shí)別。
[color=rgba(0, 0, 0, 0.75)](2、__new__必須要有返回值,返回實(shí)例化出來的實(shí)例,這點(diǎn)在自己實(shí)現(xiàn)__new__時(shí)要特別注意,可以return父類(通過super(當(dāng)前類名, cls))__new__出來的實(shí)例,或者直接是object的__new__出來的實(shí)例。
[color=rgba(0, 0, 0, 0.75)](3、__init__有一個(gè)參數(shù)self,就是這個(gè)__new__返回的實(shí)例,__init__在__new__的基礎(chǔ)上可以完成一些其它初始化的動(dòng)作,__init__不需要返回值。
[color=rgba(0, 0, 0, 0.75)](4、如果__new__創(chuàng)建的是當(dāng)前類的實(shí)例,會(huì)自動(dòng)調(diào)用__init__函數(shù),通過return語句里面調(diào)用的__new__函數(shù)的第一個(gè)參數(shù)是cls來保證是當(dāng)前類實(shí)例,如果是其他類的類名,;那么實(shí)際創(chuàng)建返回的就是其他類的實(shí)例,其實(shí)就不會(huì)調(diào)用當(dāng)前類的__init__函數(shù),也不會(huì)調(diào)用其他類的__init__函數(shù)。
[color=rgba(0, 0, 0, 0.75)]Q.38.簡(jiǎn)述Django的orm
[color=rgba(0, 0, 0, 0.75)]ORM,全拼Object-Relation Mapping,意為對(duì)象-關(guān)系映射。
[color=rgba(0, 0, 0, 0.75)]實(shí)現(xiàn)了數(shù)據(jù)模型與數(shù)據(jù)庫的解耦,通過簡(jiǎn)單的配置就可以輕松更換數(shù)據(jù)庫,而不需要修改代碼只需要面向?qū)ο缶幊?orm操作本質(zhì)上會(huì)根據(jù)對(duì)接的數(shù)據(jù)庫引擎,翻譯成對(duì)應(yīng)的sql語句,所有使用Django開發(fā)的項(xiàng)目無需關(guān)心程序底層使用的是MySQL、Oracle、sqlite…,如果數(shù)據(jù)庫遷移,只需要更換Django的數(shù)據(jù)庫引擎即可。
[color=rgba(0, 0, 0, 0.75)]Q.39.列出常見MYSQL數(shù)據(jù)存儲(chǔ)引擎
[color=rgba(0, 0, 0, 0.75)]InnoDB:支持事務(wù)處理,支持外鍵,支持崩潰修復(fù)能力和并發(fā)控制。如果需要對(duì)事務(wù)的完整性要求比較高(比如銀行),要求實(shí)現(xiàn)并發(fā)控制(比如售票),那選擇InnoDB有很大的優(yōu)勢(shì)。如果需要頻繁的更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB,因?yàn)橹С质聞?wù)的提交(commit)和回滾(rollback)。
[color=rgba(0, 0, 0, 0.75)]MyISAM:插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實(shí)現(xiàn)處理高效率。如果應(yīng)用的完整性、并發(fā)性要求比 較低,也可以使用。
[color=rgba(0, 0, 0, 0.75)]MEMORY:所有的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對(duì)數(shù)據(jù)的安全性要求較低,可以選擇MEMOEY。它對(duì)表的大小有要求,不能建立太大的表。所以,這類數(shù)據(jù)庫只使用在相對(duì)較小的數(shù)據(jù)庫表。
[color=rgba(0, 0, 0, 0.75)]Q.40.簡(jiǎn)述多線程、多進(jìn)程
[color=rgba(0, 0, 0, 0.75)]進(jìn)程:
[color=rgba(0, 0, 0, 0.75)]1、操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,多個(gè)進(jìn)程之間相互獨(dú)立
2、穩(wěn)定性好,如果一個(gè)進(jìn)程崩潰,不影響其他進(jìn)程,但是進(jìn)程消耗資源大,開啟的進(jìn)程數(shù)量有限制
[color=rgba(0, 0, 0, 0.75)]線程:
1、CPU進(jìn)行資源分配和調(diào)度的基本單位,線程是進(jìn)程的一部分,是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位,一個(gè)進(jìn)程下的多個(gè)線程可以共享該進(jìn)程的所有資源
2、如果IO操作密集,則可以多線程運(yùn)行效率高,缺點(diǎn)是如果一個(gè)線程崩潰,都會(huì)造成進(jìn)程的崩潰
[color=rgba(0, 0, 0, 0.75)]應(yīng)用:
IO密集的用多線程,在用戶輸入,sleep 時(shí)候,可以切換到其他線程執(zhí)行,減少等待的時(shí)間
CPU密集的用多進(jìn)程,因?yàn)榧偃鏘O操作少,用多線程的話,因?yàn)榫程共享一個(gè)全局解釋器鎖,當(dāng)前運(yùn)行的線程會(huì)霸占GIL,其他線程沒有GIL,就不能充分利用多核CPU的優(yōu)勢(shì)
[color=rgba(0, 0, 0, 0.75)]Q.41.IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分別代表什么異常
[color=rgba(0, 0, 0, 0.75)]IOError:輸入輸出異常
AttributeError:試圖訪問一個(gè)對(duì)象沒有的屬性
ImportError:無法引入模塊或包,基本是路徑問題
IndentationError:語法錯(cuò)誤,代碼沒有正確的對(duì)齊
IndexError:下標(biāo)索引超出序列邊界
KeyError:試圖訪問你字典里不存在的鍵
SyntaxError ython代碼邏輯語法出錯(cuò),不能執(zhí)行
NameError:使用一個(gè)還未賦予對(duì)象的變量
[color=rgba(0, 0, 0, 0.75)]Q.42.MyISAM 與 InnoDB 區(qū)別:
[color=rgba(0, 0, 0, 0.75)](1、InnoDB 支持事務(wù),MyISAM 不支持,這一點(diǎn)是非常之重要。事務(wù)是一種高級(jí)的處理方式,如在一些列增刪改中只要哪個(gè)出錯(cuò)還可以回滾還原,而 MyISAM就不可以了;
[color=rgba(0, 0, 0, 0.75)](2、MyISAM 適合查詢以及插入為主的應(yīng)用,InnoDB 適合頻繁修改以及涉及到安全性較高的應(yīng)用;
[color=rgba(0, 0, 0, 0.75)](3、InnoDB 支持外鍵,MyISAM 不支持;
[color=rgba(0, 0, 0, 0.75)](4、對(duì)于自增長(zhǎng)的字段,InnoDB 中必須包含只有該字段的索引,但是在 MyISAM表中可以和其他字段一起建立聯(lián)合索引;
[color=rgba(0, 0, 0, 0.75)](5、清空整個(gè)表時(shí),InnoDB 是一行一行的刪除,效率非常慢。MyISAM 則會(huì)重建表;
[color=rgba(0, 0, 0, 0.75)]Q.43.單引號(hào)、雙引號(hào)、三引號(hào)用法
[color=rgba(0, 0, 0, 0.75)](1、單引號(hào)和雙引號(hào)沒有什么區(qū)別,不過單引號(hào)不用按shift,打字稍微快一點(diǎn)。表示字符串的時(shí)候,單引號(hào)里面可以用雙引號(hào),而不用轉(zhuǎn)義字符,反之亦然。
'She said:“Yes.” ’ or "She said: ‘Yes.’ "
[color=rgba(0, 0, 0, 0.75)](2、但是如果直接用單引號(hào)擴(kuò)住單引號(hào),則需要轉(zhuǎn)義,像這樣:
’ She said:‘Yes.’ ’
[color=rgba(0, 0, 0, 0.75)](3、三引號(hào)可以直接書寫多行,通常用于大段,大篇幅的字符串
“”“helloworld”""
[color=rgba(0, 0, 0, 0.75)]Q.44.HTTP請(qǐng)求中g(shù)et和post區(qū)別
[color=rgba(0, 0, 0, 0.75)](1、GET請(qǐng)求是通過URL直接請(qǐng)求數(shù)據(jù),數(shù)據(jù)信息可以在URL中直接看到,比如瀏覽器訪問;而POST請(qǐng)求是放在請(qǐng)求頭中的,我們是無法直接看到的;
[color=rgba(0, 0, 0, 0.75)](2、GET提交有數(shù)據(jù)大小的限制,一般是不超過1024個(gè)字節(jié),而這種說法也不完全準(zhǔn)確,HTTP協(xié)議并沒有設(shè)定URL字節(jié)長(zhǎng)度的上限,而是瀏覽器做了些處理,所以長(zhǎng)度依據(jù)瀏覽器的不同有所不同;POST請(qǐng)求在HTTP協(xié)議中也沒有做說明,一般來說是沒有設(shè)置限制的,但是實(shí)際上瀏覽器也有默認(rèn)值。總體來說,少量的數(shù)據(jù)使用GET,大量的數(shù)據(jù)使用POST。
[color=rgba(0, 0, 0, 0.75)](3、GET請(qǐng)求因?yàn)閿?shù)據(jù)參數(shù)是暴露在URL中的,所以安全性比較低,比如密碼是不能暴露的,就不能使用GET請(qǐng)求;POST請(qǐng)求中,請(qǐng)求參數(shù)信息是放在請(qǐng)求頭的,所以安全性較高,可以使用。在實(shí)際中,涉及到登錄操作的時(shí)候,盡量使用HTTPS請(qǐng)求,安全性更好。
[color=rgba(0, 0, 0, 0.75)]Q.45.請(qǐng)盡可能列舉python列表的成員方法,并給出列表操作的答案:
[color=rgba(0, 0, 0, 0.75)](1) a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?
(2)一行代碼實(shí)現(xiàn)對(duì)列表a中的偶數(shù)位置的元素進(jìn)行加3后求和?
(3)將列表a的元素順序打亂,再對(duì)a進(jìn)行排序得到列表b,然后把a(bǔ)和b按元素順序構(gòu)造一個(gè)字典d。
[color=rgba(0, 0, 0, 0.75)]Q.46.請(qǐng)問下面的代碼有什么隱患?
[color=rgba(0, 0, 0, 0.75)]def strtest1(num):
str = ‘first’
for i in range(num):
str += ’X’
return str
[color=rgba(0, 0, 0, 0.75)]由于變量str是個(gè)不可變對(duì)象,每次迭代,python都會(huì)生成新的str對(duì)象來存儲(chǔ)新的字符串,num越大,創(chuàng)建的str對(duì)象越多,內(nèi)存消耗越大。
[color=rgba(0, 0, 0, 0.75)]Q.47.單引號(hào),雙引號(hào),三引號(hào)的區(qū)別
[color=rgba(0, 0, 0, 0.75)]單引號(hào)和雙引號(hào)是等效的,如果要換行,需要符號(hào)(),三引號(hào)則可以直接換行,并且可以包含注釋
[color=rgba(0, 0, 0, 0.75)]如果要表示Let’s go 這個(gè)字符串
單引號(hào):s4= ‘Let\’s go’
雙引號(hào):s5= “Let’s go”
s6 = ‘I realy like“python”!’
這就是單引號(hào)和雙引號(hào)都可以表示字符串的原因了
[color=rgba(0, 0, 0, 0.75)]Q.48.Python里面如何拷貝一個(gè)對(duì)象?(賦值,淺拷貝,深拷貝的區(qū)別)
[color=rgba(0, 0, 0, 0.75)]賦值(=),就是創(chuàng)建了對(duì)象的一個(gè)新的引用,修改其中任意一個(gè)變量都會(huì)影響到另一個(gè)。
[color=rgba(0, 0, 0, 0.75)]淺拷貝:創(chuàng)建一個(gè)新的對(duì)象,但它包含的是對(duì)原始對(duì)象中包含項(xiàng)的引用(如果用引用的方式修改其中一個(gè)對(duì)象,另外一個(gè)也會(huì)修改改變){1,完全切片方法;2,工廠函數(shù),如list();3,copy模塊的copy()函數(shù)}
[color=rgba(0, 0, 0, 0.75)]深拷貝:創(chuàng)建一個(gè)新的對(duì)象,并且遞歸的復(fù)制它所包含的對(duì)象(修改其中一個(gè),另外一個(gè)不會(huì)改變){copy模塊的deep.deepcopy()函數(shù)}
[color=rgba(0, 0, 0, 0.75)]Q.49.介紹一下Python下range()函數(shù)的用法?
[color=rgba(0, 0, 0, 0.75)]列出一組數(shù)據(jù),經(jīng)常用在for in range()循環(huán)中
[color=rgba(0, 0, 0, 0.75)]Q.50.請(qǐng)問如何修改以下Python代碼,使得下面的代碼調(diào)用類A的show方法?
[color=rgba(0, 0, 0, 0.75)]![]()
答:這道題的考點(diǎn)是類繼承,只要通過__class__ 方法指定類對(duì)象就可以了。補(bǔ)充的代碼如下:
![]()
[color=rgba(0, 0, 0, 0.75)]Q.51.請(qǐng)問如何修改以下Python代碼,使得代碼能夠運(yùn)行?
[color=rgba(0, 0, 0, 0.75)]![]()
此題考察得是方法對(duì)象,為了能讓對(duì)象實(shí)例能被直接調(diào)用,需要實(shí)現(xiàn) call 方法,補(bǔ)充代碼如下:
![]()
[color=rgba(0, 0, 0, 0.75)]Q.52.一個(gè)包里有三個(gè)模塊,mod1.py , mod2.py , mod3.py ,但使用 from demopack import * 導(dǎo)入模塊時(shí),如何保證只有 mod1 、 mod3 被導(dǎo)入了。
[color=rgba(0, 0, 0, 0.75)]在包中增加 init.py 文件,并在文件中增加:all = [‘mod1’,’mod3’]
|
|