python web後端,筆試面試題四
本文參考自: 原文地址
1.以下不能建立一個字典的語句是?
A、dict={}
B、dict2={3:5}
C、dict3={[1,2,3]:"uestc"}----答案
D、dict4={(1,2,3):"uestc"}
2.下列程式碼的執行結果是多少?
class Person:
def __init__ (self):
pass
def getAge(self):
print __name__
p=Person()
p.getAge
A、Person
B、getAge
C、usr.lib.python.person
D、__main__-----答案
E、Anexception is thrown
3.下列程式碼執行結果
a=['hello',[1,2,3]]
b=a[:]
a[0]='world'
a[1].append(4)
print(b)
# 列表 a中有兩個元素 'hello'(字串)和【1,2,3,4】 列表
# 列表 b拷貝了 列表 a ,列表b中也有兩個元素 'hello'(字串)和【1,2,3,4】 列表
# 現在 a,b 中 的元素 的記憶體地址 是一樣的
# 列表 a,b 是兩個 物件,這兩個 物件 的資料型別是 列表,有自己的 記憶體地址
# 列表中的 兩個元素 也是 物件 有自己的 資料型別,分別是 字串 和 列表 ,也就是自己的 記憶體地址
不可變資料:Number(數字)、String(字串)、Tuple(元組);
可變資料:List(列表)、Dictionary(字典)、Set(集合)。
字串不可變,所以答案不是D
A、['hello',[1,2,3]]
B、['hello',[1,2,3,4]] -----答案
C、['world',[1,2,3]]
D、['world',[1,2,3,4]]
二,判斷、填空
4.已知x=3,那麼賦值語句x='abcedfg'是無法正常執行的?()
---可以執行
5.Python變數名區分大小寫,所以student和Student不是同一個變數。()
對
6.aList的值為[3,4,5,6,7,9,11,13,15,17],那麼切片aList[3:7]得到的值是______
[6, 7, 9, 11]
7.表示式list(map(str,[1,2,3]))的值為_____
['1', '2', '3']
三,簡述(口答)
8.什麼是lambda函式?它有什麼好處?
1. 不需要定義函式名稱(臨時函式)
2. 只做簡單運算,並返回值,沒有複雜的函式體
9.Django對資料查詢結果排序怎麼做,降序怎麼做,查詢大於某個欄位怎麼做?
10.下面這些是什麼意思:@classmethod,@staticmethod,@property?
類方法的實現方式
靜態方法的實現方式
@property裝飾器來建立只讀屬性,@property裝飾器會將方法轉換為相同名稱的只讀屬性。
11.簡單談下GIL
12.Python和多執行緒(multi-threading),這是個好主意碼?列舉一些讓Python程式碼以並行方式執行的方法,以及多程序中傳遞引數的方式.
13. MYSQL資料庫優化的思路
1.優化索引、SQL 語句、分析慢查詢;
2.設計表的時候嚴格根據資料庫的設計正規化來設計資料庫;
3.使用快取,把經常訪問到的資料而且不需要經常變化的資料放在快取中,能節約磁碟 IO
4.優化硬體;採用 SSD,使用磁碟佇列技術(RAID0,RAID1,RDID5)等
5.採用 MySQL 內部自帶的表分割槽技術,把資料分層不同的檔案,能夠提高磁碟的讀取效率; 6.垂直分表;把一些不經常讀的資料放在一張表裡,節約磁碟 I/O;
7.主從分離讀寫;採用主從複製把資料庫的讀操作和寫入操作分離開來;
8.分庫分表分機器(資料量特別大),主要的的原理就是資料路由;
9.選擇合適的表引擎,引數上的優化
10.進行架構級別的快取,靜態化和分散式;
11.不採用全文索引;
12.採用更快的儲存方式,例如 NoSQL 儲存經常訪問的資料**。
14. MYSQL鎖有幾種;死鎖是怎麼產生的;
15.Django本身提供了runserver,為什麼不能用來部署?
runserver方法是除錯 Django時經常用到的執行方式,它使用 Django自帶的
WSGI Server執行,主要在測試和開發中便用,並且 conserver開啟的方式也是單程序
uWSGI是一個Web伺服器,它實現了WSGI協議、uwsgi、http等協議。注意uwsgi是一種通訊協議,而WSGI是實現uwsgi協議和WSGI協議的Web伺服器。 WSGI具有超快的效能、低記憶體佔用和多app管理等優點,井且搭配著Nginx
就是一個生產環境了,能夠將使用者訪問請求與應用app隔離開,實現真正的部署,相比來講,支援的併發量更高,方使管理多程序,發揮多核的優勢,提升效能。
16.程序通訊的方式有幾種?
程序間通訊(IPC,InterProcess Communication)是指在不同程序之間傳播或交換資訊。
IPC的方式通常有管道(包括無名管道和命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等。其中 Socket和Streams支援不同主機上的兩個程序IPC。
17. TCP UDP區別:三次握手四次揮手
UDP 是面向無連線的通訊協議,UDP 資料包括目的埠號和源埠號資訊。
優點:UDP 速度快、操作簡單、要求系統資源較少,由於通訊不需要連線,可以實現廣播發送
缺點:UDP 傳送資料前並不與對方建立連線,對接收到的資料也不傳送確認訊號,傳送端不知道數 據是否會正確接收,也不重複傳送,不可靠。
TCP 是面向連線的通訊協議,通過三次握手建立連線,通訊完成時四次揮手
優點:TCP 在資料傳遞時,有確認、視窗、重傳、阻塞等控制機制,能保證資料正確性,較為可靠。
缺點:TCP 相對於 UDP 速度慢一點,要求系統資源較多。
四,程式碼填(可以寫程式碼)
18.補充缺失的程式碼
def print directory contents(spath)
"""
這個函式接受資料夾的名稱作為輸入引數
返回該資料夾中檔案的路徑
以及其包含資料夾中檔案的路徑。
"""
補充程式碼
import os
import sys
def print_files(path):
lsdir = os.listdir(path)
dirs = [i for i in lsdir if os.path.isdir(os.path.join(path,i))]
files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))]
if files:
for f in files:
print os.path.join(path,f)
if dirs:
for d in dirs:
print_files(os.path.join(path,d))
print_files(sys.argv[1])
19.給定一個包含n個整數的陣列nums和一個目標值target,判斷nums中是否存在四個元素a,b,c和d,使得a+b+c+d的值與target相等?找出所有滿足條件且不重複的四元組
注意:答案中不可以包含重複的四元組。
示例
給定陣列nums=[1,0,-1,0,-2,2],和 target=0
滿足要求的四元組集合為
{[-1,0,0,1],
[-2,-1,1,2],
[2,0,0,2],
[-2,0,0,2]}
from itertools import combinations
def test(array,target):
result=[]
combins = [c for c in combinations(array,4)]
for each_array in combins:
if sum(each_array)==target:
result.append(each_array)
# continue
return result
if __name__ == '__main__':
res = test([1,0,0,-1,-2,2],0)
print(res)