传智播客旗下品牌:  黑马程序员  |  博学谷  |  传智专修学院

改变中国IT教育,我们正在行动     全国咨询热线:400-618-4000

Python培训专家:6个常见面试题

更新时间:2017年11月10日11时28分 来源:传智播客

在面试中,有一定比例是字符串处理以及网络编程那块,当然了肯定还有些其他的问题,下面帮大家找了6道题目,接下来小试牛刀吧! 很简单的哦。。。【注:需要更多免费学习视频+资料+源码,请加QQ:3276250747】

第1题:

Q:是否遇到过python的模块间循环引用的问题,如何避免它?

A: 这是代码结构设计的问题,模块依赖和类依赖

如果老是觉得碰到循环引用可能的原因有几点:

1.可能是模块的分界线划错地方了

2.可能是把应该在一起的东西硬拆开了

3.可能是某些职责放错地方了

4.可能是应该抽象的东西没抽象

总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工

采取办法,从设计模式上来规避这个问题,比如:

1. 使用 “__all__” 白名单开放接口

2. 尽量避免 import

第2题:

Q: Python中如何定义一个函数

A:

有2种方法:

第1种:

def func(arg, *args, **kwagrs): #普通函数

func_body

return

第2种:

lambda x: x **2 #匿名函数

第3题:

Q: 请写出一段Python代码实现删除一个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]

运行结果如下图:

第4题:

Q: Python是如何进行内存管理的

A: python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。所有这些都是自动完成,不需要像C一样,人工干预,从而提高了程序员的效率和程序的健壮性。

第5题:

Q: 写一个简单的Python socket编程

A: socket是用来进行网络编程用的接口,网络编程分为服务器端和客户端

服务器端代码如下:

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)

# 输出结果

>>>

123.4.56.78

运行结果如下: