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 全局---->(內置)變量