程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python must understand interview questions

編輯:Python

一:什麼是面向對象

Object-oriented is to put data and data manipulation methods together,as an interdependent whole object.面向對象的核心是對象.

二:面向對象五大原則

單一職責:一個類,最好只做一件事 開放封閉:Entities should be extensible,而不可修改的 裡氏代換:All uses of the base class must be able to transparently use objects of its subclasses 依賴倒置:依賴於抽象.具體而言就是高層模塊不依賴於底層模塊,二者都同依賴於抽象;抽象不依賴於具體,具體依賴於抽象. 接口隔離:使用多個小的專門的接口,而不要使用一個大的總接口

三:TCP === UDP === 需要建立連接 不需要建立連接 可靠的 不可靠的 工作效率低 工作效率更高 只支持一對一 支持一對一,一對多,多對一,多對多 占用資源多 占用資源少

?

四:The difference between thread process coroutines===

2,進程: 進程是程序一次動態執行的過程,是程序運行的基本單位.

2、線程 線程又叫做輕量級進程,是CPU調度的最小單位.

3、協程

協程是一種用戶態的輕量級線程,協程的調度完全由用戶控制.

五:Deadlock caused by this 如何解決========== 兩個或兩個以上的進程在執行過程中,Due to competition for resources of the phenomenon of a kind of wait for each other without external force,它們都將無法推進下去.

解決=== Avoid accessing objects in the same order. 避免事務中的用戶交互. 保持事務簡短並在一個批處理中. 使用低隔離級別. 使用綁定連接.

 =========================================================================

六:什麼是裝飾器,Principle application scenarios and which are used in the project=-

PythonDecorators use the idea of ​​closures,The purpose is to not change the original function code,給函數增加新的功能.

應用場景:

1.可以在外層函數加上時間計算函數,計算函數運行時間;

2.計算函數運行次數;

3.可以用在框架的路由傳參上;

4.插入日志,作為函數的運行日志;

6.緩存,實現緩存處理;

七:pythonhow to do memory management

內存管理: 1.引用計數:賦值 計數器+1,刪除-1 2.垃圾回收:對象的引用為0,When the reference count could not solve 3.內存池機制:Put unused memory in the memory pool,Not back to the operating system

八:python的高階函數有哪些,分別有什麼作用

map() Python 內置的高階函數,它接收一個函數 f 和一個 list,

reduce()接收的參數和 map()類似,一個函數 f,一個list,但行為和 map()不同,reduce()傳入的函數f必須接收兩個參數,

filter() 對每個元素進行判斷, True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,

sorted()可以對所有可迭代的對象進行排序操作

九:什麼是遞歸,Which businesses use recursion.=======

  1. 遞歸,就是在運行的過程中調用自己. 構成遞歸需具備的條件:

    1. 子問題須與原始問題為同樣的事,且更為簡單;

    2. 不能無限制地調用本身,須有個出口,化簡為非遞歸狀況處理.

十:global和nonlocal的作用?

global關鍵字修飾變量後標識該變量是全局變量,對該變量進行修改就是修改全局變量 nonlocal關鍵字修飾變量後標識該變量是上一級函數中的局部變量,Usually used in nested functions.Modifying this variable will also modify the local variables of the upper-level function it references..

margin 外邊距 padding 內邊距 border 邊框 between 在二者之間 background 背景 width 寬 height 高 left 左 right 右 top 上 bottom 下 avatar 頭像


=========================================================================


十一:pythonWhat are the magic methods in,分別代表什麼意思

_ new_:類的構造器,Create an initialized base instance object

_ init_:class data initialization method ,Used to add properties to instance objects

? _del_:class destructor,Specifically used to call before the instance object is destroyed,釋放資源的

? call:An instance object can be declared directly as a method call,Easy to call process,protect internal implementation

十二:Difference between static method and class method

靜態方法: 使用裝飾器 @staticmethod,不需要參數,類對象和實例對象都可以調用

類方法: 使用裝飾器@classmethod,Both class objects and instance objects can be called

十三:什麼是元類

The class used to create the class is called the metaclass functiontype其實就是一個元類,type就是PythonThe metaclass used to create all classes in.

十四:什麼是反射

Reflection refers to obtaining type definition information at runtime,also called introspection****

在Python中,能夠通過一個對象,找出其type、class的能力***

十五:什麼是IO多路復用

  • IO 多路復用是一種同步IO模型,實現一個線程可以監視多個文件句柄;

  • 一旦某個文件句柄就緒,就能夠通知應用程序進行相應的讀寫操作;

  • 沒有文件句柄就緒就會阻塞應用程序,交出CPU.

十六:select、poll、epoll特點是什麼

select 可移植性好,對於超時值提供了更好的精度:微秒.

poll Does not require developers to calculate the size of large file descriptions,沒有連接數的限制,can be stored on a linked list.

epoll 支持一個進程打開大數目的socket描述符(FD) IO效率不隨FD數目增加而線性下降,加速內核與用戶空間的消息傳遞.

十七:什麼是生產者消費者模型

十八:mysql常用 的數據庫引擎

InnoDB存儲引擎,mylsam存儲引擎,memory存儲引擎 ,

十九:myISAM和Innodb的區別是什麼

InnoDB 支持事務、外鍵、行鎖 MyISAM 支持表鎖,訪問快

二十:hash索引和btree的區別

Hash索引只能用於對等比較,例如=,<=>(相當於=)操作符.由於是一次定位數據,不像BTree索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次IO訪問,所以檢索效率遠高於BTree索引

BTree索引是最常用的mysql數據庫索引算法,因為它不僅可以被用在=,>,>=,<,<=和between這些比較操作符上,而且還可以用於like操作符

二一:索引的作用, there are those kinds of indexes.

幫助mysql進行高效查詢的一種數據結構(有序

普通索引:僅加速查詢 唯一索引:加速查詢+列值唯一(可以有null) 主鍵索引:加速查詢+列值唯一(不可以有null)+表中只有一個 組合索引:多列值組成一個索引,專門用於組合搜索,其效率大於索引合並. 全文索引:對文本的內容進行分詞,進行搜索.

22:What is the reason for the index failure,什麼情況下用不到索引.

in the conditionor,2,like查詢以%開頭,索引無效;4、When the field type is string,The data in the condition is not quoted in quotation marks.

數據唯一性差的字段不要使用索引,頻繁更新的字段不要使用索引

23:什麼情況下不建議使用索引,

1,When the amount of data in the table is very small,There is little variance in the data,頻繁更新的字段,當修改性能遠遠大於檢索性能時,不應該創建索引.

24:MysqlWhat does the transaction in,The characteristics of the transaction are those.

  1. 在mysql中只有使用了innodb,才能使用事務.

  2. 事務的特性: 原子性,一致性,隔離性, 持久性

25:Transaction isolation levels are those?

(讀未提交): 最低的隔離級別,允許讀取尚未提交的數據變更,可能會導致髒讀、幻讀或不可重復讀.

(讀已提交): 允許讀取並發事務已經提交的數據,可以阻止髒讀,但是幻讀or non-repeatable reads may still occur.

(重復讀): 對同一字段的多次讀取結果都是一致的,除非數據是被本身事務自己所修改,可以阻止髒讀和不可重復讀,但幻讀仍有可能發生.

(串行化): 最高的隔離級別,完全服從ACID的隔離級別.所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止髒讀、不可重復讀以及幻讀

:26:Mysqlwant those trivial.

表瑣---Lock the data of the entire table.

trivial----Lock the row where the data is located.

27:什麼是sql注入

[SQL注入],就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令.

28:http 和 https的區別

端口:http 端口號是80,https 端口號是443

傳輸協議:http 是超文本傳輸協議,屬於明文傳輸;https 是安全的超文本傳輸協議,是經過 SSL 加密後的傳輸協議

29:Common request methods are those.

get:請求指定頁面信息,並返回實體主體. head:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭. post:向指定資源提交數據進行處理請求,數據包含在請求體中. put:從客戶端向服務器傳送的數據取代指定的文檔的內容.

30:Common response codes are those.

200,401,403,404,500

pv和uv分別是什麼

PV 訪問量, 即頁面浏覽量或點擊量,衡量網站用戶訪問的網頁數量;Record every time the user opens or refreshes a page during the statistical period1次,The cumulative number of pageviews increases when the page is opened multiple times.

UV 獨立訪客,統計1天內訪問某站點的用戶數;Access a computer client as a guest.It is understood as the number of computers accessing a website.Multiple visits to the same client within a day are counted as1個訪客.

什麼是跨域,如果解決

浏覽器從一個域名的網頁去請求另一個域名的資源時,域名、端口、協議任一不同,都是跨域

利用的是 script 標簽 src 屬性請求 js 無跨域問題,但具有局限性,只能發送 get 請求

什麼是跨站攻擊

是指攻擊者利用網站程序對用戶輸入過濾不足,Enter the information displayed on the page that affects other users HTML代碼 ,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種*攻擊*方式

.How to ensure the security of the interface

\2. 基於網關實現黑明單與白名單攔截

\4. 對一些特殊字符實現過濾 防止xss、sql注入的攻擊

\5. 使用token+圖形驗證碼方法實現防止模擬請求

cookie和session的區別

cookie的數據信息存放在客戶端浏覽器上.

session的數據信息存放在服務器上.

redis的數據類型及應用場景

字符串(String),Hash(字典),列表(List),集合(Set),有序集合(Sorted Set).

一般常用在需要計數的場景,比如用戶的訪問次數、熱點文章的點贊轉發數量等等

什麼是雪崩

大量的key設置了相同的過期時間,導致緩存在同一時刻全部失效

什麼是擊穿

一個存在的key,在緩存過期的一刻,有大量請求

什麼是穿透

訪問一個不存在的key,緩存不起作用

redis持久化的方式

RDB 持久化機制,是對 redis 中的數據執行周期性的持久化.

AOF:機制對每條寫入命令作為日志,以 append-only 的模式寫入一個日志文件中,在 redis 重啟的時候,可以通過回放 AOF 日志中的寫入指令來重新構建整個數據集.

什麼是裝飾器,Principle application scenarios and which are used in the project

1.裝飾器的實現是由閉包支撐的
2.裝飾器本質上是⼀個python函數,It can be used without other functions Add extra functionality without making any code changes;
3.The return value of the decorator is also⼀個函數的對象
​
應用場景:
1.可以在外層函數加上時間計算函數,計算函數運行時間;
2.計算函數運行次數;
3.可以用在框架的路由傳參上;
4.插入日志,作為函數的運行日志;
5.事務處理,可以讓函數實現事務的一致性,讓函數要麼一起運行成功,要麼一起運行失敗;
6.緩存,實現緩存處理;
7.權限的校驗,在函數外層套上權限校驗的代碼,實現權限校驗;

pythonWhat are the commonly used third-party modules

redis  負責連接redis數據庫
pymysql  
pyjwt  生成和校驗jwt token
django  web開發框架
flask  web開發框架
requests   發送HTTP請求的模塊

Python內置模塊有哪些

os   操作系統庫
time  時間庫
re    正則模塊
random   隨機模塊
json   json的序列化和反序列化
hashlib   Module responsible for encryption

What are the five principles of object orientation

單一職責:一個類,最好只做一件事
開放封閉:Entities should be extensible,而不可修改的
裡氏代換:All uses of the base class must be able to transparently use objects of its subclasses
依賴倒置:依賴於抽象.具體而言就是高層模塊不依賴於底層模塊,二者都同依賴於抽象;抽象不依賴於具體,具體依賴於抽象.
接口隔離:使用多個小的專門的接口,而不要使用一個大的總接口

tcp和udp的區別

TCPUDP需要建立連接不需要建立連接可靠的不可靠的工作效率低工作效率更高只支持一對一支持一對一,一對多,多對一,多對多占用資源多占用資源少

列舉python中的魔法方法

__str__: 管理printWhat to display when outputting an object
__init__: 構造函數,Called when the object is instantiated
__del__: 析構函數,對象銷毀時調用
__call__: Called when the instantiated object is called as a method
__iter__: 返回迭代器本身

什麼是反射

Need to execute a method in the object,or need to call a variable in the object,But for various reasons we cannot be sure whether the method or variable,This is where we need to use a special method or mechanism to access and manipulate this unknown method or variable,This mechanism is called reflection

說一下python中的迭代器和生成器

An iterator object is an iterable object.An iterator is a tool responsible for iterating over an iterable object.提供了兩個函數,__iter__和next()
__iter__is the return iterator itself.
next()is to return the next element of the iterable
​
生成器
在Python中,Using generators can easily support the iterator protocol.生成器通過生成器函數產生,生成器函數可以通過常規的def語句來定義,但是不用return返回,而是用yield一次返回一個結果,在每個結果之間掛起和繼續它們的狀態,to automatically implement the iterative protocol.
也就是說,yield是一個語法糖,內部實現支持了迭代器協議,同時yield內部是一個狀態機,維護著掛起和繼續的狀態.

什麼是元組,What is the difference between a list and a list

元組列表不可變的可變的異構數據Homogeneous dataTuples rely on()和,來聲明依靠[]來聲明聯系:It is possible to convert between tuples and lists

range和xrange的區別是什麼?

range:The return value obtained is a list type
xrange:The return value obtained is an iterator object
   
python3中的range,就是python2中的xrange

什麼是深淺拷貝,區別,原理及代碼實現

深拷貝:copy the contents of memory,Relocate the memory address.Raw data changed,The replicated data does not change.copy.deepcopy()
淺拷貝:復制內存地址,Raw data changed,The replicated data will also change accordingly.copy.copy()

pythonhow to do memory management

1. 引用計數:賦值+1,刪除-1
2. 垃圾回收:當引用計數的值為0的時候,會釋放資源.達到了垃圾回收的阈值,觸發標記-清除
3. 內存池管理:Reclaimed memory is not returned to the operating system,Instead, stay in its own memory pool.

什麼是遞歸,Which businesses use recursion

遞歸,就是在運行的過程中調用自己.
構成遞歸需具備的條件:
1. 子問題須與原始問題為同樣的事,且更為簡單;
2. 不能無限制地調用本身,須有個出口,化簡為非遞歸狀況處理.

redis的數據類型及應用場景

string  字符串
list  列表
hash  哈希
set  集合
zset 有序集合

redis的優缺點

優點:
性能快、基於內存實現、是目前最快的key-value數據庫
可以持久化
數據類型豐富,可以滿足多種需求
支持事務
哨兵機制,可以實現分布式集群
​
缺點:
Power may cause data loss
作為緩存的時候,容易出現緩存雪崩、擊穿、穿透

redis的內存淘汰策略有哪些

no-enviction Store full data,Newly added data reports an error directly
allkeys-random 在所有key中隨機刪除一個key
allkeys-lru 在所有key中,刪除最近最少使用的key
volatile-random in all expiredkey中,隨機刪除一個
volatile-lru in all expiredkey中,刪除最近最少使用的key
volatile-ttl in all expiredkey中,Delete the most recent expiredkey

redis如何做內存優化

盡可能使用hash類型,盡可能的將你的數據模型抽象到一個散列表裡面,因為hash類型占用內存較少

mysql常用 的數據庫引擎

Innodb
myISAM
memory

myISAM和Innodb的區別是什麼

mysql默認存儲引擎:5.5之前:myISAM 5.5之後:Innodb

InnodbmyISAM支持事務不支持支持外鍵不支持行鎖表鎖low query speed查詢速度高,Fast batch insertion不支持支持全文索引內存使用高low memory usage

hash索引和btree的區別

hash索引進行等值查詢更快(一般情況下),但是卻無法進行范圍查詢.
hash索引不支持使用索引進行排序
hash索引不支持模糊查詢以及多列索引的最左前綴匹配
hash索引任何時候都避免不了回表查詢數據
hash索引不穩定,性能不可預測

索引失效的原因有哪些,Or under what circumstances the index is not used

1、條件中有or,即使其中有條件帶索引也不會使用;
2、對於多列索引,first part not used,則不會使用索引;
3、like查詢以%開頭,索引無效;
4、When the field type is string,The data in the condition is not quoted in quotation marks.

Under what circumstances is it not recommended to use an index

用不到的字段,no index
數據量較少的表,no index
The data in the table change more frequently,no index

說一下mysql中的事務

四大特性:原子性、持久性、隔離性、一致性
隔離級別:串行化、可重復讀、讀已提交、讀未提交

事務的隔離級別有哪些

說一下mysql中的鎖

按鎖的粒度劃分:
   表級鎖,行級鎖,頁級鎖
按鎖的級別劃分:
共享鎖、排他鎖
按加鎖方式分
自動鎖、顯式鎖
按操作劃分:
DML鎖、DDL鎖
按使用方式劃分:
悲觀鎖、樂觀鎖

How deadlocks are caused,怎麼避免

是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去.
​
避免:
按同一順序訪問對象.
避免事務中的用戶交互.
保持事務簡短並在一個批處理中.
使用低隔離級別.
使用綁定連接.

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved