首頁技術(shù)文章正文

傳智播客Python培訓(xùn)專家:6個(gè)常見面試題

更新時(shí)間:2017-12-07 來源:黑馬程序員 瀏覽量:

在面試中,有一定比例是字符串處理以及網(wǎng)絡(luò)編程那塊,當(dāng)然了肯定還有些其他的問題,下面幫大家找了6道題目,接下來小試牛刀吧! 很簡(jiǎn)單的哦。。

第1題:

Q:是否遇到過python的模塊間循環(huán)引用的問題,如何避免它?

A: 這是代碼結(jié)構(gòu)設(shè)計(jì)的問題,模塊依賴和類依賴

如果老是覺得碰到循環(huán)引用可能的原因有幾點(diǎn):

1.可能是模塊的分界線劃錯(cuò)地方了

2.可能是把應(yīng)該在一起的東西硬拆開了

3.可能是某些職責(zé)放錯(cuò)地方了

4.可能是應(yīng)該抽象的東西沒抽象

總之微觀代碼規(guī)范可能并不能幫到太多,重要的是更宏觀的劃分模塊的經(jīng)驗(yàn)技巧,推薦uml,腦圖,白板等等圖形化的工具先梳理清楚整個(gè)系統(tǒng)的總體結(jié)構(gòu)和職責(zé)分工

采取辦法,從設(shè)計(jì)模式上來規(guī)避這個(gè)問題,比如:

1. 使用 “__all__” 白名單開放接口

2. 盡量避免 import

第2題:

Q: Python中如何定義一個(gè)函數(shù)

A:

有2種方法:

第1種:

def func(arg, *args, **kwagrs): #普通函數(shù)

func_body

return

第2種:

lambda x: x **2 #匿名函數(shù)

第3題:

Q: 請(qǐng)寫出一段Python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素

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]

運(yùn)行結(jié)果如下圖:

Python培訓(xùn)

第4題:

Q: Python是如何進(jìn)行內(nèi)存管理的

A: python內(nèi)部使用引用計(jì)數(shù),來保持追蹤內(nèi)存中的對(duì)象,Python內(nèi)部記錄了對(duì)象有多少個(gè)引用,即引用計(jì)數(shù),當(dāng)對(duì)象被創(chuàng)建時(shí)就創(chuàng)建了一個(gè)引用計(jì)數(shù),當(dāng)對(duì)象不再需要時(shí),這個(gè)對(duì)象的引用計(jì)數(shù)為0時(shí),它被垃圾回收。所有這些都是自動(dòng)完成,不需要像C一樣,人工干預(yù),從而提高了程序員的效率和程序的健壯性。

第5題:

Q: 寫一個(gè)簡(jiǎn)單的Python socket編程

A: socket是用來進(jìn)行網(wǎng)絡(luò)編程用的接口,網(wǎng)絡(luò)編程分為服務(wù)器端和客戶端

服務(wù)器端代碼如下:

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",請(qǐng)寫一段代碼用正則匹配出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

運(yùn)行結(jié)果如下:

Python培訓(xùn)

本文版權(quán)歸黑馬程序員人工智能+Python學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員人工智能+Python培訓(xùn)學(xué)院


首發(fā):http://python.itheima.com/


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!