全網(wǎng)最全Python項(xiàng)目練習(xí)500例(附源代碼),練完可就業(yè)

      網(wǎng)友投稿 1377 2022-05-30

      個(gè)人公眾號(hào) yk 坤帝

      后臺(tái)回復(fù) 項(xiàng)目七 獲取整理資源

      1.有一個(gè)jsonline格式的文件file.txt大小約為10K

      2.補(bǔ)充缺失的代碼

      3.輸入日期, 判斷這一天是這一年的第幾天?

      4.打亂一個(gè)排好序的list對(duì)象alist?

      5.現(xiàn)有字典 d= {‘a(chǎn)’:24,‘g’:52,‘i’:12,‘k’:33}請(qǐng)按value值進(jìn)行排序?

      6.字典推導(dǎo)式

      7.請(qǐng)反轉(zhuǎn)字符串 “aStr”?

      8.將字符串 “k:1 |k1:2|k2:3|k3:4”,處理成字典 {k:1,k1:2,…}

      9.請(qǐng)按alist中元素的age由大到小排序

      10.下面代碼的輸出結(jié)果將是什么?

      11.寫一個(gè)列表生成式,產(chǎn)生一個(gè)公差為11的等差數(shù)列

      12.給定兩個(gè)列表,怎么找出他們相同的元素和不同的元素?

      13.請(qǐng)寫出一段python代碼實(shí)現(xiàn)刪除list里面的重復(fù)元素?

      14.給定兩個(gè)list A,B ,請(qǐng)用找出A,B中相同與不同的元素 企業(yè)面試題

      15.python新式類和經(jīng)典類的區(qū)別?

      16.python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)有幾種?

      17.python如何實(shí)現(xiàn)單例模式?請(qǐng)寫出兩種實(shí)現(xiàn)方式?

      18.反轉(zhuǎn)一個(gè)整數(shù),例如-123 --> -321

      19.設(shè)計(jì)實(shí)現(xiàn)遍歷目錄與子目錄,抓取.pyc文件

      20.一行代碼實(shí)現(xiàn)1-100之和

      21.Python-遍歷列表時(shí)刪除元素的正確做法

      22.字符串的操作題目

      23.可變類型和不可變類型

      24.is和==有什么區(qū)別?

      25.求出列表所有奇數(shù)并構(gòu)造新列表

      26.用一行python代碼寫出1+2+3+10248

      27.Python中變量的作用域?(變量查找順序)

      28.字符串 “123” 轉(zhuǎn)換成 123 ,不使用內(nèi)置api,例如 int()

      29.Given an array of integers

      30.python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素

      31.統(tǒng)計(jì)一個(gè)文本中單詞頻次最高的10個(gè)單詞?

      32.請(qǐng)寫出一個(gè)函數(shù)滿足以下條件

      33.使用單一的列表生成式來(lái)產(chǎn)生一個(gè)新的列表

      34.用一行代碼生成[1,4,9,16,25,36,49,64,81,100]

      35.輸入某年某月某日,判斷這一天是這一年的第幾天?

      36.兩個(gè)有序列表,l1,l2,對(duì)這兩個(gè)列表進(jìn)行合并不可使用extend

      37.給定一個(gè)任意長(zhǎng)度數(shù)組,實(shí)現(xiàn)一個(gè)函數(shù)

      38.寫一個(gè)函數(shù)找出一個(gè)整數(shù)數(shù)組中,第二大的數(shù)

      39.閱讀一下代碼他們的輸出結(jié)果是什么?

      40.統(tǒng)計(jì)一段字符串中字符出現(xiàn)的次數(shù)

      41.super函數(shù)的具體用法和場(chǎng)景

      42.Python中類方法、類實(shí)例方法、靜態(tài)方法有何區(qū)別?

      43.遍歷一個(gè)object的所有屬性,并print每一個(gè)屬性名?

      44.寫一個(gè)類,并讓它盡可能多的支持操作符?

      45.介紹Cython,Pypy Cpython Numba各有什么缺點(diǎn)

      46.請(qǐng)描述抽象類和接口類的區(qū)別和聯(lián)系

      47.Python中如何動(dòng)態(tài)獲取和設(shè)置對(duì)象的屬性?

      48.哪些操作會(huì)導(dǎo)致Python內(nèi)存溢出,怎么處理?

      49.關(guān)于Python內(nèi)存管理,下列說(shuō)法錯(cuò)誤的是 B

      50.Python的內(nèi)存管理機(jī)制及調(diào)優(yōu)手段?

      51.內(nèi)存泄露是什么?如何避免?

      52.python常見(jiàn)的列表推導(dǎo)式?

      53.簡(jiǎn)述read、readline、readlines的區(qū)別?

      54.什么是Hash(散列函數(shù))?

      55.python函數(shù)重載機(jī)制?

      56.寫一個(gè)函數(shù)找出一個(gè)整數(shù)數(shù)組中,第二大的數(shù)

      57.手寫一個(gè)判斷時(shí)間的裝飾器

      58.使用Python內(nèi)置的filter()方法來(lái)過(guò)濾?

      59.編寫函數(shù)的4個(gè)原則

      60.函數(shù)調(diào)用參數(shù)的傳遞方式是值傳遞還是引用傳遞?

      61.如何在function里面設(shè)置一個(gè)全局變量

      62.對(duì)缺省參數(shù)的理解 ?

      63.Mysql怎么限制IP訪問(wèn)?

      64.帶參數(shù)的裝飾器?

      65.為什么函數(shù)名字可以當(dāng)做參數(shù)用?

      66.Python中pass語(yǔ)句的作用是什么?

      67.有這樣一段代碼,print c會(huì)輸出什么,為什么?

      68.交換兩個(gè)變量的值?

      69.map函數(shù)和reduce函數(shù)?

      70.回調(diào)函數(shù),如何通信的?

      71.Python主要的內(nèi)置數(shù)據(jù)類型都有哪些? print dir( ‘a(chǎn) ’) 的輸出?

      72.map(lambda x:xx,[y for y in range(3)])的輸出?

      73.hasattr() getattr() setattr() 函數(shù)使用詳解?

      74.一句話解決階乘函數(shù)?

      75.什么是lambda函數(shù)? 有什么好處?

      76.遞歸函數(shù)停止的條件?

      77.下面這段代碼的輸出結(jié)果將是什么?請(qǐng)解釋。

      78.什么是lambda函數(shù)?它有什么好處?寫一個(gè)匿名函數(shù)求兩個(gè)數(shù)的和

      79.對(duì)設(shè)計(jì)模式的理解,簡(jiǎn)述你了解的設(shè)計(jì)模式?

      80.請(qǐng)手寫一個(gè)單例

      81.單例模式的應(yīng)用場(chǎng)景有那些?

      82.用一行代碼生成[1,4,9,16,25,36,49,64,81,100]

      83.對(duì)裝飾器的理解,并寫出一個(gè)計(jì)時(shí)器記錄方法執(zhí)行性能的裝飾器?

      84.解釋以下什么是閉包?

      85.函數(shù)裝飾器有什么作用?

      86.生成器,迭代器的區(qū)別?

      87.X是什么類型?

      88.請(qǐng)用一行代碼 實(shí)現(xiàn)將1-N 的整數(shù)列表以3為單位分組

      89.Python中yield的用法?

      90.Python中的可變對(duì)象和不可變對(duì)象?

      91.Python的魔法方法

      92.面向?qū)ο笾性趺磳?shí)現(xiàn)只讀屬性?

      93.談?wù)勀銓?duì)面向?qū)ο蟮睦斫猓?/p>

      94.請(qǐng)寫出一段代碼用正則匹配出ip?

      95.a = “abbbccc”,用正則匹配為abccc,不管有多少b,就出現(xiàn)一次?

      96.Python字符串查找和替換?

      97.用Python匹配HTML g tag的時(shí)候,<.> 和 <.*?> 有什么區(qū)別

      98.正則表達(dá)式貪婪與非貪婪模式的區(qū)別?

      99.寫出開(kāi)頭匹配字母和下劃線,末尾是數(shù)字的正則表達(dá)式?

      100.正則表達(dá)式操作

      101.請(qǐng)匹配出變量A 中的json字符串。

      102.怎么過(guò)濾評(píng)論中的表情?

      103.簡(jiǎn)述Python里面search和match的區(qū)別

      104.請(qǐng)寫出匹配ip的Python正則表達(dá)式

      105.Python里match與search的區(qū)別?

      106.進(jìn)程總結(jié)

      107.談?wù)勀銓?duì)多進(jìn)程,多線程,以及協(xié)程的理解,項(xiàng)目是否用?

      108.Python異常使用場(chǎng)景有那些?

      109.多線程共同操作同一個(gè)數(shù)據(jù)互斥鎖同步?

      110.什么是多線程競(jìng)爭(zhēng)?

      111.請(qǐng)介紹一下Python的線程同步?

      112.解釋以下什么是鎖,有哪幾種鎖?

      113.什么是死鎖?

      114.多線程交互訪問(wèn)數(shù)據(jù),如果訪問(wèn)到了就不訪問(wèn)了?

      115.什么是線程安全,什么是互斥鎖?

      116.說(shuō)說(shuō)下面幾個(gè)概念:同步,異步,阻塞,非阻塞?

      117.什么是僵尸進(jìn)程和孤兒進(jìn)程?怎么避免僵尸進(jìn)程?

      118.python中進(jìn)程與線程的使用場(chǎng)景?

      119.線程是并發(fā)還是并行,進(jìn)程是并發(fā)還是并行?

      120.并行(parallel)和并發(fā)(concurrency)?

      121.IO密集型和CPU密集型區(qū)別?

      122.python asyncio的原理?

      123.怎么實(shí)現(xiàn)強(qiáng)行關(guān)閉客戶端和服務(wù)器之間的連接?

      124.簡(jiǎn)述TCP和UDP的區(qū)別以及優(yōu)缺點(diǎn)?

      125.簡(jiǎn)述瀏覽器通過(guò)WSGI請(qǐng)求動(dòng)態(tài)資源的過(guò)程?

      126.描述用瀏覽器訪問(wèn)www.baidu.com的過(guò)程

      127.Post和Get請(qǐng)求的區(qū)別?

      128.cookie 和session 的區(qū)別?

      129.列出你知道的HTTP協(xié)議的狀態(tài)碼,說(shuō)出表示什么意思?

      130.請(qǐng)簡(jiǎn)單說(shuō)一下三次握手和四次揮手?

      131.說(shuō)一下什么是tcp的2MSL?

      132.為什么客戶端在TIME-WAIT狀態(tài)必須等待2MSL的時(shí)間?

      133.說(shuō)說(shuō)HTTP和HTTPS區(qū)別?

      134.談一下HTTP協(xié)議以及協(xié)議頭部中表示數(shù)據(jù)類型的字段?

      135.HTTP請(qǐng)求方法都有什么?

      136.使用Socket套接字需要傳入哪些參數(shù) ?

      137.HTTP常見(jiàn)請(qǐng)求頭?

      138.七層模型?

      139.url的形式?

      140.對(duì)Flask藍(lán)圖(Blueprint)的理解?

      141.Flask 和 Django 路由映射的區(qū)別?

      142.什么是wsgi,uwsgi,uWSGI?

      143.Django、Flask、Tornado的對(duì)比?

      144.CORS 和 CSRF的區(qū)別?

      145.Session,Cookie,JWT的理解

      146.簡(jiǎn)述Django請(qǐng)求生命周期

      147.用的restframework完成api發(fā)送時(shí)間時(shí)區(qū)

      148.nginx,tomcat,apach到都是什么?

      149.請(qǐng)給出你熟悉關(guān)系數(shù)據(jù)庫(kù)范式有哪些,有什么作用?

      150.簡(jiǎn)述QQ登陸過(guò)程

      151.post 和 get的區(qū)別?

      152.項(xiàng)目中日志的作用

      153.django中間件的使用?

      154.談一下你對(duì)uWSGI和nginx的理解?

      155.Python中三大框架各自的應(yīng)用場(chǎng)景?

      156.Django中哪里用到了線程?哪里用到了協(xié)程?哪里用到了進(jìn)程?

      157.有用過(guò)Django REST framework嗎?

      158.對(duì)cookies與session的了解?他們能單獨(dú)用嗎?

      159.試列出至少三種目前流行的大型數(shù)據(jù)庫(kù)

      160.列舉您使用過(guò)的Python網(wǎng)絡(luò)爬蟲(chóng)所用到的網(wǎng)絡(luò)數(shù)據(jù)包?

      161.爬取數(shù)據(jù)后使用

      哪個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的,為什么? 162.你用過(guò)的爬蟲(chóng)框架或者模塊有哪些??jī)?yōu)缺點(diǎn)?

      163.寫爬蟲(chóng)是用多進(jìn)程好?還是多線程好?

      164.常見(jiàn)的反爬蟲(chóng)和應(yīng)對(duì)方法?

      165.解析網(wǎng)頁(yè)的解析器使用最多的是哪幾個(gè)?

      166.需要登錄的網(wǎng)頁(yè),如何解決同時(shí)限制ip,cookie,session

      167.驗(yàn)證碼的解決?

      168.使用最多的數(shù)據(jù)庫(kù),對(duì)他們的理解?

      169.

      編寫過(guò)哪些爬蟲(chóng)中間件? 170.“極驗(yàn)”滑動(dòng)驗(yàn)證碼如何破解?

      171.爬蟲(chóng)多久爬一次,爬下來(lái)的數(shù)據(jù)是怎么存儲(chǔ)?

      172.cookie過(guò)期的處理問(wèn)題?

      173.動(dòng)態(tài)加載又對(duì)及時(shí)性要求很高怎么處理?

      174.HTTPS有什么優(yōu)點(diǎn)和缺點(diǎn)?

      175.HTTPS是如何實(shí)現(xiàn)安全傳輸數(shù)據(jù)的?

      176.TTL,MSL,RTT各是什么?

      177.談一談你對(duì)Selenium和PhantomJS了解

      178.平常怎么使用代理的 ?

      179.存放在數(shù)據(jù)庫(kù)(redis、mysql等)。

      180.怎么監(jiān)控爬蟲(chóng)的狀態(tài)?

      181.描述下scrapy框架運(yùn)行的機(jī)制?

      182.談?wù)勀銓?duì)Scrapy的理解?

      183.怎么樣讓 scrapy 框架發(fā)送一個(gè) post 請(qǐng)求(具體寫出來(lái))

      全網(wǎng)最全Python項(xiàng)目練習(xí)500例(附源代碼),練完可就業(yè)

      184.怎么監(jiān)控爬蟲(chóng)的狀態(tài) ?

      185.怎么判斷網(wǎng)站是否更新?

      186.圖片、視頻爬取怎么繞過(guò)防盜連接

      187.你爬出來(lái)的數(shù)據(jù)量大概有多大?大概多長(zhǎng)時(shí)間爬一次?

      188.用什么數(shù)據(jù)庫(kù)存爬下來(lái)的數(shù)據(jù)?部署是你做的嗎?怎么部署?

      189.增量爬取

      190.爬取下來(lái)的數(shù)據(jù)如何去重,說(shuō)一下scrapy的具體的算法依據(jù)。

      191.Scrapy的優(yōu)缺點(diǎn)?

      192.怎么設(shè)置爬取深度?

      193.scrapy和scrapy-redis有什么區(qū)別?為什么選擇redis數(shù)據(jù)庫(kù)?

      194.分布式爬蟲(chóng)主要解決什么問(wèn)題?

      195.什么是分布式存儲(chǔ)?

      196.你所知道的分布式爬蟲(chóng)方案有哪些?

      197.scrapy-redis,有做過(guò)其他的分布式爬蟲(chóng)嗎?

      198.主鍵 超鍵 候選鍵 外鍵

      199.視圖的作用,視圖可以更改么?

      200.drop,delete與truncate的區(qū)別

      201.索引的工作原理及其種類

      202.連接的種類

      203.數(shù)據(jù)庫(kù)優(yōu)化的思路

      204.存儲(chǔ)過(guò)程與觸發(fā)器的區(qū)別

      205.悲觀鎖和樂(lè)觀鎖是什么?

      206.你常用的mysql引擎有哪些?各引擎間有什么區(qū)別?

      207.Redis宕機(jī)怎么解決?

      208.redis和mecached的區(qū)別,以及使用場(chǎng)景

      209.Redis集群方案該怎么做?都有哪些方案?

      210.Redis回收進(jìn)程是如何工作的

      211.MongoDB中對(duì)多條記錄做更新操作命令是什么?

      212.MongoDB如何才會(huì)拓展到多個(gè)shard里?

      213.編寫測(cè)試計(jì)劃的目的是

      214.對(duì)關(guān)鍵詞觸發(fā)模塊進(jìn)行測(cè)試

      215.其他常用筆試題目網(wǎng)址匯總

      216.測(cè)試人員在軟件開(kāi)發(fā)過(guò)程中的任務(wù)是什么

      217.一條軟件Bug記錄都包含了哪些內(nèi)容?

      218.簡(jiǎn)述黑盒測(cè)試和白盒測(cè)試的優(yōu)缺點(diǎn)

      219.請(qǐng)列出你所知道的軟件測(cè)試種類,至少5項(xiàng)

      220.Alpha測(cè)試與Beta測(cè)試的區(qū)別是什么?

      221.舉例說(shuō)明什么是Bug?一個(gè)bug report應(yīng)包含什么關(guān)鍵字?

      222.數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的數(shù)字-Python版

      223.求100以內(nèi)的質(zhì)數(shù)

      224.無(wú)重復(fù)字符的最長(zhǎng)子串-Python實(shí)現(xiàn)

      225.通過(guò)2個(gè)5/6升得水壺從池塘得到3升水

      226.什么是MD5加密,有什么特點(diǎn)?

      227.什么是對(duì)稱加密和非對(duì)稱加密

      228.冒泡排序的思想?

      229.快速排序的思想?

      230.如何判斷單向鏈表中是否有環(huán)?

      231.你知道哪些排序算法(一般是通過(guò)問(wèn)題考算法)

      232.斐波那契數(shù)列

      233.如何翻轉(zhuǎn)一個(gè)單鏈表?

      234.青蛙跳臺(tái)階問(wèn)題

      235.兩數(shù)之和 Two Sum

      236.搜索旋轉(zhuǎn)排序數(shù)組 Search in Rotated Sorted Array

      237.Python實(shí)現(xiàn)一個(gè)Stack的數(shù)據(jù)結(jié)構(gòu)

      238.寫一個(gè)二分查找

      239.set 用 in 時(shí)間復(fù)雜度是多少,為什么?

      240.列表中有n個(gè)正整數(shù)范圍在[0,1000],進(jìn)行排序;

      241.面向?qū)ο缶幊讨杏薪M合和繼承的方法實(shí)現(xiàn)新的類

      242.找出1G的文件中高頻詞

      243.一個(gè)大約有一萬(wàn)行的文本文件統(tǒng)計(jì)高頻詞

      244.怎么在海量數(shù)據(jù)中找出重復(fù)次數(shù)最多的一個(gè)?

      245.判斷數(shù)據(jù)是否在大量數(shù)據(jù)中

      141.Flask 和 Django 路由映射的區(qū)別?

      在django中,路由是瀏覽器訪問(wèn)服務(wù)器時(shí),先訪問(wèn)的項(xiàng)目中的url,再由項(xiàng)目中的url找到應(yīng)用中url,這些url是放在一個(gè)列表里,遵從從前往后匹配的規(guī)則。在flask中,路由是通過(guò)裝飾器給每個(gè)視圖函數(shù)提供的,而且根據(jù)請(qǐng)求方式的不同可以一個(gè)url用于不同的作用。

      1

      142.什么是wsgi,uwsgi,uWSGI?

      WSGI:

      web服務(wù)器網(wǎng)關(guān)接口,是一套協(xié)議。用于接收用戶請(qǐng)求并將請(qǐng)求進(jìn)行初次封裝,然后將請(qǐng)求交給web框架。

      實(shí)現(xiàn)wsgi協(xié)議的模塊:wsgiref,本質(zhì)上就是編寫一socket服務(wù)端,用于接收用戶請(qǐng)求(django)

      werkzeug,本質(zhì)上就是編寫一個(gè)socket服務(wù)端,用于接收用戶請(qǐng)求(flask)

      uwsgi:

      與WSGI一樣是一種通信協(xié)議,它是uWSGI服務(wù)器的獨(dú)占協(xié)議,用于定義傳輸信息的類型。

      uWSGI:

      是一個(gè)web服務(wù)器,實(shí)現(xiàn)了WSGI的協(xié)議,uWSGI協(xié)議,http協(xié)議

      143.Django、Flask、Tornado的對(duì)比?

      1、 Django走的大而全的方向,開(kāi)發(fā)效率高。它的MTV框架,自帶的ORM,admin后臺(tái)管理,自帶的sqlite數(shù)據(jù)庫(kù)和開(kāi)發(fā)測(cè)試用的服務(wù)器,給開(kāi)發(fā)者提高了超高的開(kāi)發(fā)效率。

      重量級(jí)web框架,功能齊全,提供一站式解決的思路,能讓開(kāi)發(fā)者不用在選擇上花費(fèi)大量時(shí)間。

      自帶ORM和模板引擎,支持jinja等非官方模板引擎。

      自帶ORM使Django和關(guān)系型數(shù)據(jù)庫(kù)耦合度高,如果要使用非關(guān)系型數(shù)據(jù)庫(kù),需要使用第三方庫(kù)自帶數(shù)據(jù)庫(kù)管理app成熟,穩(wěn)定,開(kāi)發(fā)效率高,相對(duì)于Flask,Django的整體封閉性比較好,適合做企業(yè)級(jí)網(wǎng)站的開(kāi)發(fā)。

      python web框架的先驅(qū),第三方庫(kù)豐富

      2、 Flask 是輕量級(jí)的框架,自由,靈活,可擴(kuò)展性強(qiáng),核心基于Werkzeug WSGI工具 和jinja2 模板引擎

      適用于做小網(wǎng)站以及web服務(wù)的API,開(kāi)發(fā)大型網(wǎng)站無(wú)壓力,但架構(gòu)需要自己設(shè)計(jì)

      與關(guān)系型數(shù)據(jù)庫(kù)的結(jié)合不弱于Django,而與非關(guān)系型數(shù)據(jù)庫(kù)的結(jié)合遠(yuǎn)遠(yuǎn)優(yōu)于Django

      3、 Tornado走的是少而精的方向,性能優(yōu)越,它最出名的異步非阻塞的設(shè)計(jì)方式

      Tornado的兩大核心模塊:

      iostraem:對(duì)非阻塞的socket進(jìn)行簡(jiǎn)單的封裝

      ioloop: 對(duì)I/O 多路復(fù)用的封裝,它實(shí)現(xiàn)一個(gè)單例

      144.CORS 和 CSRF的區(qū)別?

      什么是CORS? CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是“跨域資源共享"(Cross-origin resoure sharing).

      它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而客服了AJAX只能同源使用的限制。

      什么是CSRF?

      CSRF主流防御方式是在后端生成表單的時(shí)候生成一串隨機(jī)token,內(nèi)置到表單里成為一個(gè)字段,同時(shí),將此串token置入session中。每次表單提交到后端時(shí)都會(huì)檢查這兩個(gè)值是否一致,以此來(lái)判斷此次表單提交是否是可信的,提交過(guò)一次之后,如果這個(gè)頁(yè)面沒(méi)有生成CSRF token,那么token將會(huì)被清空,如果有新的需求,那么token會(huì)被更新。

      攻擊者可以偽造POST表單提交,但是他沒(méi)有后端生成的內(nèi)置于表單的token,session中沒(méi)有token都無(wú)濟(jì)于事。

      145.Session,Cookie,JWT的理解

      為什么要使用會(huì)話管理

      眾所周知,HTTP協(xié)議是一個(gè)無(wú)狀態(tài)的協(xié)議,也就是說(shuō)每個(gè)請(qǐng)求都是一個(gè)獨(dú)立的請(qǐng)求,請(qǐng)求與請(qǐng)求之間并無(wú)關(guān)系。但在實(shí)際的應(yīng)用場(chǎng)景,這種方式并不能滿足我們的需求。舉個(gè)大家都喜歡用的例子,把商品加入購(gòu)物車,單獨(dú)考慮這個(gè)請(qǐng)求,服務(wù)端并不知道這個(gè)商品是誰(shuí)的,應(yīng)該加入誰(shuí)的購(gòu)物車?因此這個(gè)請(qǐng)求的上下文環(huán)境實(shí)際上應(yīng)該包含用戶的相關(guān)信息,在每次用戶發(fā)出請(qǐng)求時(shí)把這一小部分額外信息,也做為請(qǐng)求的一部分,這樣服務(wù)端就可以根據(jù)上下文中的信息,針對(duì)具體的用戶進(jìn)行操作。所以這幾種技術(shù)的出現(xiàn)都是對(duì)HTTP協(xié)議的一個(gè)補(bǔ)充,使得我們可以用HTTP協(xié)議+狀態(tài)管理構(gòu)建一個(gè)的面向用戶的WEB應(yīng)用。

      Session 和Cookie的區(qū)別

      這里我想先談?wù)剆ession與cookies,因?yàn)檫@兩個(gè)技術(shù)是做為開(kāi)發(fā)最為常見(jiàn)的。那么session與cookies的區(qū)別是什么?個(gè)人認(rèn)為session與cookies最核心區(qū)別在于額外信息由誰(shuí)來(lái)維護(hù)。利用cookies來(lái)實(shí)現(xiàn)會(huì)話管理時(shí),用戶的相關(guān)信息或者其他我們想要保持在每個(gè)請(qǐng)求中的信息,都是放在cookies中,而cookies是由客戶端來(lái)保存,每當(dāng)客戶端發(fā)出新請(qǐng)求時(shí),就會(huì)稍帶上cookies,服務(wù)端會(huì)根據(jù)其中的信息進(jìn)行操作。

      當(dāng)利用session來(lái)進(jìn)行會(huì)話管理時(shí),客戶端實(shí)際上只存了一個(gè)由服務(wù)端發(fā)送的session_id,而由這個(gè)session_id,可以在服務(wù)端還原出所需要的所有狀態(tài)信息,從這里可以看出這部分信息是由服務(wù)端來(lái)維護(hù)的。

      除此以外,session與cookies都有一些自己的缺點(diǎn):

      cookies的安全性不好,攻擊者可以通過(guò)獲取本地cookies進(jìn)行欺騙或者利用cookies進(jìn)行CSRF攻擊。使用cookies時(shí),在多個(gè)域名下,會(huì)存在跨域問(wèn)題。

      session 在一定的時(shí)間里,需要存放在服務(wù)端,因此當(dāng)擁有大量用戶時(shí),也會(huì)大幅度降低服務(wù)端的性能,當(dāng)有多臺(tái)機(jī)器時(shí),如何共享session也會(huì)是一個(gè)問(wèn)題.(redis集群)也就是說(shuō),用戶第一個(gè)訪問(wèn)的時(shí)候是服務(wù)器A,而第二個(gè)請(qǐng)求被轉(zhuǎn)發(fā)給了服務(wù)器B,那服務(wù)器B如何得知其狀態(tài)。實(shí)際上,session與cookies是有聯(lián)系的,比如我們可以把session_id存放在cookies中的。

      JWT是如何工作的

      首先用戶發(fā)出登錄請(qǐng)求,服務(wù)端根據(jù)用戶的登錄請(qǐng)求進(jìn)行匹配,如果匹配成功,將相關(guān)的信息放入payload中,利用算法,加上服務(wù)端的密鑰生成token,這里需要注意的是secret_key很重要,如果這個(gè)泄露的話,客戶端就可以隨機(jī)篡改發(fā)送的額外信息,它是信息完整性的保證。生成token后服務(wù)端將其返回給客戶端,客戶端可以在下次請(qǐng)求時(shí),將token一起交給服務(wù)端,一般是說(shuō)我們可以將其放在Authorization首部中,這樣也就可以避免跨域問(wèn)題。

      146.簡(jiǎn)述Django請(qǐng)求生命周期

      一般是用戶通過(guò)瀏覽器向我們的服務(wù)器發(fā)起一個(gè)請(qǐng)求(request),這個(gè)請(qǐng)求會(huì)去訪問(wèn)視圖函數(shù),如果不涉及到數(shù)據(jù)調(diào)用,那么這個(gè)時(shí)候視圖函數(shù)返回一個(gè)模板也就是一個(gè)網(wǎng)頁(yè)給用戶)視圖函數(shù)調(diào)用模型毛模型去數(shù)據(jù)庫(kù)查找數(shù)據(jù),然后逐級(jí)返回,視圖函數(shù)把返回的數(shù)據(jù)填充到模板中空格中,最后返回網(wǎng)頁(yè)給用戶。

      1.wsgi ,請(qǐng)求封裝后交給web框架(Flask,Django)

      2.中間件,對(duì)請(qǐng)求進(jìn)行校驗(yàn)或在請(qǐng)求對(duì)象中添加其他相關(guān)數(shù)據(jù),例如:csrf,request.session

      3.路由匹配 根據(jù)瀏覽器發(fā)送的不同url去匹配不同的視圖函數(shù)

      4.視圖函數(shù),在視圖函數(shù)中進(jìn)行業(yè)務(wù)邏輯的處理,可能涉及到:orm,templates

      5.中間件,對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行處理

      6.wsgi,將響應(yīng)的內(nèi)容發(fā)送給瀏覽器

      147.用的restframework完成api發(fā)送時(shí)間時(shí)區(qū)

      當(dāng)前的問(wèn)題是用django的rest framework模塊做一個(gè)get請(qǐng)求的發(fā)送時(shí)間以及時(shí)區(qū)信息的api

      148.nginx,tomcat,apach到都是什么?

      Nginx(engine x)是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是 一個(gè)IMAP/POP3/SMTP服務(wù)器,工作在OSI七層,負(fù)載的實(shí)現(xiàn)方式:輪詢,IP_HASH,fair,session_sticky.

      Apache HTTP Server是一個(gè)模塊化的服務(wù)器,源于NCSAhttpd服務(wù)器

      Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,是開(kāi)發(fā)和調(diào)試JSP程序的首選。

      149.請(qǐng)給出你熟悉關(guān)系數(shù)據(jù)庫(kù)范式有哪些,有什么作用?

      在進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),所遵循的一些規(guī)范,只要按照設(shè)計(jì)規(guī)范進(jìn)行設(shè)計(jì),就能設(shè)計(jì)出沒(méi)有數(shù)據(jù)冗余和數(shù)據(jù)維護(hù)異常的數(shù)據(jù)庫(kù)結(jié)構(gòu)。

      數(shù)據(jù)庫(kù)的設(shè)計(jì)的規(guī)范有很多,通常來(lái)說(shuō)我們?cè)谠O(shè)是數(shù)據(jù)庫(kù)時(shí)只要達(dá)到其中一些規(guī)范就可以了,這些規(guī)范又稱之為數(shù)據(jù)庫(kù)的三范式,一共有三條,也存在著其他范式,我們只要做到滿足前三個(gè)范式的要求,就能設(shè)陳出符合我們的數(shù)據(jù)庫(kù)了,我們也不能全部來(lái)按照范式的要求來(lái)做,還要考慮實(shí)際的業(yè)務(wù)使用情況,所以有時(shí)候也需要做一些違反范式的要求。

      1.數(shù)據(jù)庫(kù)設(shè)計(jì)的第一范式(最基本),基本上所有數(shù)據(jù)庫(kù)的范式都是符合第一范式的,符合第一范式的表 具有以下幾個(gè)特點(diǎn): 數(shù)據(jù)庫(kù)表中的所有字段都只具有單一屬性,單一屬性的列是由基本的數(shù)據(jù)類型(整型,浮點(diǎn)型,字符型等)所構(gòu)成的設(shè)計(jì)出來(lái)的表都是簡(jiǎn)單的二比表

      2.數(shù)據(jù)庫(kù)設(shè)計(jì)的第二范式(是在第一范式的基礎(chǔ)上設(shè)計(jì)的),要求一個(gè)表中只具有一個(gè)業(yè)務(wù)主鍵,也就是說(shuō)符合第二范式的表中不能存在非主鍵列對(duì)只對(duì)部分主鍵的依賴關(guān)系

      3.數(shù)據(jù)庫(kù)設(shè)計(jì)的第三范式,指每一個(gè)非主屬性既不部分依賴與也不傳遞依賴于業(yè)務(wù)主鍵,也就是第二范式的基礎(chǔ)上消除了非主屬性對(duì)主鍵的傳遞依賴

      150.簡(jiǎn)述QQ登陸過(guò)程

      qq登錄,在我們的項(xiàng)目中分為了三個(gè)接口,

      第一個(gè)接口是請(qǐng)求qq服務(wù)器返回一個(gè)qq登錄的界面;

      第二個(gè)接口是通過(guò)掃碼或賬號(hào)登陸進(jìn)行驗(yàn)證,qq服務(wù)器返回給瀏覽器一個(gè)code和state,利用這個(gè)code通過(guò)本地服務(wù)器去向qq服務(wù)器獲取access_token覆返回給本地服務(wù)器,憑借access_token再向qq服務(wù)器獲取用戶的openid(openid用戶的唯一標(biāo)識(shí))

      第三個(gè)接口是判斷用戶是否是第一次qq登錄,如果不是的話直接登錄返回的jwt-token給用戶,對(duì)沒(méi)有綁定過(guò)本網(wǎng)站的用戶,對(duì)openid進(jìn)行加密生成token進(jìn)行綁定

      151.post 和 get的區(qū)別?

      1.GET是從服務(wù)器上獲取數(shù)據(jù),POST是向服務(wù)器傳送數(shù)據(jù)

      2.在客戶端,GET方式在通過(guò)URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到,POST方式,數(shù)據(jù)放置在HTML——HEADER內(nèi)提交

      3.對(duì)于GET方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于POST方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)

      152.項(xiàng)目中日志的作用

      一、日志相關(guān)概念

      1.日志是一種可以追蹤某些軟件運(yùn)行時(shí)所發(fā)生事件的方法

      2.軟件開(kāi)發(fā)人員可以向他們的代碼中調(diào)用日志記錄相關(guān)的方法來(lái)表明發(fā)生了某些事情

      3.一個(gè)事件可以用一個(gè)包含可選變量數(shù)據(jù)的消息來(lái)描述

      4.此外,事件也有重要性的概念,這個(gè)重要性也可以被成為嚴(yán)重性級(jí)別(level)

      二、日志的作用

      1.通過(guò)log的分析,可以方便用戶了解系統(tǒng)或軟件、應(yīng)用的運(yùn)行情況;

      2.如果你的應(yīng)用log足夠豐富,可以分析以往用戶的操作行為、類型喜好,地域分布或其他更多信息;

      3.如果一個(gè)應(yīng)用的log同時(shí)也分了多個(gè)級(jí)別,那么可以很輕易地分析得到該應(yīng)用的健康狀況,及時(shí)發(fā)現(xiàn)問(wèn) 題并快速定位、解決問(wèn)題,補(bǔ)救損失。

      4.簡(jiǎn)單來(lái)講就是我們通過(guò)記錄和分析日志可以了解一個(gè)系統(tǒng)或軟件程序運(yùn)行情況是否正常,也可以在應(yīng)用程序出現(xiàn)故障時(shí)快速定位問(wèn)題。不僅在開(kāi)發(fā)中,在運(yùn)維中日志也很重要,日志的作用也可以簡(jiǎn)單。總結(jié)為以下幾點(diǎn):

      1.程序調(diào)試

      2.了解軟件程序運(yùn)行情況,是否正常

      3,軟件程序運(yùn)行故障分析與問(wèn)題定位 4,如果應(yīng)用的日志信息足夠詳細(xì)和豐富,還可以用來(lái)做用戶行為分析

      153.django中間件的使用?

      Django在中間件中預(yù)置了六個(gè)方法,這六個(gè)方法的區(qū)別在于不同的階段執(zhí)行,對(duì)輸入或輸出進(jìn)行干預(yù),

      方法如下:

      1.初始化:無(wú)需任何參數(shù),服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否啟用當(dāng)前中間件

      def __init__(): pass

      1

      2

      2.處理請(qǐng)求前:在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象。

      def process_request(request): pass

      1

      2

      3.處理視圖前:在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象。

      def process_view(request,view_func,view_args,view_kwargs): pass

      1

      2

      4.處理模板響應(yīng)前:在每個(gè)請(qǐng)求上調(diào)用,返回實(shí)現(xiàn)了render方法的響應(yīng)對(duì)象

      def process_template_response(request,response): pass

      1

      2

      5.處理響應(yīng)后:所有響應(yīng)返回瀏覽器之前被調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回HttpResponse對(duì)象。

      def process_response(request,response): pass

      1

      2

      6.異常處理:當(dāng)視圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回一個(gè)HttpResponse對(duì)象。

      def process_exception(request,exception): pass

      1

      2

      154.談一下你對(duì)uWSGI和nginx的理解?

      1.uWSGI是一個(gè)Web服務(wù)器,它實(shí)現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議。Nginx中HttpUwsgiModule的作用是與uWSGI服務(wù)器進(jìn)行交換。WSGI是一種Web服務(wù)器網(wǎng)關(guān)接口。它是一個(gè)Web服務(wù)器(如nginx,uWSGI等服務(wù)器)與web應(yīng)用(如用Flask框架寫的程序)通信的一種規(guī)范。

      要注意WSGI/uwsgi/uWSGI這三個(gè)概念的區(qū)分。

      WSGI是一種通信協(xié)議。

      uwsgi是一種線路協(xié)議而不是通信協(xié)議,在此常用于在uWSGI服務(wù)器與其他網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)通信。

      uWSGI是實(shí)現(xiàn)了uwsgi和WSGI兩種協(xié)議的Web服務(wù)器。

      nginx 是一個(gè)開(kāi)源的高性能的HTTP服務(wù)器和反向代理:

      1.作為web服務(wù)器,它處理靜態(tài)文件和索引文件效果非常高

      2.它的設(shè)計(jì)非常注重效率,最大支持5萬(wàn)個(gè)并發(fā)連接,但只占用很少的內(nèi)存空間

      3.穩(wěn)定性高,配置簡(jiǎn)潔。

      4.強(qiáng)大的反向代理和負(fù)載均衡功能,平衡集群中各個(gè)服務(wù)器的負(fù)載壓力應(yīng)用

      155.Python中三大框架各自的應(yīng)用場(chǎng)景?

      django:主要是用來(lái)搞快速開(kāi)發(fā)的,他的亮點(diǎn)就是快速開(kāi)發(fā),節(jié)約成本,,如果要實(shí)現(xiàn)高并發(fā)的話,就要對(duì)django進(jìn)行二次開(kāi)發(fā),比如把整個(gè)笨重的框架給拆掉自己寫socket實(shí)現(xiàn)http的通信,底層用純c,c++寫提升效率,ORM框架給干掉,自己編寫封裝與數(shù)據(jù)庫(kù)交互的框架,ORM雖然面向?qū)ο髞?lái)操作數(shù)據(jù)庫(kù),但是它的效率很低,使用外鍵來(lái)聯(lián)系表與表之間的查詢;

      flask: 輕量級(jí),主要是用來(lái)寫接口的一個(gè)框架,實(shí)現(xiàn)前后端分離,提考開(kāi)發(fā)效率,F(xiàn)lask本身相當(dāng)于一個(gè)內(nèi)核,其他幾乎所有的功能都要用到擴(kuò)展(郵件擴(kuò)展Flask-Mail,用戶認(rèn)證Flask-Login),都需要用第三方的擴(kuò)展來(lái)實(shí)現(xiàn)。比如可以用Flask-extension加入ORM、文件上傳、身份驗(yàn)證等。Flask沒(méi)有默認(rèn)使用的數(shù)據(jù)庫(kù),你可以選擇MySQL,也可以用NoSQL。

      其WSGI工具箱用Werkzeug(路由模塊),模板引擎則使用Jinja2,這兩個(gè)也是Flask框架的核心。

      Tornado: Tornado是一種Web服務(wù)器軟件的開(kāi)源版本。Tornado和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù)Python的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其非阻塞的方式和對(duì)epoll的運(yùn)用,Tornado每秒可以處理數(shù)以千計(jì)的連接因此Tornado是實(shí)時(shí)Web服務(wù)的一個(gè)理想框架

      個(gè)人公眾號(hào) yk 坤帝

      后臺(tái)回復(fù) 項(xiàng)目七 獲取整理資源

      Python 數(shù)據(jù)結(jié)構(gòu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:華為云GaussDB首席架構(gòu)師馮柯:摘取皇冠上的明珠,國(guó)產(chǎn)數(shù)據(jù)庫(kù)的突圍之法
      下一篇:助教日志_[沈航軟件工程]_期末總結(jié)
      相關(guān)文章
      亚洲乱色熟女一区二区三区丝袜| 日韩色视频一区二区三区亚洲| 亚洲精品无码久久久久秋霞| 久久精品国产亚洲AV无码娇色| 亚洲乱色熟女一区二区三区丝袜| 亚洲性猛交XXXX| 亚洲国产精品无码久久久久久曰 | 国产精品久久久亚洲| 亚洲色爱图小说专区| 亚洲中文字幕无码久久精品1| 亚洲精品无码你懂的网站| 亚洲福利在线播放| 久久国产成人亚洲精品影院 | 亚洲成电影在线观看青青| 精品亚洲成a人片在线观看| 久久水蜜桃亚洲av无码精品麻豆| 亚洲AV无码精品色午夜果冻不卡 | 亚洲性一级理论片在线观看| 亚洲另类视频在线观看| 91亚洲自偷在线观看国产馆| 亚洲AV无码乱码在线观看代蜜桃| 亚洲午夜精品一区二区公牛电影院| 亚洲乱码无限2021芒果| 2017亚洲男人天堂一| 亚洲性色精品一区二区在线| 亚洲人成色77777在线观看| 亚洲AV无码专区亚洲AV桃| 亚洲?V乱码久久精品蜜桃 | 亚洲精品97久久中文字幕无码| 亚洲视频在线一区二区| 亚洲中文字幕无码永久在线| 亚洲人成人一区二区三区| 亚洲AV午夜成人影院老师机影院| 亚洲丁香色婷婷综合欲色啪| 久久国产亚洲高清观看| 激情综合亚洲色婷婷五月| 亚洲国产欧美国产综合一区| 亚洲成a人片在线观看日本麻豆| 久久久久噜噜噜亚洲熟女综合| 亚洲日本va在线视频观看| 麻豆亚洲av熟女国产一区二|