发布于2019-07-30 10:02 阅读(3485) 评论(0) 点赞(1) 收藏(5)
最近参加了几场招聘,发现好多人的一些基础知识不是很扎实,做的题很多都是错误的,因此找了一些我们公司面试过程中的一些最基本的面试题供大家参考,希望各位都能找到一个好的工作。今天给大家先分享的是关于Python语言方面的一些面试题,后续我会跟大家分享数据库,网路,操作系统以及数据结构方面的一些面试题,希望大家可以持续的关注。
高级语言 :无需考虑如何管理你的程序使用的内存一类的底层细节等。 可移植性 :由于Python的开源本质,它已经被移植在许多平台上。 面向对象 :Python既支持面向过程的编程也支持面向对象的编程。 可扩展性 :Python编辑的程序中可以直接调用部分C或C++ 开发的程序。 可嵌入性 :可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。 丰富的库 : Python庞大的标准库可以帮助处理各种工作,几乎无所不能。 规范的代码 : Python不需要编译成二进制代码的强制缩进方式,使得代码具有较好的可读性。
1.编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。如C、C++、Delphi、Pascal,Fortran。 2.解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。如Java、Basic 3.通俗的讲,编译语言是在编译后可以直接运行,而解释语言的执行需要一个解释环境。
最小的存储单位称为位(bit):
只能容纳两个值(0或1)之一,不能在一个位中存储更多的信息。位是计算机存储的基本单位。
字节(byte)是常用的计算机存储单位。
字节的标准定义:一个字节均为8位。由于上述所讲每个位或者是0或者是1,所以一个8位的字节包含256种可能的0,1组合
1024B=1KB,1024KB=1MB, 1024MB=1GB,1024GB=1TB. 他们是计算机中表示容量的单位。都是2的10次方进制的。 他们可以用来表示内存、硬盘等的容量。
如 10.3.9.12 转换规则为:
10 00001010 3 00000011 9 00001001 12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
def ipTodec(ip): """ :param ip: char IP地址:192.168.1.1 :return: """ dec_ips = ip.split('.') bin_ips = " " for decnum in dec_ips: bin_ele = bin(int(decnum))[2::] bin_ips += bin_ele print(bin_ips) print(int(bin_ips, 2))
Python确实有递归次数限制,默认最大次数为1000 但可以使用下面的方法来指定次数。
sys.setrecursionlimit(limit)
v1 = 1 or 3 v2 = 1 and 3 v3 = 0 and 2 and 1 v4 = 0 and 2 or 1 v5 = 0 and 2 or 1 or 4 v6 = 0 or False and 1 结果: 1 3 0 1 1 False
最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码, 比如大写字母A的编码是65,小写字母z的编码是122。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里, 各国有各国的标准,就会不可避免地出现冲突, 结果就是,在多语言混合的文本中,显示出来会有乱码。因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分, 所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
a = 1 b = 2 a, b = b, a
range产生的是一个列表,而xrange产生的是一个生成器器的。 所以对于较大的集合时候,xrange比range性能好。 因为range一次把所以数据都返回,而xrange每次调用返回其中的一个值
False None 0 ‘’ “” [] {} ()
str .join() .split() .lower() .upper() .strip()
list .append() .pop() .reverse() .sort() .remove()
tuple .index() .count() len(atuple) max(atuple) min(tuple)
dict .get() .keys() .values() .iters() .update()
python 使用 lambda 表达式来创建匿名函数 lambda只是一个表达式,函数体比def简单很多
*arg
和 **kwarg
作用?可变参数
*args
允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,而 关键字参数**kwargs
允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
= 赋值:数据完全共享(=赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变, 如果是不可变类型(immutable),比如字符串,修改了其中一个,另一个并不会变 浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层) 深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)
Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。
v = dict.fromkeys(['k1','k2'],[]) v['k1'].append(666) print(v) v[‘k1’] = 777 print(v) {'k1': [666], 'k2': [666]} {'k1': 777, 'k2': [666]}
1 print("\n".join("\t".join(["%s*%s=%s" % (x, y, x * y) for y in range(1, x + 1)]) for x in range(1, 10)))
os , sys, time, random, logging
re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。 re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。
1 a: [ i % 2 for i in range(10) ] 2 3 b: ( i % 2 for i in range(10) ) 4 5 a: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] 6 7 b: <generator object <genexpr> at 0x011A3E40>
1 astring = “1,2,3” 2 list(astring.split(','))
map(int, [‘1’,’2’,’3’])
[x*x for x in range(1, 11)]
alist = [6,9,3,6,5,4,78,5,4,4,4]
print(list(set(alist)))
Python: 3.x class stack(object): def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[-1] def size(self): return len(self.items)
def binary_search(alist, key): low, high = 0, 0 mid = len(alist) - 1 time = 0 while low < high: time += 1 mid = (low + high) // 2 if alist[mid] < key: low = mid + 1 elif alist[mid] > key: high = mid - 1 else: print("Search {} times!\n".format(time)) return mid print("No Search {} times!\n".format(time))
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口, sys模块负责程序与Python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。
Python中使用Random模块来生成随机数 常用的方法有:.randint(), .random(), .randrange(), .sample(), .seed(), .uniform()
使用os模块中的remove方法,注意判断文件是否存在,是否具有权限。
super() 函数是用于调用父类(超类)的一个方法。 super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
_init__(self,...) 、__del__(self) 、__call__(self, *args) 、__str__(self, 方法)
__add__、__dic__、__getitem__、__setitem__、__delitem__、__iter__
实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。 实例方法,第一个参数必须要默认传实例对象,一般习惯用self。 静态方法,参数没有要求。 类方法,第一个参数必须要默认传类,一般习惯用cls。
1.__doc__ :打印类的描述信息 2.__module__:表示当前操作的对象在那个模块 3.__class__:表示当前操作的对象的类是什么 4.__init__ :构造方法,通过类创建对象时,自动触发执行 5.__del__:析构方法,当对象在内存中被释放时,自动触发执行 6.__call__:对象后面加括号,触发执行 7.__dict__:查看类或对象中的所有成员 8.__str__:如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值 9.__getitem__、__setitem__、__delitem__: 注:用于索引操作,如字典。以上分别表示获取、设置、删除数据 10.__new__\__metaclass__ *(自定义类) __new__:是用来创建实例的,对类实例化之前进行定制,可以用到。 __metaclass__:定义一个类如何被创建
解释一: python的反射,它的核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动。
解释二: 需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,
几个重要方法:
hasattr: 判断对象中是否有这个方法或变量
getattr: 获取对象中的方法或变量的内存地址
setattr: 为对象添加变量或方法
elattr: 删除对象中的变量。注意:不能用于删除方法
装饰器是一个很著名的设计模式,经常被用于有切面需求的场景, 较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计, 有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。 概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
1 def decorator(func): 2 def wapper(*args, **kwargs): 3 print("This is a defcorator!") 4 reture func(*args, **kwargs) 5 return wapper
import json
a=json.dumps({"ddf":"你好"},ensure_ascii=False)
print(a) #{"ddf": "你好"}
以上,就是我们整理的一些关于Python纯语言的面试题,但是面试的时候肯定不止这些,因此后续我们会持续更新关于数据结构,算法,操作系统,网络相关的面试题,大家可以持续关注我们的公众号,最后,再给大家留一道百度的面试题,各位可以试着想一下:
作者:676yyj
链接:https://www.pythonheidong.com/blog/article/2192/4f6e2fa36b821b3e9a5e/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!