Python面試題

1. 生成器

在Python中,元素可以在循環的過程中按照某種算法推算出來,而不必創建完整的list,從而節省大量的空間。稱為生成器:generator。

2.迭代器

迭代是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。

迭代器只能往前不會后退。

3.什么是閉包

在函數內部再定義一個函數,并且這個函數用到了外邊函數的變量,那么將這個函數以及用到的一些變量稱之為閉包

4. 裝飾器(decorator)功能

裝飾器是程序開發中經常會用到的一個功能,用好了裝飾器,開發效率顯著提升

引入日志

函數執行時間統計

執行函數前預備處理

執行函數后清理功能

權限校驗等場景

緩存

5.淺拷貝

淺拷貝是對于?個對象的頂層拷貝

通俗的理解是: 拷貝了引用, 并沒有拷貝內容

6.深拷貝

深拷貝是對于?個對象所有層次的拷貝(遞歸)

7.進程與線程

(1)定義的不同

進程是系統進行資源分配和調度的?個獨立單位.

線程是進程的?個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.

自己基本上不擁有系統資源,只擁有?點在運行中必不可少的資源(如程序計數器,?組寄存器和棧),

但是它可與同屬?個進程的其他的線程共享進程所擁有的全部資源.

(2)區別

一個程序至少有一個進程,一個進程至少有一個線程.

線程的劃分尺度小于進程(資源比進程少), 使得多線程程序的并發性高。

進程在執行過程中擁有獨立的內存單元, 而多個線程共享內存, 從而極大地提高了程序的運行效率

線程不能夠獨立執行, 必須依存在進程中

(3)線程和進程在使用上各有優缺點: 線程執行開銷小, 但不利于資源的管理和保護; 而進程正相反。

8.爬蟲的底層原理


9.數據庫訪問優化法則

1、 減少數據訪問(減少磁盤訪問)

2、 返回更少數據(減少網絡傳輸或磁盤訪問)

3、 減少交互次數(減少網絡傳輸)

4、 減少服務器CPU開銷(減少CPU及內存開銷)

5、 利用更多資源(增加資源)

10.事務

?可以保證復雜的增刪改操作有效

? 當一個業務邏輯需要多個sql完成時,如果其中某條sql語句出錯,則希望整個操作都退回

? 使用事務可以完成退回的功能,保證業務邏輯的正確性

? 事務四大特性(簡稱ACID)

o 原子性(Atomicity):事務中的全部操作在數據庫中是不可分割的,要么全部完成,要么均不執行

o 一致性(Consistency):幾個并行執行的事務,其執行結果必須與按某一順序串行執行的結果相一致

o 隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的

o 持久性(Durability):對于任意已提交事務,系統必須保證該事務對數據庫的改變不被丟失,即使數據庫出現故障

? 要求:表的類型必須是innodb或bdb類型,才可以對此表使用事務

事務是邏輯上的一組操作,組成這組操作的各個單元,要不全都成功要不全都失敗,這個特性就是事務

注意:mysql數據支持事務,但是要求必須是innoDB存儲引擎

解決這個問題:

mysql的事務解決這個問題,因為mysql的事務特性,要求這組操作,要不全都成功,要不全都失敗,這樣就避免了某個操作成功某個操作失敗。利于數據的安全

如何使用?

1)在執行sql語句之前,我們要開啟事務 start transaction;

(2)正常執行我們的sql語句

(3)當sql語句執行完畢,存在兩種情況:

1,全都成功,我們要將sql語句對數據庫造成的影響提交到數據庫中,committ

2,某些sql語句失敗,我們執行rollback(回滾),將對數據庫操作趕緊撤銷

(注意:mysql數據支持事務,但是要求必須是innoDB存儲引擎)

11.使用mongodb的優點

面向文件

高性能

高可用

易擴展

可分片

對數據存儲友好

12.MySql的核心就是存儲引擎常用的數據庫引擎有哪些

(1)?InnoDB 存儲引擎,InnoDB是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵,它默認的是MqSQL引擎

InnoDB特性:

1、InnoDB給MySQL提供了具有提交、回滾和崩潰恢復能力的事物安全(ACID兼容)存儲引擎。InnoDB鎖定在行級并且也在SELECT語句中提供一個類似Oracle的非鎖定讀。這些功能增加了多用戶部署和性能。在SQL查詢中,可以自由地將InnoDB類型的表和其他MySQL的表類型混合起來,甚至在同一個查詢中也可以混合

2、InnoDB是為處理巨大數據量的最大性能設計。它的CPU效率可能是任何其他基于磁盤的關系型數據庫引擎鎖不能匹敵的

3、InnoDB存儲引擎完全與MySQL服務器整合,InnoDB存儲引擎為在主內存中緩存數據和索引而維持它自己的緩沖池。InnoDB將它的表和索引在一個邏輯表空間中,表空間可以包含數個文件(或原始磁盤文件)。這與MyISAM表不同,比如在MyISAM表中每個表被存放在分離的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制為2GB的操作系統上

4、InnoDB支持外鍵完整性約束,存儲表中的數據時,每張表的存儲都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB會為每一行生成一個6字節的ROWID,并以此作為主鍵

5、InnoDB被用在眾多需要高性能的大型數據庫站點上

InnoDB不創建目錄,使用InnoDB時,MySQL將在MySQL數據目錄下創建一個名為ibdata1的10MB大小的自動擴展數據文件,以及兩個名為ib_logfile0和ib_logfile1的5MB大小的日志文件

(2)?MyISAM存儲引擎

MyISAM基于ISAM存儲引擎,并對其進行擴展。它是在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事物。MyISAM主要特性有

1、大文件(達到63位文件長度)在支持大文件的文件系統和操作系統上被支持

2、當把刪除和更新及插入操作混合使用的時候,動態尺寸的行產生更少碎片。這要通過合并相鄰被刪除的塊,以及若下一個塊被刪除,就擴展到下一塊自動完成

3、每個MyISAM表最大索引數是64,這可以通過重新編譯來改變。每個索引最大的列數是16

4、最大的鍵長度是1000字節,這也可以通過編譯來改變,對于鍵長度超過250字節的情況,一個超過1024字節的鍵將被用上

5、BLOB和TEXT列可以被索引

6、NULL被允許在索引的列中,這個值占每個鍵的0~1個字節

7、所有數字鍵值以高字節優先被存儲以允許一個更高的索引壓縮

8、每個MyISAM類型的表都有一個AUTO_INCREMENT的內部列,當INSERT和UPDATE操作的時候該列被更新,同時AUTO_INCREMENT列將被刷新。所以說,MyISAM類型表的AUTO_INCREMENT列更新比InnoDB類型的AUTO_INCREMENT更快

9、可以把數據文件和索引文件放在不同目錄

10、每個字符列可以有不同的字符集

11、有VARCHAR的表可以固定或動態記錄長度

12、VARCHAR和CHAR列可以多達64KB

使用MyISAM引擎創建數據庫,將產生3個文件。文件的名字以表名字開始,擴展名之處文件類型:frm文件存儲表定義、數據文件的擴展名為.MYD(MYData)、索引文件的擴展名時.MYI(MYIndex)

(3)?MEMORY存儲引擎

MEMORY存儲引擎將表中的數據存儲到內存中,未查詢和引用其他表數據提供快速訪問。MEMORY主要特性有

1、MEMORY表的每個表可以有多達32個索引,每個索引16列,以及500字節的最大鍵長度

2、MEMORY存儲引擎執行HASH和BTREE縮影

3、可以在一個MEMORY表中有非唯一鍵值

4、MEMORY表使用一個固定的記錄長度格式

5、MEMORY不支持BLOB或TEXT列

6、MEMORY支持AUTO_INCREMENT列和對可包含NULL值的列的索引

7、MEMORY表在所由客戶端之間共享(就像其他任何非TEMPORARY表)

8、MEMORY表內存被存儲在內存中,內存是MEMORY表和服務器在查詢處理時的空閑中,創建的內部表共享

9、當不再需要MEMORY表的內容時,要釋放被MEMORY表使用的內存,應該執行DELETE FROM或TRUNCATE TABLE,或者刪除整個表(使用DROP TABLE)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數據結構(3).初始化時...
    歐辰_OSR閱讀 29,582評論 8 265
  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,136評論 1 32
  • 1.python中大文件是如何讀取的? (1)讀取幾個G的文件時,可以利用生成器generator。 (2)rea...
    Super_Jason_one閱讀 2,010評論 2 36
  • 4.3今日話題 【推薦一個你喜歡的綜藝節目吧!】 一向很少看綜藝節目。最近在看一部電視劇《以人民的名義》。這部電視...
    錢谷閱讀 130評論 0 0
  • 沒有明天 只有 又一天 又一天過去了,又一天 重復著的又一天 重復的生活 重復的我 站在我面前的是我 站在我面前的...
    江行攸閱讀 145評論 0 1