FALLHUNTER

Web & Mobile, Design & Code

Python 面试常见问题

Tags:

 

这里总结一些Python的常见问题,也是Python面试经常提到的问题,它们都是比较 pythonic 的问题,最关键的,它们都是你应该能回答的问题,如果这些问题对你来说没有什么难度,请发一份简历到 join@mapiz.com

这里并不试图给出答案,很多问题只是看回答者对Python的理解,如果你对某个问题不够清楚,just google it. 如果你对很多问题都不清楚,你应该去读一下 Python in a nutshell

  • 数据类型相关
    list与tuple的区别
    dictionary与set的区别
  • 你知不知道Python的for语句后面可以跟一个else,它是什么意思?
  • list comprehension 是怎么回事,为什么要用它?为什么不用它?
    (我一直记不住对应的中文叫什么,列表推导?)
    即:
    [ x*x for x in somelist ]
    其中 somelist 是一个list。
    这行代码构建了一个list,其每个元素是somelist里面每个元素与自身做*运算
    复杂一点的,还可以:
    [ somefunction(x) for x in somelist if anotherfunction(x) ]
    即,可以用anotherfunction 过滤 somelist
  • 什么是 tuple 解包赋值?

    a,b = somefunction()
    要实现这个效果,somefunction应该返回一个tuple,在赋值时Python会自动解包。
    当然,这不仅仅限于函数返回值的情况,像
    a,b=(“value1”,"value2“,) 也是可以的
  • 类似 __foo__ 这样的东西是什么玩意?
    这是python里面的特殊函数或属性,常见的有
    __name__
    __main__
    __file__
    __get__()
    __set__()
    这些你都应该知道。
  • iterators/generators 怎样实现一个 iterator 或 generator ?
  • map/reduce/sum ?
    如果你第一次听到 map reduce 是从Google著名的分布式框架,没有关系,因为现在的计算机教育已经本末倒置,这不是你的错,但是如果你没有去研究一下它为什么叫 MapReduce , 这就是你的错了。如果你现在是第一次见到 map reduce ,赶紧去研究一下,我想你很可能对函数式编程一无所知。
  • lambda 是什么东西 ?
  • 有没有听说过 decorator ?
  • 函数定义时在参数前面加上 * 或 ** 是什么意思? 函数调用时在参数前面加上 * 或 ** 又是什么意思?
  • 怎样实现类的静态方法?
  • __new__ 与 __init__ 有什么区别?
  • “class Foo”  与  “class Foo(object)” 有什么不同
  • 文件操作
    Python里面有个非常简单的文件按行操作方式
    for line in open(file_name):
          print line

    但是要注意 line 是包含行尾的 \n  的

  • 异常处理
    python里面到处都是异常,这是Python的设计哲学,如果你打算学习Python,请将异常变成你的思维方式。
    你可能很容易学会  try … except .. 和  try … finally..  但是 try … except … else 是什么意思?
  • 对类库的熟悉程度
    Python 的强大很大程度上来源于其无数强大的类库,熟悉类库的实用总是对实际的工作帮助甚大。
    类库问题也是一个很重要的常见问题,如:
    实现xxx功能,有哪些类库可以用?
    常见的应该了解的类库大概有:
    正则表达式类库 re
    系统类库 os, os.path
    日期时间 datetime
    多线程 Queue
    单元测试 doctest, unittest
    日志 logging ( 我非常喜欢这个库 )
    命令行参数处理 optparse ( 这个库太棒了 )
    命令行框架 cmd ( 用这个库你会发现 写Python 真的是一种享受 )
    网络 urlparse, urllib, curl, httplib,socket
    服务器 SocketServer ( python 自己含有一个简单的socket服务器!而且支持多种网络模型(tcp/udp, thread/process)! )
    XML/HTML
    解析 xml.dom, xml.sax, BeautifulSoup
    还有很多很多…
    当然,你没必要全都用过它们,但是你应该知道它们的存在,除非你愿意花上几个星期来实现一个本该几分钟就完成的功能。

最后,请相信我,Python in a nutshell 是本好书,它能解决以上几乎所有的问题,当然,它能解决的问题远不只以上这些。

Tags:

2 Responses to “Python 面试常见问题”


  1. Kid
    on Apr 2nd, 2010
    @ 17:30

    Hi

    最后提供的Python in a Nutshell的链接下载不了,stopdownloading报django错误
    :)

    下面是错误信息:
    TypeError at /book/dl/34

    Request Method: GET
    Request URL: http://www.stopdownloading.com/book/dl/34
    Exception Type: TypeError
    Exception Value: int argument required
    Exception Location: /home/sdadmin/webapps/sdapp/lib/python2.5/django/views/generic/simple.py in redirect_to, line 39


  2. fallhunter
    on Apr 16th, 2010
    @ 15:35

    多谢

Leave a Reply

© 2009 FALLHUNTER. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.