1. 程式人生 > >python筆試題(三)

python筆試題(三)

set 客戶端 clas mys 第一次 color 傳輸 我們 查找

1.MySQL有哪些存儲引擎,優化MySQL數據庫的方法有哪些?
    MySQL支持的存儲引擎有MyISAM,InnoDB,Memory,CSV,Archive
    創建索引,使用復合索引,使用短索引,不在列上進行運算,不使用NOT IN操作,不在包含有NULL值得列上加索引
2.WEB開發中session與cookie的作用與區別?
    cookie通過在客戶端記錄用戶身份的信息,session通過在服務端記錄用戶身份信息
  cookie機制:理論上一個用戶的所有請求都應該屬於一個會話,由於web程序應用是基於http協議傳輸信息的,
                但是,http協議是無狀態協議,一旦數據交換完畢,兩者的連接立刻斷開,再次交換數據需要重新建立連接,這就意味著服務器無法連接上跟蹤會話。要跟蹤該會話,就引入了一種機制Cookie
              服務器就給客戶端頒發一個通信證,每次來訪問同一個網站時瀏覽器必需攜帶cookie,以便確認用戶身份。
  session機制:是服務器端記錄用戶狀態的一種機制,使用上比較簡單,但是增加了服務器內存的壓力。
      客戶端瀏覽器第一次訪問服務器的時候,服務器把客戶端的信息以某種形式保存下來,session對象也是在這個時候創建,
        所有該客戶端的狀態信息,都被保存在這裏。session相當於在程序在服務器上建立的客戶端檔案,客戶來訪時只要查詢這些檔案就可以了。
3.WEB開發中有哪些技術手段防止SQL註入? 使用預編譯綁定變量的SQL語句; 加密處理用戶的關鍵信息; 不隨意開啟生產環境中的Webserver的錯誤; 使用正則表達式過濾傳入的參數; 字符串過濾; 檢查是否包含非法字符; 4.編寫快速排序或者冒泡排序 def bubble_sort(lis): for j in range(len(lis),-1,-1): for i in range(0,len(lis)-1): if lis[i] > lis[i+1]: lis[i],lis[i
+1]=lis[i+1],lis[i] print(lis) lis=[20,49,50,0,8,65,56,89,77,46] bubble_sort(a) 5.請實現一個裝飾器,限制該函數被調用的頻率 import time #5秒一次 def wraper(func): def inner(*args,**kwargs): time.sleep(5) return func(*args,**kwargs) return inner @wraper
def rando(): print(被裝飾的函數) rando() rando() 6.請說一說lambda函數的作用,請用lambda和reduce實現1到100的累加 Lambda函數又稱匿名函數,也就是沒有名字的函數,有些函數如果只是臨時一用,而且業務邏輯也比較簡單,這時就可以用用Lambda函數 from _functools import reduce print(reduce(lambda x,y:x+y,range(1,101))) 7.請描述一下tuple,list,dict,set的特點 tuple:不可對元素進行修改,但元素本身可以變化,比如元素為列表,值可以重復,元素有序 list:元素可以修改,值可重復,相比dict具有占用內存小的特點,常用於堆棧的處理 dict:鍵不可變,值可變,鍵不可以重復,值可以重復,元素無需,符合用內存換速度思想,常用於查找 set:元素不可重復,無序 8.就你熟悉的web框架,講一講如何維持用戶的登錄狀態的 把用戶信息存放一session中,再給客戶端返回一個cookie; 通過form表單; 通過querystring 9.python函數中經常有*args,**kwargs,這兩個參數,它們是什麽意思,為什麽要使用它們 如果我們不確定要往函數中傳入多少個參數,或者我們想往函數中以列表和元組的形式傳參數時,那就使要用*args; 如果我們不知道要往函數中傳入多少個關鍵詞參數,或者想傳入字典的值作為關鍵詞參數時,那就要使用**kwargs。 10.python中變量作用域(變量查找順序) 局部變量--->閉包作用域 ----> Global 全局---->(內置)變量

python筆試題(三)