Python 開發面試題

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 年以開源的形式被釋放出來。css

    Django 框架的核心組件有:html

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

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

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

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

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

    使用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加以標記。sql

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

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

    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 
 
 
相關文章
相關標籤/搜索