面試365

一、一行代碼實現1--100之和css

二、如何在一個函數內部修改全局變量html

三、列出5個python標準庫python

os:提供了很多與操做系統相關聯的函數mysql

sys:  一般用於命令行參數linux

re:  正則匹配正則表達式

math: 數學運算redis

datetime:處理日期時間算法

四、字典如何刪除鍵和合並兩個字典sql

執行結果數據庫

五、談下python的GIL

python的GIL是python的全局解釋器鎖,同一個進程中若是有多個線程運行,一個線程運行的時候會霸佔解釋器,上了個鎖即GIL,進程內其餘線程沒法運行。若是遇到耗時操做,GIL會打開,其餘線程先運行,因此多線程仍然是有前後順序的。

六、python實現列表去重的方法

執行結果

七、fun(*args,**kwargs)中的*args,**kwargs什麼意思?

用於函數的接收參數。能夠接收補丁數量的參數。

*args是用來接收一個非鍵值對的可變數量的參數列表

**kwargs容許接收不定長度的鍵值對。

八、簡述with方法打開處理文件幫我咱們作了什麼?

九、列表[1,2,3,4,5],請使用map()函數輸出[1,4,9,16,25],並使用列表推導式提取出大於10的數,最終輸出[16,25]

執行結果

十、python中生成隨機整數、隨機小數、0--1之間小數方法

隨機整數:random.randint(a,b),生成區間內的整數

隨機小數:習慣用numpy庫,利用np.random.randn(5)生成5個隨機小數

0-1隨機小數:random.random(),括號中不傳參

十一、避免轉義給字符串加哪一個字母表示原始字符串?

r , 表示須要原始字符串,不轉義特殊字符

十二、<div class="nam">中國</div>,用正則匹配出標籤裏面的內容(「中國」),其中class的類名是不肯定的

1三、python中斷言方法舉例

執行結果

1四、數據表student有id,name,score,city字段,其中name中的名字可有重複,須要消除重複行,請寫sql語句

select distinct name from student

1五、10個Linux經常使用命令 

cd mv cp rm mkdir pwd -V which cat vim grep tree ls 

1六、列出python中可變數據類型和不可變數據類型,並簡述原理

不可變:int,str,tuple   不容許變量的值發生變化,若是改變了值,至關於建立一個新的對象,相同值的對象,內存中的地址是同樣的。

可變對象:list,dict      容許變量的值發生變化,例如append操做後,改變的是原對象的值。若是是兩個相同值的對象,內存中的地址也是不同的。

1七、s = "ajldjlajfdljfddd",去重並從小到大排序輸出"adfjl"

1八、用lambda函數實現兩個數相乘

1七、字典根據鍵從小到大排序dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

sorted的key參數,表示在排序以前,能夠指定一個函數對排序對象先運算,排序依據。i[0]表示字典的鍵。i[1]表示值

items方法能夠獲取字典的鍵值對元組

執行結果

1八、利用collections庫的Counter方法統計字符串每一個單詞出現的次數"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

1九、字符串a = "not 404 found 張三 99 深圳",每一個詞中間是空格,用正則過濾掉英文和數字,最終輸出"張三  深圳"

執行結果

20、filter方法求出列表全部奇數並構造新列表,a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2一、列表推導式求列表全部奇數並構造新列表,a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2二、正則re.complie做用

將本身寫的正則編譯成對象,可重複使用,加快速度。

2三、兩個列表[1,5,7,9]和[2,2,6,8]合併爲[1,2,2,3,6,7,8,9]

2四、用python刪除文件和用linux命令刪除文件方法

python: os.remove("文件名")

linux:rm

2五、log日誌中,咱們須要用時間戳記錄error,warning等的發生時間,請用datetime模塊打印當前時間戳 「2018-04-01 11:38:54

星期幾也順便寫了

2六、數據庫優化查詢方法

外鍵,索引、聯合查詢、選擇特定字段

2七、請列出你會的任意一種統計圖(條形圖、折線圖等)繪製的開源庫,第三方也行

matplotlib

2八、寫一段自定義異常代碼

2九、正則表達式匹配中,(.*)和(.*?)匹配區別?

(.*)是貪婪匹配,儘量多的匹配

(.*?)是儘量少的匹配結果

30、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

tip:列表生成式嵌套循環

numpy庫的flatten方法,- -簡單暴力

3一、x="abc",y="def",z=["d","e","f"],分別求出x.join(y)和x.join(z)返回的結果

執行結果

至關於 吧y分開,x加入到裏面, d abc e abc f

3二、舉例說明異常模塊中try except else finally的相關意義

else  沒有捕捉到異常,執行else裏面的,

finally 無論有木有異常  都執行finally裏面的  參見withopen裏面  不管是否成功打開文件,都會執行close()

3三、舉例說明zip()函數用法

zip()在運算時,能接受一個或多個可迭代對象做爲參數,進行一一對應,返回一個元組的列表

執行結果:

3四、a="小明 Python 98分",用re.sub,替換爲小明 Java 100分

()限定大寫字母開頭到數字結尾之間的,

.*表示任意個任意字符

3五、寫5條經常使用sql語句

show databases;

show tables;

select * from tablename;

desc tablename;

delete from tablename where 字段名=xxx;

select * from tablename order by 字段名 asc(升序)或者desc(降序);

3六、a="hello"和b="你好"編碼成bytes類型

a = b"hello"

b = "哈哈".encode()

3七、[1,2,3]+[4,5,6]的結果是多少?

至關於extend()  合併列表

3八、提升python運行效率的方法

一、使用生成器,節約內存

二、優化for循環

三、核心模塊用Cpython PyPy等,提升效率

四、多進程,多線程、協程

五、判斷可能性大的放到前面

3九、簡述mysql和redis區別

redis:內存級非關係數據庫,速度快,做網頁緩存

mysql:關係型數據庫 檢索有必定io操做,訪問速度慢

40、正則匹配,匹配日期2018-03-20

匹配結果

 

4一、list=[7,6,5,4,3,2,1],從小到大排序,不準用sort,輸出[1,2,3,4,5,6,7]

冒泡排序

i責設置冒泡次數,

j爲列表下標

執行結果

4二、寫一個單列模式

執行結果

4三、列出常見的狀態碼和意義

200 正常

204 No content    請求成功,無內容返回

206 GET範圍請求已成功處理

301 重定向

400 參數錯誤

401 http認證失敗

403 權限拒絕了

404 無url對應資源

500 服務器錯誤

4四、列出常見MYSQL數據存儲引擎

InnoDB:支持事務處理,支持外鍵,支持崩潰修復能力和併發控制。若是須要對事務的完整性要求比較高(好比銀行),要求實現併發控制(好比售票),那選擇InnoDB有很大的優點。若是須要頻繁的更新、刪除操做的數據庫,也能夠選擇InnoDB,由於支持事務的提交(commit)和回滾(rollback)。 

MyISAM:插入數據快,空間和內存使用比較低。若是表主要是用於插入新記錄和讀出記錄,那麼選擇MyISAM能實現處理高效率。若是應用的完整性、併發性要求比 較低,也可使用。

4五、簡述同源策略

 同源策略須要同時知足如下三點要求: 

1)協議相同 

 2)域名相同 

3)端口相同 

 http:www.test.com與https:www.test.com 不一樣源——協議不一樣 

 http:www.test.com與http:www.admin.com 不一樣源——域名不一樣 

 http:www.test.com與http:www.test.com:8081 不一樣源——端口不一樣

 只要不知足其中任意一個要求,就不符合同源策略,就會出現「跨域」

4六、簡述cookie和session的區別

1,session 在服務器端,cookie 在客戶端(瀏覽器)

二、session 的運行依賴 session id,而 session id 是存在 cookie 中的,也就是說,若是瀏覽器禁用了 cookie ,同時 session 也會失效,存儲Session時,鍵與Cookie中的sessionid相同,值是開發人員設置的鍵值對信息,進行了base64編碼,過時時間由開發人員設置

三、cookie安全性比session差

4七、簡述多線程、多進程

進程:

一、操做系統資源分配的基本單位,進程之間相互獨立

二、穩定性好,可是資源消耗大。

線程:

一、cpu進行資源分配和調度的基本單位,線程是進程再次細分,是比進程更小的獨立運行的基本單位,一個進程下全部線程共享該進程資源,

二、IO操做密集,多線程運行效率高,可是若是其中一個崩潰,進程也會崩潰。

應用:

IO密集型用多線程,等待時候能夠切換帶其餘線程運行

CPU密集的用多進程,IO操做少,由於線程多霸佔GIL,其餘線程不能運行,不能充分發揮多核CPU優點。

4八、IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分別表明什麼異常

IOError:輸入輸出異常

AttributeError:試圖訪問一個對象沒有的屬性

ImportError:沒法引入模塊或包,基本是路徑問題

IndentationError:語法錯誤,代碼沒有正確的對齊

IndexError:下標索引超出序列邊界

KeyError:試圖訪問你字典裏不存在的鍵

SyntaxError:Python代碼邏輯語法出錯,不能執行

NameError:使用一個還未賦予對象的變量

4九、python中copy和deepcopy區別

複製不可變對象(數值,str,tuple)時候沒區別

複製可變對象(list,dict)時候,copy複製的是指針,deepcopy複製的是對象。

50、列出幾種魔法方法並簡要介紹用途

__init__:對象初始化方法

__new__:建立對象時候執行的方法,單列模式會用到

__str__:當使用print輸出對象的時候,只要本身定義了__str__(self)方法,那麼就會打印從在這個方法中return的數據

__del__:刪除對象執行的方法

5一、C:\Users\ry-wu.junya\Desktop>python 1.py 22 33命令行啓動程序並傳參,print(sys.argv)會輸出什麼數據?

5二、請將[i for i in range(3)]改爲生成器

執行結果

5三、舉例sort和sorted對列表排序,list=[0,-1,3,-10,5,9]

sort是在list基礎上進行修改,無返回值

sorted返回的是是新的list

5四、對list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函數從小到大排序

執行結果

5五、使用lambda函數對list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],輸出結果爲

[0,2,4,8,8,9,-2,-4,-4,-5,-20],正數從小到大,負數從大到小

執行結果

5六、列表嵌套字典的排序,分別根據年齡和姓名排序

執行結果

5七、列表嵌套元組,分別按字母和數字排序

與上相似

5八、列表嵌套列表排序,年齡數字相同怎麼辦?

 

5九、根據鍵對字典排序(方法一,zip函數)

執行結果

60、根據鍵對字典排序(方法二,不用zip)

6一、列表推導式、字典推導式、生成器

6二、最後出一道檢驗題目,根據字符串長度排序,看排序是否靈活運用

6三、舉例說明SQL注入和解決辦法

6四、正則匹配以163.com結尾的郵箱

6五、s="info:xiaoZhang 33 shandong",用正則切分字符串輸出['info', 'xiaoZhang', '33', 'shandong']

6六、遞歸求和1-10

6七、python字典和json字符串相互轉化方法

json包裏的dumps用來轉成字符串

loads用來轉成字典

6八、MyISAM 與 InnoDB 區別:

一、InnoDB 支持事務,MyISAM 不支持,這一點是很是之重要。事務是一種高

級的處理方式,如在一些列增刪改中只要哪一個出錯還能夠回滾還原,而 MyISAM

就不能夠了;

二、MyISAM 適合查詢以及插入爲主的應用,InnoDB 適合頻繁修改以及涉及到

安全性較高的應用;

三、InnoDB 支持外鍵,MyISAM 不支持;

四、對於自增加的字段,InnoDB 中必須包含只有該字段的索引,可是在 MyISAM

表中能夠和其餘字段一塊兒創建聯合索引;

五、清空整個表時,InnoDB 是一行一行的刪除,效率很是慢。MyISAM 則會重

建表;

6九、正則匹配不是以4和7結尾的手機號

70、簡述python引用計數機制

python垃圾回收主要以引用計數爲主,標記-清除和分代清除爲輔的機制,其中標記-清除和分代回收主要是爲了處理循環引用的難題。

引用計數算法

只有當引用計數爲0的時候,對象纔會被真的刪除

7一、正則表達式匹配第一個URL

7二、正則匹配中文

7三、簡述樂觀鎖和悲觀鎖

悲觀鎖, 就是很悲觀,每次去拿數據的時候都認爲別人會修改,因此每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了不少這種鎖機制,好比行鎖,表鎖等,讀鎖,寫鎖等,都是在作操做以前先上鎖。

樂觀鎖,就是很樂觀,每次去拿數據的時候都認爲別人不會修改,因此不會上鎖,可是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可使用版本號等機制,樂觀鎖適用於多讀的應用類型,這樣能夠提升吞吐量

7四、Linux命令重定向 > 和 >>

Linux 容許將命令執行結果 重定向到一個 文件

將本應顯示在終端上的內容 輸出/追加 到指定文件中

> 表示輸出,會覆蓋文件原有的內容

>> 表示追加,會將內容追加到已有文件的末尾

用法示例:

  
  
  
  
  
  1. echo 輸出的信息保存到 1 .txtecho Hello Python > 1 .txt
  2. tree 輸出的信息追加到 1 .txt 文件的末尾 tree >> 1 .txt

7五、正則表達式匹配出<html><h1>www.itcast.cn</h1></html>

7六、python傳參數是傳值仍是傳址?

傳的是指針,是引用傳遞

對於不可變類型(數值,str,tuple),不會改變原來變量

對於可變數據類型(list dict),會修改對應變量。

7七、生成0-100的隨機數

7八、lambda匿名函數好處

精簡代碼,lambda省去了定義函數,map省去了寫for循環過程

7九、python正則中search和match

相關文章
相關標籤/搜索