Python web面試題2017

Python web面試題


Python后端面試題

1.語言

Python面試,基礎(chǔ)相關(guān)問題少不了.

  • 提示:
    我希望聽到twisted->tornado->gevent

  • 答案:
    gevent
    代碼看起來好看一些,但是維護(hù)比較差,patch沒有規(guī)律,而且里面封裝了C,對python3的支持最差.
    twisted
    穩(wěn)定性是最好的,但是需要較長時(shí)間的學(xué)習(xí).對python3的支持較差.
    tornado
    兼容性最好.但是過于簡單了,功能不強(qiáng),另外沒有python數(shù)據(jù)庫適配器能和tornado無縫對接,因此調(diào)用數(shù)據(jù)庫很麻煩,而且只支持web.

  • 提示:
    這幾個(gè)概念很容易混淆,建議通過邊畫圖,邊介紹的方式來表達(dá).

  • 答案:
    迭代器
    (Iterator)迭代器是帶狀態(tài)的對象,它會記錄當(dāng)前迭代所在的位置,以方便下次迭代的時(shí)候獲取正確的元素.
    生成器
    (generator)生成器和裝飾器是python中最吸引人的兩個(gè)黑科技,生成器雖沒有裝飾器那么常用,但在某些針對的情境下十分有效.
    裝飾器
    (Decorator)裝飾器是python中最吸引人的特性,裝飾器本質(zhì)上還是一個(gè)函數(shù),它可以讓已有的函數(shù)不做任何改動的情況下增加功能.

  • 提示:
    混淆視聽,其實(shí)Python隊(duì)列都是線程安全的,該問題主要考察你對隊(duì)列的了解和線程安全的概念.

  • 答案:
    線程
    線程安全和非線程安全這些概念在其他的編程語言也同樣使用.
    所謂線程安全:就是對于多線程同時(shí)操作是是安全的而不會發(fā)生寫沖突,比如python的Queue
    相反非線程安全:就是多線成同時(shí)操作時(shí)會發(fā)生寫沖突,比如python的其他list,set,dict
    隊(duì)列
    Python的Queue模塊中提供了同步的.線程安全的隊(duì)列類,包括FIFO(先入先出)隊(duì)列Queue,LIFO(后入先出)隊(duì)列LifoQueue,和優(yōu)先級隊(duì)列PriorityQueue.這些隊(duì)列都實(shí)現(xiàn)了鎖原語,能夠在多線程中直接使用.可以使用隊(duì)列來實(shí)現(xiàn)線程間的同步.
    三種隊(duì)列
    Python queue模塊有三種隊(duì)列:
    1.FIFO隊(duì)列先進(jìn)先出.(線程安全)
    2.LifoQueue類似于堆,即先進(jìn)后出(線程安全)
    3.PriorityQueue優(yōu)先級隊(duì)列,級別越低,越先出來(線程安全)
    隊(duì)列構(gòu)造函數(shù)
    針對這三種隊(duì)列分別有三個(gè)構(gòu)造函數(shù):
    1.class Queue.Queue(maxsize) FIFO
    2.class Queue.LifoQueue(maxsize) LIFO
    3.class Queue.PriorityQueue(maxsize) 優(yōu)先級隊(duì)列
    logging
    logging是Python標(biāo)準(zhǔn)庫里的日志模塊(線程安全)

2.操作系統(tǒng)

可以直接認(rèn)為是linux,畢竟搞后端的多數(shù)是和linux打交道.

  • 提示:
    我希望聽到TCP粘包與分包,為什么會有這種情況,應(yīng)該如何解決.能講到UDP是否會有同樣情況發(fā)生更好.

  • 答案:
    tcp/udp的區(qū)別
    TCP與UDP區(qū)別總結(jié):
    1.TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接
    2.TCP提供可靠的服務(wù).也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復(fù),且按序到達(dá);UDP盡最大努力交付,即不保 證可靠交付
    3.TCP面向字節(jié)流,實(shí)際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;UDP是面向報(bào)文的
    UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機(jī)的發(fā)送速率降低(對實(shí)時(shí)應(yīng)用很有用,如IP電話,實(shí)時(shí)視頻會議等)
    4.每一條TCP連接只能是點(diǎn)到點(diǎn)的;UDP支持一對一,一對多,多對一和多對多的交互通信
    5.TCP首部開銷20字節(jié);UDP的首部開銷小,只有8個(gè)字節(jié)
    6.TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
    關(guān)于分包和粘包
    粘包:發(fā)送方發(fā)送兩個(gè)字符串”hello”+”world”,接收方卻一次性接收到了”helloworld”.
    分包:發(fā)送方發(fā)送字符串”helloworld”,接收方卻接收到了兩個(gè)字符串”hello”和”world”.
    TCP為什么會分包
    TCP是以段(Segment)為單位發(fā)送數(shù)據(jù)的,建立TCP鏈接后,有一個(gè)最大消息長度(MSS).如果應(yīng)用層數(shù)據(jù)包超過MSS,就會把應(yīng)用層數(shù)據(jù)包拆分,分成兩個(gè)段來發(fā)送.這個(gè)時(shí)候接收端的應(yīng)用層就要拼接這兩個(gè)TCP包,才能正確處理數(shù)據(jù).
    TCP為什么會粘包
    有時(shí)候,TCP為了提高網(wǎng)絡(luò)的利用率,會使用一個(gè)叫做Nagle的算法.該算法是指,發(fā)送端即使有要發(fā)送的數(shù)據(jù),如果很少的話,會延遲發(fā)送.如果應(yīng)用層給TCP傳送數(shù)據(jù)很快的話,就會把兩個(gè)應(yīng)用層數(shù)據(jù)包“粘”在一起,TCP最后只發(fā)一個(gè)TCP數(shù)據(jù)包給接收端.
    如何處理
    在進(jìn)行TCP Socket開發(fā)時(shí),都需要處理數(shù)據(jù)包粘包和分包的情況.使用的語言是Python.實(shí)際上解決該問題很簡單,在應(yīng)用層下,定義一個(gè)協(xié)議:消息頭部+消息長度+消息正文即可.

  • 提示:
    考驗(yàn)?zāi)銓?shí)際開發(fā)中遇到的常見問題,處理方式

  • 答案:
    使用netstat和awk命令來統(tǒng)計(jì)網(wǎng)絡(luò)連接數(shù)
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    TIME_WAIT:表示主動關(guān)閉,通過優(yōu)化系統(tǒng)內(nèi)核參數(shù)可容易解決.
    CLOSE_WAIT:表示被動關(guān)閉,需要從程序本身出發(fā).
    ESTABLISHED:表示正在通信過多CLOSE_WAIT原因
    出現(xiàn)大量close_wait的現(xiàn)象,主要原因是某種情況下對方關(guān)閉了socket鏈接,但是我方忙與讀或者寫,沒有關(guān)閉連接.代碼需要判斷socket,一旦讀到0,斷開連接,read返回負(fù),檢查一下errno,如果不是AGAIN,就斷開連接.

  • 提示:
    考驗(yàn)在linux開發(fā)中,服務(wù)器端處理請求的選擇問題

  • 答案:
    select和epoll這兩個(gè)機(jī)制都I/O復(fù)用的解決方案,select為POSIX標(biāo)準(zhǔn)中的,而epoll為Linux所特有.
    更多查看

3.存儲

存儲可能包含rdbms,nosql以及緩存等,我以mysql,redis舉例

3.1mysql相關(guān)

  • 提示:
    在服務(wù)器建表時(shí)字符集(Character Set)和排序規(guī)則(Collation)是必不可少的,對他了解多少,如何選擇.

  • 答案:
    字符集
    所謂字符集,就是用來定義字符在數(shù)據(jù)庫中的編碼的集合.常見的字符集有:utf8(支持中文)和ascii(不支持中文)
    排序規(guī)則
    數(shù)據(jù)庫中的排序規(guī)則,就是用來定義字符在進(jìn)行排序和比較時(shí)的一種規(guī)則.常見的如下: 1.utf8_general_ci 不區(qū)分大小寫,utf8_general_cs 區(qū)分大小寫.2.utf8_bin 規(guī)定每個(gè)字符串用二進(jìn)制編碼存儲,區(qū)分大小寫,可以直接存儲二進(jìn)制的內(nèi)容
    說明:所為排序規(guī)則,就是指字符比較時(shí)是否區(qū)分大小寫,以及是按照字符編碼進(jìn)行比較還是直接用二進(jìn)制數(shù)據(jù)比較.

總結(jié):這邊用gbk_chinese_ci來做例子.
字符集名字語言后綴,其中各個(gè)典型后綴的含義如下:
1._ci:不區(qū)分大小寫的排序方式
2._cs:區(qū)分大小寫的排序方式
3._bin:二進(jìn)制排序方式,大小比較將根據(jù)字符編碼,不涉及人類語言,因此_bin的排序方式不包含人類語言
因此gbk_chinese_ci排序方式就表示:字符集為gbk,人類語言使用中文來比較大小,比較時(shí)區(qū)分大小寫.

  • 提示:
    char與varchar這兩個(gè)字符類型在mysql中經(jīng)常遇見,正確的使用,可以提高效率與避免空間上的浪費(fèi).

  • 答案:
    存數(shù)據(jù)時(shí)的區(qū)別
    char定義的是固定長度,長度范圍為0-255,存儲時(shí),如果字符數(shù)沒有達(dá)到定義的位數(shù),會在后面用空格補(bǔ)全存入數(shù)據(jù)庫中,在上例中,name實(shí)際存儲在數(shù)據(jù)中的數(shù)據(jù)為'zejin '
    varchar是變長長度,長度范圍為0-65535,存儲時(shí),如果字符沒有達(dá)到定義的位數(shù),也不會在后面補(bǔ)空格,在上例subject字段中,實(shí)際存儲在數(shù)據(jù)中的數(shù)據(jù)為'zejin ',當(dāng)然還有一或兩個(gè)字節(jié)來描述該字節(jié)長度
    取數(shù)據(jù)時(shí)的區(qū)別
    數(shù)據(jù)庫取char的數(shù)據(jù)時(shí),會把后面的空格全部丟棄掉,也就是說,在char中的尾部存入空格時(shí),最后取出來都會被丟棄.而數(shù)據(jù)庫在取varchar數(shù)據(jù)時(shí),尾部空格會保留.

  • 提示:
    primary key = unique + not null

  • 答案:
    Primary key與Unique Key都是唯一性約束.但二者有很大的區(qū)別:
    unique Key
    1.唯一鍵,一個(gè)表只能有一個(gè)PRIMARY KEY.
    2.Primary key的1個(gè)或多個(gè)列 必須為NOT NULL,如果列為NULL,在增加PRIMARY KEY時(shí),列自動更改為NOT NULL.
    Primary key
    1.主鍵,一個(gè)表可以有多個(gè)UNIQUE KEY
    2.UNIQUE KEY 對列沒有NOT NULL或NULL的特殊要求.

  • 提示:
    主要考你對表的設(shè)計(jì)與優(yōu)化.可以通過使用外鍵的優(yōu)缺點(diǎn)來分析該問題.

  • 答案:
    外鍵是什么
    程序很難100%保證數(shù)據(jù)的完整性,而用外鍵即使在數(shù)據(jù)庫服務(wù)器down機(jī)或者出現(xiàn)其他問題的時(shí)候,也能夠最大限度的保證數(shù)據(jù)的一致性和完整性.
    是否該用外鍵
    因需而定,在大型系統(tǒng)中(性能要求不高,安全要求高),使用外鍵;在大型系統(tǒng)中(性能要求高,安全自己控制),不用外鍵;小系統(tǒng)隨便,最好用外鍵.
    外鍵是否需要索引
    加入外鍵的主要問題就是影響性能,因此加入索引能加快關(guān)聯(lián)查詢的速度.

  • 提示:
    希望看到你通過對兩者區(qū)別和針對公司的業(yè)務(wù)類型來選擇合適的表類型,這樣才能發(fā)揮mysql的性能優(yōu)勢.

  • 答案:
    myisam與innodb是mysql的儲引擎.
    區(qū)別
    1.InnoDB支持事務(wù),MyISAM不支持,對于InnoDB每一條SQL語言都默認(rèn)封裝成事務(wù),自動提交,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個(gè)事務(wù);
    2.InnoDB支持外鍵,而MyISAM不支持.對一個(gè)包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會失??;
    3.InnoDB是聚集索引,數(shù)據(jù)文件是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高.但是輔助索引需要兩次查詢,先查詢到主鍵,然后再通過主鍵查詢到數(shù)據(jù).因此,主鍵不應(yīng)該過大,因?yàn)橹麈I太大,其他索引也都會很大.而MyISAM是非聚集索引,數(shù)據(jù)文件是分離的,索引保存的是數(shù)據(jù)文件的指針.主鍵索引和輔助索引是獨(dú)立的.
    4.InnoDB不保存表的具體行數(shù),執(zhí)行select count() from table時(shí)需要全表掃描.MyISAM用一個(gè)變量保存了整個(gè)表的行數(shù),執(zhí)行上述語句時(shí)只需要讀出該變量即可,速度很快; *
    5.Innodb不支持全文索引,MyISAM支持全文索引,查詢效率上MyISAM要高;* *
    選擇
    1.是否要支持事務(wù),如果要請選擇innodb,如果不需要可以考慮MyISAM
    2.如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請使用InnoDB.
    3.系統(tǒng)奔潰后,MyISAM恢復(fù)起來更困難,能否接受;
    4.MySQL5.5版本開始Innodb已經(jīng)成為Mysql的默認(rèn)引擎*(之前是MyISAM),說明其優(yōu)勢是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不會差.

總結(jié)
讀操作多用MyISAM
寫操作多用InnoDB

  • 提示:
    鑒于創(chuàng)建索引需要額外的磁盤空間(,以及太多的索引會導(dǎo)致文件系統(tǒng)大小限制所產(chǎn)生的問題,所以對哪些字段建立索引,什么情況下使用索引,需要審慎考慮.

  • 答案:
    *索引作用
    MySQL索引在MySQL數(shù)據(jù)庫中,可以有效提高查詢的效率,尤其是查詢數(shù)據(jù)量非常大時(shí),效果更為明顯,往往能使查詢速度加快成千上萬倍.
    索引原理
    MySQL索引主要有一下幾種索引類型:FULLTEXT,HASH,BTREE,RTREE,對不通類型有著不通的存儲引擎,如上面提到的MyISAM,InnoDB.
    使用注意
    并非所有的數(shù)據(jù)庫都以相同的方式使用索引.作為通用規(guī)則,只有當(dāng)經(jīng)常查詢索引列中的數(shù)據(jù)時(shí),才需要在表上創(chuàng)建索引.索引占用磁盤空間,并且降低添加.刪除和更新行的速度.在多數(shù)情況下,索引用于數(shù)據(jù)檢索的速度優(yōu)勢大大超過它的不足之處.但是,如果應(yīng)用程序非常頻繁地更新數(shù)據(jù)或磁盤空間有限,則可能需要限制索引的數(shù)量.

3.2redis相關(guān)

  • 提示:
    不同需求不同場景有著不同選擇,一般可以redis+mysql聯(lián)用,如果可以涉及memcache,mongoDB這些no sql系列加分.

  • 答案:
    redis場景
    1.會話緩存(Session Cache)
    用Redis緩存會話比其他存儲(如Memcached)的優(yōu)勢在于:Redis提供持久化.
    2.全頁緩存(FPC)
    即使重啟了Redis實(shí)例,因?yàn)橛写疟P的持久化
    3.隊(duì)列
    Redis作為隊(duì)列使用的操作,就類似于本地程序語言(如Python)對 list 的 push/pop 操作.
    4.排行榜/計(jì)數(shù)器
    集合(Set)和有序集合(Sorted Set)也使得我們在執(zhí)行這些操作的時(shí)候變的非常簡單
    5.發(fā)布/訂閱
    在社交網(wǎng)絡(luò)連接中使用,還可作為基于發(fā)布/訂閱的腳本觸發(fā)器,甚至用Redis的發(fā)布/訂閱功能來建立聊天系統(tǒng)
    redis與mysql
    這兩者是內(nèi)存和硬盤的關(guān)系,硬盤放置主體數(shù)據(jù)用于持久化存儲,而內(nèi)存則是當(dāng)前運(yùn)行的那部分?jǐn)?shù)據(jù),CPU訪問內(nèi)存而不是磁盤,這大大提升了運(yùn)行的速度,當(dāng)然這是基于程序的局部化訪問原理.
    推理到redis+mysql,它是內(nèi)存+磁盤關(guān)系的一個(gè)映射,mysql放在磁盤,redis放在內(nèi)存,這樣的話,web應(yīng)用每次只訪問redis,如果沒有找到的數(shù)據(jù),才去訪問Mysql.

  • 提示:
    redis本身不處理分布式事物或者說它的事物非常弱,因?yàn)閞edis本身是單線程的.

  • 答案:
    通過Redis+Lua方案,Redis的事務(wù)對處理較復(fù)雜的業(yè)務(wù)需求非常有用.
    其次,Redis中實(shí)現(xiàn)事務(wù)有2種方式:
    1.使用MULIT,EXEC,DISCARD和WATCH等命令;
    2.使用Lua腳本封裝多個(gè)redis基本命令,來實(shí)現(xiàn)一個(gè)復(fù)雜的事務(wù)操作.
    3.DISCARD指令就是用來回滾的.

  • 提示:
    需要你描述解決該問題的過程(起因-分析-排查-解決)

  • 答案:
    當(dāng)內(nèi)存滿了,不允許再存數(shù)據(jù),會出現(xiàn)錯誤OOM command not allowed when used memory > ‘maxmemory’

4.安全

Web安全與我們平時(shí)開發(fā)處處關(guān)聯(lián),那么web開發(fā)需要在工作中注意哪些安全方面的問題?

<h4 id="4.1">4.1安全</h4>

  • 提示:
    對于一個(gè)有經(jīng)驗(yàn)的開發(fā)人員,代碼的書寫規(guī)范是門必修課,這里考的就是程序員對書寫sql語句中是否注意書寫規(guī)范.

  • 答案:
    sql不禁是Python中需要防范的問題,在其他語言也是個(gè)必不可少的問題,這里引用PHP的防注入方案.
    1.過濾掉一些常見的數(shù)據(jù)庫操作關(guān)鍵字:select,insert,update,delete,and,*等.或者通過系統(tǒng)函數(shù):addslashes(需要被過濾的內(nèi)容)來進(jìn)行過濾.
    2.SQL語句書寫的時(shí)候盡量不要省略小引號(tab鍵上面那個(gè))和單引號.
    3.提高數(shù)據(jù)庫命名技巧,對于一些重要的字段根據(jù)程序的特點(diǎn)命名,取不易被猜到的.
    4.對于常用的方法加以封裝,避免直接暴漏SQL語句.
    5.控制錯誤信息.
    關(guān)閉錯誤提示信息,將錯誤信息寫到系統(tǒng)日志.
    6.使用Mysqli和PDO連接mysql數(shù)據(jù)預(yù)處理.

  • 答案:
    什么是XSS攻擊
    XSS即跨站腳本攻擊,XSS是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中.簡單的說就是HTML注入問題.
    防止XSS攻擊的兩種方式
    1.對單一變量進(jìn)行轉(zhuǎn)義過濾.可以使用escape過濾器,無需轉(zhuǎn)義時(shí)使用safe過濾器
    2.利用django的HTML自動轉(zhuǎn)義,無需autoescape 標(biāo)簽,django中的HTML文檔會自動轉(zhuǎn)義.
  • 提示:
    用 django 有多久,跟 csrf 這個(gè)概念打交道就有久.
  • 答案:
    csrf是什么
    CSRF,跨站點(diǎn)偽造請求.顧名思義,就是是偽造請求,冒充用戶在站內(nèi)的正常操作.
    通過Django來防范CSRF
    1.首先,最基本的原則是:GET 請求不要用有副作用.也就是說任何處理 GET 請求的代碼對資源的訪問都一定要是“只讀“的.
    2.啟用 django.middleware.csrf.CsrfViewMiddleware 這個(gè)中間件.
    3.再次,在所有的 POST 表單元素時(shí),需要加上一個(gè)csrf_token的tag.
    4.在渲染模塊時(shí),使用 render.它會處理 csrf_token 這個(gè) tag,從而自動為表單添加一個(gè)名為csrfmiddlewaretoken 的 input.
    更多XSS與CSRF詳情見

4.2密碼技術(shù)

  • 簡單說說https的工作原理與http的區(qū)別?
  • 提示:
    希望可以講到里面使用了哪些加密算法

  • 答案:
    Https是一種基于SSL/TLS的Http協(xié)議,所有的http數(shù)據(jù)都是在SSL/TLS協(xié)議封裝之上傳輸?shù)?
    Https協(xié)議在Http協(xié)議的基礎(chǔ)上,添加了SSL/TLS握手以及數(shù)據(jù)加密傳輸,也屬于應(yīng)用層協(xié)議.
    1.HTTP協(xié)議運(yùn)行在TCP之上,所有傳輸?shù)膬?nèi)容都是明文,客戶端和服務(wù)器端都無法驗(yàn)證對方的身份.
    2.HTTPS是運(yùn)行在SSL/TLS之上的HTTP協(xié)議,SSL/TLS運(yùn)行在TCP之上.所有傳輸?shù)膬?nèi)容都經(jīng)過加密,加密采用對稱加密,但對稱加密的密鑰用服務(wù)器方的證書進(jìn)行了非對稱加密.

  • 說說https有什么優(yōu)缺點(diǎn)?
  • 提示:
    從安全與性能方向回答.

  • 答案:
    優(yōu)點(diǎn)
    1.使用 HTTPS 協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
    2.HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸.身份認(rèn)證的網(wǎng)絡(luò)協(xié)議, 要比 http 協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取.改變,確保數(shù)據(jù)的完整性.
    3.HTTPS 是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本.
    缺點(diǎn)
    1.HTTPS 協(xié)議的加密范圍也比較有限,在黑客攻擊.拒絕服務(wù)攻擊.服務(wù)器劫持等方 面幾乎起不到什么作用
    2.HTTPS 協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗,甚至已有安全措施也會受到影響.
    3.SSL 證書需要錢.功能越強(qiáng)大的證書費(fèi)用越高.個(gè)人網(wǎng)站.小網(wǎng)站沒有必要一般不會用.
    4.HTTPS 連接服務(wù)器端資源占用高很多,握手階段比較費(fèi)時(shí)對網(wǎng)站的相應(yīng)速度有負(fù)面 影響.
    5.HTTPS 連接緩存不如 HTTP 高效.

  • 提示:
    對稱加密高效不安全,非對稱加密安全不高效.

  • 答案:
    對稱加密
    對稱加密是指加密和解密使用的密鑰是同一個(gè)密鑰,或者可以相互推算.對稱加密的優(yōu)點(diǎn)是算法簡單,加解密效率高,系統(tǒng)開銷小,適合對大數(shù)據(jù)量加密.缺點(diǎn)是解密加密使用同一個(gè)密鑰,需要考慮遠(yuǎn)程通信的情況下如何安全的交換密鑰,如果密鑰丟失,所謂的加密解密就失效了.
    非對稱加密
    非對稱加密和解密使用的密鑰不是同一密鑰,其中一個(gè)對外界公開,被稱為公鑰,另一個(gè)只有所有者知道,
    稱作私鑰.
    用公鑰加密的信息必須用私鑰才能解開,反之,用私鑰加密的信息只有用公鑰才能解開.

5.總結(jié)

5.1新手需掌握技能點(diǎn)

  • 談?wù)勓b飾器,迭代器,yield,內(nèi)存管理等
  • 計(jì)算密集型,IO密集型任務(wù)怎么辦
  • Tcp/Udp協(xié)議,Http協(xié)議
  • sql,cache, nosql
  • web安全相關(guān),sql注入,xss等

5.2老鳥需掌握技能點(diǎn)

  • WSGI 和 FastCGI 的關(guān)系
  • Gevent 和 threading / multiprocessing 的關(guān)系
  • cookie 和 session 的關(guān)系,以及 xsrf 的攻擊和防范方法
  • Django 和 Tornado 的關(guān)系.差別
  • 考考數(shù)據(jù)庫知識,SQL 語法和調(diào)優(yōu),SQLAlchemy ,redis的用法
  • restfull 風(fēng)格的api怎么寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容