常见题简述

Python ???

  • Python是一种解释型语言。与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。
  • Python是动态类型语言。指的是在声明变量时,不需要说明变量的类型。
  • Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符(access specifier,类似C++中的public和private),这么设计的依据是“大家都是成年人了”。
  • 在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。
  • Python代码编写快,但是运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。numpy就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。
  • Python用途非常广泛——网络应用,自动化,科学建模,大数据应用,等等。它也常被用作“胶水语言”,帮助其他语言和组件改善运行状况。
  • Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

Python 2.7.x 和 3.x 版本的重要区别

  • 使用future模块
  • print函数
  • 整数除法
  • Unicode
  • xrange
  • 触发异常
  • 处理异常
  • next()函数和.next()方法
  • For循环变量与全局命名空间泄漏
  • 比较无序类型
  • 使用input()解析输入内容
  • 返回可迭代对象,而不是列表

http://python.jobbole.com/80006/

变量、引用、可变对象、不可变对象

所有的变量都可以理解是内存中一个对象的“引用”。
这里记住的是类型是属于对象的,而不是变量。
对象有两种,“可更改”(mutable)“不可更改”(immutable)对象。
在python中,strings, tuples,numbers是不可更改的对象,而list,dict等则是可以修改的对象。

不可更改的对象,能当做字典的key,可更改对象不能做字典的key。

Http请求头

  • Accept : 指浏览器或其他客户可以接爱的MIME文件格式。可以根据它判断并返回适当的文件格式。
  • Accept-Charset:指浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.
  • Accept-Language:指出浏览器可以接受的语言种类,如en或en-us,指英语。
  • Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。
  • Cache-Control:设置关于请求被代理服务器存储的相关选项。一般用不到。
  • Connection:用来告诉服务器是否可以维持固定的HTTP连接。HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接。
  • Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。
  • Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

常见响应状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误——请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码状态描述说明
200OK客户端请求成功
400Bad Request客户端请求有语法错误,不能被服务器所理解
401Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403Forbidden服务器收到请求,但是拒绝提供服务
404Not Found请求资源不存在,输入了错误的URL
500Internal Server Error服务器发生不可预期的错误
503Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

面向切面编程AOP和装饰器

  • AOP(Aspect Oriented Programming)的缩写,意为:面向切面编程
  • 装饰器是一个很著名的设计模式(装饰者模式),经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。
  • 概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

http://taizilongxu.gitbooks.io/stackoverflow-about-python/content/3/README.html

新式类和旧式类

  • 新式类很早在2.2就出现了,所以旧式类完全是兼容的问题.
  • Python3里的类全部都是新式类.
  • 新式类是在创建的时候继承内置object对象,而经典类是直接声明的。
  • MRO问题(新式类是广度优先,旧式类是深度优先)

http://www.cnblogs.com/btchenguang/archive/2012/09/17/2689146.html

可以帮助查找python的bug和进行静态的代码分析的工具

  • PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
  • Pylint是另外一个工具可以进行codingstandard检查

单下划线和双下划线

  • __foo__ : 一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突.
  • _foo : 一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.
  • __foo : 这个有真正的意义:解析器用 _classname__foo来代替这个名字,以区别和其他类相同的命名.

进程池基本流程

1)实例化进程池 p=Pool()。
2)通过apply_async()函数向进程池中添加进程。
3)通过p.close()函数关闭进程池,关闭之后无法继续添加新的进程。
4)通过p.join()函数等待所有进程被取出并执行完毕。
import multiprocessing
import time

def func(msg):
    print(msg)
    time.sleep(2)
    print("end")

if __name__ == "__main__":
    pool = multiprocessing.Pool(processes = 3)
    for i in range(5):
        msg = "hello %d" %(i)
        pool.apply_async(func, (msg, ))   #维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去

    print "Mark~~~~~~~~~~~~~~~~~~~~~~"
    pool.close()
    pool.join()   #调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束
    print "Sub-process(es) done."
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值