更新時間:2017年11月30日16時31分 來源:傳智播客 瀏覽次數(shù):
在面試中,有一定比例是字符串處理以及網(wǎng)絡編程那塊,當然了肯定還有些其他的問題,下面幫大家找了6道題目,接下來小試牛刀吧! 很簡單的哦。。
第1題:
Q:是否遇到過python的模塊間循環(huán)引用的問題,如何避免它?
A: 這是代碼結(jié)構(gòu)設計的問題,模塊依賴和類依賴
如果老是覺得碰到循環(huán)引用可能的原因有幾點:
1.可能是模塊的分界線劃錯地方了
2.可能是把應該在一起的東西硬拆開了
3.可能是某些職責放錯地方了
4.可能是應該抽象的東西沒抽象
總之微觀代碼規(guī)范可能并不能幫到太多,重要的是更宏觀的劃分模塊的經(jīng)驗技巧,推薦uml,腦圖,白板等等圖形化的工具先梳理清楚整個系統(tǒng)的總體結(jié)構(gòu)和職責分工
采取辦法,從設計模式上來規(guī)避這個問題,比如:
1. 使用 “__all__” 白名單開放接口
2. 盡量避免 import
第2題:
Q: Python中如何定義一個函數(shù)
A:
有2種方法:
第1種:
def func(arg, *args, **kwagrs): #普通函數(shù)
func_body
return
第2種:
lambda x: x **2 #匿名函數(shù)
第3題:
Q: 請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復元素
A:
>>> L1 = [4,1,3,2,3,5,1]
>>> L2 = []
>>> [L2.append(i) for i in L1 if i not in L2]
>>> print L2
[4, 1, 3, 2, 5]
運行結(jié)果如下圖:
第4題:
Q: Python是如何進行內(nèi)存管理的
A: python內(nèi)部使用引用計數(shù),來保持追蹤內(nèi)存中的對象,Python內(nèi)部記錄了對象有多少個引用,即引用計數(shù),當對象被創(chuàng)建時就創(chuàng)建了一個引用計數(shù),當對象不再需要時,這個對象的引用計數(shù)為0時,它被垃圾回收。所有這些都是自動完成,不需要像C一樣,人工干預,從而提高了程序員的效率和程序的健壯性。
第5題:
Q: 寫一個簡單的Python socket編程
A: socket是用來進行網(wǎng)絡編程用的接口,網(wǎng)絡編程分為服務器端和客戶端
服務器端代碼如下:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8001))
sock.listen(5)
while True:
conn, addr = sock.accept()
try:
conn.settimeout(5)
buff = conn.recv(1024)
if buff == '1':
conn.send('Hello, Client...')
else:
conn.send('Please, Go Out...')
except socket.timeout:
print 'Socket Time Out...'
finally:
conn.close()
客戶端代碼如下:
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8001))
time.sleep(2)
sock.send('1')
print sock.recv(1024)
sock.close()
第6題:
Q:src = "security/afafsff/?ip=123.4.56.78&id=45",請寫一段代碼用正則匹配出IP
A:
import re
src = "security/afafsff/?ip=123.4.56.78&id=45"
m = re.search('ip=(\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3})', src, re.S) # re.S 改變'.'的行為
print m.group(1)
# 輸出結(jié)果
>>>
123.4.56.78
運行結(jié)果如下: