1.有一段python的编码程序如下,请问经过该编码的字符串的解码顺序是:(D)
urllib.quote(line.decode("gbk").encode("utf-16"))
A.gbk utf16 url解码
B.gbk url解码 utf16
C.url解码 gbk utf16
D.url解码 utf16 gbk
解析:
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk
2.下面有关计算机基本原理的说法中,正确的一项是:(D)
A.堆栈(stack)在内存中总是由高地址向低地址方向增长的。
B.发生函数调用时,函数的参数总是通过压入堆栈(stack)的方式来传递的。
C.在64位计算机上,Python3代码中的int类型可以表示的最大数值是2^64-1。
D.在任何计算机上,Python3代码中的float类型都没有办法直接表示[0,1]区间内的所有实数。
解析:
A:Intel中规定,栈是从高地址向低地址生长的;堆是由低地址向高地址增长的。ARM就没有规定的很死,可以选择栈是升序还是降序。
B:x64下面在x64下函数调用的前4个参数总是放在寄存器中传递,剩余的参数则压入堆栈中。而x86上则是全部压入堆栈中(除了fastcall方式)。这4个用于存放参数的寄存器分别是:存放整数参数的RCX,RDX,R8,R9;存放浮点数参数的XMM0,XMM1,XMM2,XMM3。
C:32位机器上,整数位数取值范围-2^31~2^31-1,即-2147483648~2147483647;64位系统上,整数位数取值范围-2^63~2^63-1,即-9223372036854775808~9223372036854775807。
D:只要知道,计算机里的浮点类型只是一种用离散方式近似表达实数区间的方法,就可以知道,Python 里的 float 是不可能涵盖 [0,1] 区间内的所有实数的。即,只是---近似---表示,不是真正的能表达实数区间。
3.对于python中__new__和__init__的区别,下列说法正确的是:(ABCD)
A.__new__是一个静态方法,而__init__是一个实例方法
B.__new__方法会返回一个创建的实例,而__init__什么都不返回
C.只有在__new__返回一个cls的实例时,后面的__init__才能被调用
D.当创建一个新实例时调用__new__,初始化一个实例时用__init__
解析:
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
4.下列关于python socket操作叙述正确的是:(CD)
A.使用recvfrom()接收TCP数据
B.使用getsockname()获取连接套接字的远程地址
C.使用connect()初始化TCP服务器连接
D.服务端使用listen()开始TCP监听
解析:
sk.recv(bufsize[,flag]):接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。
sk.recvfrom(bufsize[.flag]):与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。
sk.getsockname():返回套接字自己的地址。通常是一个元组(ipaddr,port)
sk.connect(address):连接到address处的套接字。address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
sk.listen(backlog):开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。
5.对于Python类中单下划线_foo、双下划线__foo与__foo__的成员,说法正确的是:(ABC)
A._foo 不能直接用于’from module import *’
B.__foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
C.__foo__代表python里特殊方法专用的标识
D.__foo 可以直接用于’from module import *’
解析:
1)example:前后无下划线表示该变量、函数、成员或方法公有,可以以任何形式访问。
2)_example:前置单下划线表示该内容受保护。如果是变量或函数,在from some_module import *这种情况下,不会被导入。如果是成员或者方法,仅允许类内部使用及该类的子类继承。
3)__example:前置双下划线表示该变量、函数、成员或方法私有,无法被外部直接使用。类的私有成员及方法无法被子类继承,但本类仍可以用a_instance._ClassName__MethodName()来调用。
4)__example__:前后双下划线的命名方式用于python里的特殊方法。
5)example_:后置单下划线,用于避免和Python关键词冲突,无特殊含义,例如:int_。