1. 程式人生 > >Python 開發面試題

Python 開發面試題

方框 port equal 類別 透明度 classes 外鍵 glob dex

Python部分

  1. 將一個字符串逆序,不能使用反轉函數
  2. 求從10到100中能被3或5整除的數的和
  3. What is Python? What are the benefits of using Python?
  4. What is PEP 8?
  5. What is pickling and unpickling?
  6. How Python is interpreted?
  7. What are the tools that help to find bugs or perform static analysis?
  8. What are Python decorators?
  9. What is the difference between list and tuple?
  10. What are the built-in type does python provides?
  11. What is namespace in Python?
  12. What is lambda in Python?
  13. In Python what are iterators?
  14. What is unittest in Python?
  15. What are generators in Python?
  16. How can you copy an object in Python?
  17. What is module and package in Python?
  18. Mention what are the rules for local and global variables in Python?
  19. Explain how can you make a Python Script executable on Unix?
  20. Explain how to delete a file in Python?
  21. How can you share global variables across modules?
  22. Explain how can you generate random numbers in Python?
  23. Explain how can you access a module written in Python from C?
  24. Mention the use of // operator in Python?
  25. Mention five benefits of using Python?
  26. a=1, b=2, 不用中間變量交換a和b的值
  27. 請用自己的算法, 按升序合並如下兩個list, 並去除重復的元素 list1 = [2, 3, 8, 4, 9, 5, 6] list2 = [5, 6, 10, 17, 11, 2]
  28. 寫一個簡單的python socket編程
  29. 請描述set的用途並舉例說明
  30. 請簡述python2.x 與python3.x的主要區別
  31. 簡述python新式類和舊式類的區別
  32. Python裏面search()和match()的區別?
  33. 用Python匹配HTML tag的時候,<.*>和<.*?>有什麽區別?
  34. 請簡述線程\進程\協程的特性
  35. 請簡述你對python閉包的理解
  36. 靜態函數, 類函數, 成員函數的區別?
  37. Python和c和Java的對比
  38. Python的內存管理
  39. Python的裝飾器內部實現原理
  40. Python的面向對象和Java面向對象的區別
  41. Python面向對象的靜態方法
  42. Python為啥是動態語言
  43. 動態語言和靜態語言的區別
  44. 描述你知道的設計模式及各模式特點
  45. 算法(冒泡,二叉樹,堆排序等)
  46. Python的線程
  47. Python的進程
  48. Python的線程池
  49. Python的面向對象和c面向過程的區別
  50. 為什麽c沒有面向對象依然可以封裝函數
  51. 請用多線程並發爬取3個知名網站的首頁
  52. 解釋一下 Django 和 Tornado 的關系、差別

    Django源自一個在線新聞 Web站點,於 2005 年以開源的形式被釋放出來。

    Django 框架的核心組件有:

    用於創建模型的對象關系映射為最終用戶設計的完美管理界面一流的 URL 設計設計者友好的模板語言緩存系統等等

    它鼓勵快速開發,並遵循MVC設計。Django遵守 BSD版權,最新發行版本是Django

    1.4,於2012年03月23日發布.Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼復用,多個組件可以很方便的以“插件”形式服務於整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發和DRY(Do Not RepeatYourself)原則。

    Tornado是 FriendFeed使用的可擴展的非阻塞式 web 服務器及其相關工具的開源版本。這個 Web 框架看起來有些像 web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式服務器環境,這個 Web 框架還包含了一些相關的有用工具和優化。

    Tornado 和現在的主流 Web 服務器框架(包括大多數Python 的框架)有著明顯的區別:它是非阻塞式服務器,而且速度相當快。得利於其 非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數以千計的連接,這意味著對於實時 Web服務來說,Tornado 是一個理想的 Web 框架。我們開發這個 Web 服務器的主要目的就是為了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用裏每一個活動用戶都會保持著一個服務器連接。(關於如何擴容 服務器,以處理數以千計的客戶端的連接的問題。
  53. 解釋下django-debug-toolbar的使用

    使用django開發站點時,可以使用django-debug-toolbar來進行調試。在settings.py中添加’debug_toolbar.middleware.DebugToolbarMiddleware’到項目的MIDDLEWARE_CLASSES 內。
  54. 如何進行Django單元測試 Django的單元測試使用python的unittest模塊,這個模塊使用基於類的方法來定義測試。類名為django.test.TestCase,繼承於python的unittest.TestCase。 from django.test import TestCase from myapp.models import Animal class AnimalTestCase(TestCase): def setUp(self): Animal.objects.create(name="lion", sound="roar") Animal.objects.create(name="cat", sound="meow") def test_animals_can_speak(self): """Animals that can speak are correctly identified""" lion = Animal.objects.get(name="lion") cat = Animal.objects.get(name="cat") self.assertEqual(lion.speak(), ‘The lion says "roar"‘) self.assertEqual(cat.speak(), ‘The cat says "meow"‘) 執行目錄下所有的測試(所有的test*.py文件):運行測試的時候,測試程序會在所有以test開頭的文件中查找所有的test cases(inittest.TestCase的子類),自動建立測試集然後運行測試
    python manage.py testanimals.tests
  55. 解釋下Http協議 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。
    HTTP協議的主要特點可概括如下:
    1.支持客戶/服務器模式。

    2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

    3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

    4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。采用這種方式可以節省傳輸時間。

    5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
  56. 解釋下Http請求頭和常見響應狀態碼

    Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式。可以根據它判斷並返回適當的文件格式。

    Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認值是ISO-8859-1.

    Accept-Language:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。

    Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是為了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查文件格式。

    Cache-Control:設置關於請求被代理服務器存儲的相關選項。一般用不到。

    Connection:用來告訴服務器是否可以維持固定的HTTP連接。HTTP/1.1使用Keep-Alive為默認值,這樣,當瀏覽器需要多個文件時(比如一個HTML文件和相關的圖形文件),不需要每次都建立連接。

    Content-Type:用來表名request的內容類型。可以用HttpServletRequest的getContentType()方法取得。

    Cookie:瀏覽器用這個屬性向服務器發送Cookie。Cookie是在瀏覽器中寄存的小型數據體,它可以記載和服務器相關的用戶信息,也可以用來實現會話功能。

    狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:

    1xx:指示信息–表示請求已接收,繼續處理

    2xx:成功–表示請求已被成功接收、理解、接受

    3xx:重定向–要完成請求必須進行更進一步的操作

    4xx:客戶端錯誤–請求有語法錯誤或請求無法實現

    5xx:服務器端錯誤–服務器未能實現合法的請求

    常見狀態代碼、狀態描述、說明:

    200 OK //客戶端請求成功

    400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解

    401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用

    403 Forbidden //服務器收到請求,但是拒絕提供服務

    404 Not Found //請求資源不存在,eg:輸入了錯誤的URL

    500 Internal Server Error //服務器發生不可預期的錯誤

    503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常
  57. django models 中如何實現反向查找? 如a表中通過外鍵關聯了b表, 那通過b表如何反查到a表中有多少記錄關聯到了b表中的某條記錄
  58. django orm如何輸入自定義的原少sql語句?
  59. 描述django orm query api中 Q語句與F語句的作用及區別
  60. django中如何實現ajax在post數據時出現的csrf 403 forbidden的問題?描述解決步驟
  61. django 自定義標簽tag的作用,及配置步驟

前端篇

  1. 有哪項方式可以對一個DOM設置它的CSS樣式? ?外部樣式表,引入一個外部css文件
    ?內部樣式表,將css代碼放在 <head> 標簽內部
    ?內聯樣式,將css樣式直接定義在 HTML 元素內部
  2. CSS都有哪些選擇器? ?派生選擇器(用HTML標簽申明)
    ?id選擇器(用DOM的ID申明)
    ?類選擇器(用一個樣式類名申明)
    ?屬性選擇器(用DOM的屬性申明,屬於CSS2,IE6不支持,不常用,不知道就算了)
    除了前3種基本選擇器,還有一些擴展選擇器,包括 ?後代選擇器(利用空格間隔,比如div .a{ })
    ?群組選擇器(利用逗號間隔,比如p,div,#a{ }) 
    那麽問題來了,CSS選擇器的優先級是怎麽樣定義的?
  3. CSS中可以通過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視範圍內?
    最基本的: 設置display屬性為none,或者設置visibility屬性為hidden 技巧性: 設置寬高為0,設置透明度為0,設置z-index位置在-1000
  4. rgba()和opacity的透明效果有什麽不同? 答案: rgba()和opacity都能實現透明效果,但最大的不同是opacity作用於元素,以及元素內的所有內容的透明度,而rgba()只作用於元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)
  5. px和em的區別? px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,並且em會繼承父級元素的字體大小。 瀏覽器的默認字體高都是16px。所以未經調整的瀏覽器都符合: 1em=16px。那麽12px=0.75em, 10px=0.625em。
  6. 已知ID的Input輸入框,希望獲取這個輸入框的輸入值,怎麽做?(不使用第三方框架)
  7. 希望獲取到頁面中所有的checkbox怎麽做?(不使用第三方框架)
  8. 設置一個已知ID的DIV的html內容為xxxx,字體顏色設置為黑色(不使用第三方框架)
  9. 如何實現跨域請求?請描述實現原理
  10. 用js實現隨機選取10--100之間的10個數字,存入一個數組,並排序。
  11. 原生JS的window.onload與Jquery的$(document).ready(function(){})有什麽不同?如何用原生JS實現Jq的ready方法?
    1. window.onload()方法是必須等到頁面內包括圖片的所有元素加載完畢後才能執行。
    2. $(document).ready()是DOM結構繪制完畢後就執行,不必等到加載完畢。
  12. 更多js http://blog.jobbole.com/78346/#q3
py 30 questions http://career.guru99.com/top-25-python-interview-questions/

Python 開發面試題