1.為什么學習python?
3.Python和Java、PHP、C、C#、C++等其他語言的對比?
C語言由于其底層操作特性和歷史的積累,在嵌入式領域是當之無愧的王者。
PHP跨平臺,性能優越,跟linux/unix結合比跟windows結合性能強45%,開發成本低,php5已經有
成熟的面向對象體系,適合開發大型項目淘寶網,Yahoo,163,sina等等大型門戶,很多選用
PHP來作為他們的開發語言。
JAVA的優點:1.簡單性 2.面向對象性(面向對象的程度可以達到95%)3.健壯性4.跨平臺性
5.高性能(自動垃圾回收機制) 6.多線程 7.動態性 8.安全性
========================================================================
4.簡述解釋型和編譯型編程語言
5.python解釋器種類及其特點
cpython:這個解釋器是用C語言開發的,所以叫cpython,在命名行下運行python,就是啟動cpython
解釋器,cpython是使用最廣的python解釋器。
jython:jython是運行在java平臺上的python解釋器,可以直接把python代碼編譯成java字節碼執行。
Ipython:Ipython是基于cpython智商的一個交互式解釋器,也就是說,Ipython只是在交互方式上
有所增強,但是執行python代碼的功能和cpython是完全一樣的,好比很多國產瀏覽器雖然外觀
不同,但內核其實調用了IE。
6.位和字節的關系
7.b、B、KB、MB、GB 的關系?
8.請至少列舉5個 PEP8 規范(越多越好)。
9.通過代碼實現如下轉換:
上課補充的代碼轉換
print(bin(3)) #十進制轉成二進制,0b11
print(oct(8)) #十進制轉成八進制,0o10
print(10) #10
print(hex(16)) #十進制轉成十六進制,0x10
二進制轉換成十進制:v = “0b1111011”
#先將其轉換為字符串,再使用int函數,指定進制轉換為十進制。
print(int("0b1111011",2))
#值為123
十進制轉換成二進制:v = 18
print("轉換為二進制為:", bin(18))
#轉換為二進制為: 0b10010
八進制轉換成十進制:v = “011”
print(int("011",8))
十進制轉換成八進制:v = 30
print("轉換為八進制為:", oct(30))
#轉換為八進制為: 0o36
十六進制轉換成十進制:v = “0x12”
print(int("0x12",16))
#18
十進制轉換成十六進制:v = 87
print("轉換為十六進制為:", hex(87))
轉換為十六進制為: 0x57
10.請編寫一個函數實現將IP地址轉換成一個整數。
如 10.3.9.12 轉換規則為:
10 00001010
3 00000011
9 00001001
12 00001100
再將以上二進制拼接起來計算十進制結果:00001010 00000011 00001001 00001100 = ?
11.python遞歸的最大層數?
12.求結果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1?v4 = 0 and 2 or 1v5 = 0 and 2 or 1 or 4?v6 = 0 or Flase and 1
這題不會
13.ascii、unicode、utf-8、gbk 區別?
14.字節碼和機器碼的區別?
字節碼
字節碼是一種中間碼
字節碼通常指的是已經經過編譯,但與特定機器碼無關,需要直譯器轉譯后才能成為機器碼的中間代碼。字節碼通常不像源碼一樣可以讓人閱讀,而是編碼后的數值常量、引用、指令等構成的序列。
字節碼主要為了實現特定軟件運行和軟件環境、硬件環境無關。字節碼的實現方式是通過編譯器和虛擬機器。編譯器將源碼編譯成字節碼,特定平臺上的虛擬機器將字節碼轉譯為可以直接執行的指令。字節碼的典型應用為Java語言。
總結:字節碼是一種中間狀態(中間碼)的二進制代碼(文件)。需要直譯器轉譯后才能成為機器碼。
15.三元運算規則以及應用場景?
16.列舉 Python2和Python3的區別?
pass
17.用一行代碼實現數值交換:
a = 1
b = 2
a,b=b,a
print(a,b) #a=2,b=1
18.Python3和Python2中 int 和 long的區別?
long整數類型唄python3廢棄,統一使用int
19.xrange和range的區別?
20.文件操作時:xreadlines和readlines的區別?
二者使用時相同,但返回類型不同,xreadlines返回的是一個生成器,readlines返回的是list
21.列舉布爾值為False的常見值?
0 空 none
22.字符串、列表、元組、字典每個常用的5個方法?
23.lambda表達式格式以及應用場景?
24.pass的作用?
25.*arg和**kwarg作用
26.is和==的區別
is對比的是值,==對比的是內存地址
未完待續
27.簡述Python的深淺拷貝以及應用場景?
待整理
28.python垃圾回收機制
29.Python的可變類型和不可變類型?
python的每個對象分為可變和不可變
可變:列表,字典
不可變:數字,字符串,元祖
對不可變類型的變量重新賦值,實際上是重新創建一個不可變類型的對象,并將原來的變量重新指向新創
建的對象(如果沒有其他變量引用原有對象的話(即引用計數為0),原有對象就會被回收)。
不可變類型
30.求結果
未完待續
31.
未完待續
32.列舉常見的內置函數
33.filter、map、reduce的作用?
34.一行代碼實現9*9乘法表
35.如何安裝第三方模塊?以及用過哪些第三方模塊?
36.至少列舉8個常用模塊都有那些?
37.re的match和search區別?
38.什么是正則的貪婪匹配?
39.求結果:? a. [ i % 2 for i in range(10) ]? b. ( i % 2 for i in range(10) )
40.求結果:? a. 1 or 2? b. 1 and 2? c. 1 < (2==2)? d. 1 < 2 == 2
41.def func(a,b=[]) 這種寫法有什么坑?
42.如何實現 “1,2,3” 變成 [‘1’,’2’,’3’] ?
43.如何實現[‘1’,’2’,’3’]變成[1,2,3] ?
44.比較: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的區別?
45.如何用一行代碼生成[1,4,9,16,25,36,49,64,81,100] ?
46.一行代碼實現刪除列表中重復的值 ?
47.如何在函數中設置一個全局變量 ?
48.logging模塊的作用?以及應用場景?
通過log的分析,可以方便用戶了解系統或軟件、應用的運行情況;如果你的應用log足夠豐富,
也可以分析以往用戶的操作行為、類型喜好、地域分布或其他更多信息;如果一個應用的log同
時也分了多個級別,那么可以很輕易地分析得到該應用的健康狀況,及時發現問題并快速定位、
解決問題,補救損失。簡單來講就是,我們通過記錄和分析日志可以了解一個系統或軟件程序
運行情況是否正常,也可以在應用程序出現故障時快速定位問題。比如,做運維的同學,在接
收到報警或各種問題反饋后,進行問題排查時通常都會先去看各種日志,大部分問題都可以在
日志中找到答案。再比如,做開發的同學,可以通過IDE控制臺上輸出的各種日志進行程序調
試。對于運維老司機或者有經驗的開發人員,可以快速的通過日志定位到問題的根源。可見,
日志的重要性不可小覷。日志的作用可以簡單總結為以下3點:
程序調試
了解軟件程序運行情況,是否正常
軟件程序運行故障分析與問題定位
如果應用的日志信息足夠詳細和豐富,還可以用來做用戶行為分析,如:分析用戶的操作行為、
類型洗好、地域分布以及其它更多的信息,由此可以實現改進業務、提高商業利益。
logging模塊默認定義了以下幾個日志等級,它允許開發人員自定義其他日志級別,但是這是不
被推薦的,尤其是在開發供別人使用的庫時,因為這會導致日志級別的混亂。
開發應用程序或部署開發環境時,可以使用DEBUG或INFO級別的日志獲取盡可能詳細的日志信息來進行開發或部署調試;
應用上線或部署生產環境時,應該使用WARNING或ERROR或CRITICAL級別的日志來降低機器的I/O壓力和提高獲取錯誤
日志信息的效率。日志級別的指定通常都是在應用程序的配置文件中進行指定的。
49.請用代碼簡答實現stack 。
50.常用字符串格式化哪幾種?
51.簡述 生成器、迭代器、可迭代對象 以及應用場景?
52.用Python實現一個二分查找的函數。
nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,371]
def search(search_num,nums):
print(nums)
if len(nums) == 0:
print('not exists')
return
mid_index=len(nums) // 2
if search_num > nums[mid_index]:
# in the right
nums=nums[mid_index+1:]
search(search_num,nums)
elif search_num < nums[mid_index]:
# in the left
nums=nums[:mid_index]
search(search_num,nums)
else:
print('find it')
search(31,nums)
53.談談你對閉包的理解?
54.os和sys模塊的作用?
55.如何生成一個隨機數?
56.如何使用python刪除一個文件?
57.談談你對面向對象的理解?
58.Python面向對象中的繼承有什么特點?
59.面向對象深度優先和廣度優先是什么?
60.面向對象中super的作用?
61.是否使用過functools中的函數?其作用是什么?
62.列舉面向對象中帶爽下劃線的特殊方法,如:__new__、__init__
63.如何判斷是函數還是方法?
函數:函數是封裝了一些獨立的功能,可以直接調用,python內置了許多函數,同時可以自建函數
來使用。
方法:方法和函數類似,同樣封裝了獨立的功能,但是方法是需要通過對象來調用的,表示針對
這個對象要做的操作,使用時采用點方法。
64.靜態方法和類方法區別?
65.列舉面向對象中的特殊成員以及應用場景
66.1、2、3、4、5 能組成多少個互不相同且無重復的三位數
67.什么是反射?以及應用場景?
68.metaclass作用?以及應用場景?
69用盡量多的方法實現單例模式。
70.裝飾器的寫法以及應用場景。
裝飾器的寫法待補充
71.異常處理寫法以及如何主動跑出異常(應用場景)
72.什么是面向對象的mro
73.isinstance作用以及應用場景?
74.寫代碼并實現:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would
have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1]
75.json序列化時,可以處理的數據類型有哪些?如何定制支持datetime類型?
76.json序列化時,默認遇到中文會轉換成unicode,如果想要保留中文怎么辦?
不理解
77.什么是斷言?應用場景?
78.有用過with statement嗎?它的好處是什么?
79.使用代碼實現查看列舉目錄下的所有文件。
80.簡述 yield和yield from關鍵字。