some interview question
合并字典:请合并下面两个字典 a = {"A":1,"B":2},b = {"C":3,"D":4}
dict1 = {"A": 1, "B": 2} dict2 = {"C": 3, "D": 4}# 方式一 **表示打散 print({**dict1, **dict2}) # * ** 都表示打散可迭代对象# 方式二 update方法 dict1.update(dict2) # 合并字典
元组操作:如何把元组 ("a","b") 和元组 (1,2),变为字典 {"a":1,"b":2}
# zip的使用 a = ("a", "b") b = (1, 2) print(dict(zip(a, b)))
交换字典的键和值
dict1 = {"A": 1, "B": 2} res = {k: v for v, k in dict1.items()} print(res)
我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?
Python交换两个变量的值
a,b=b,a
这个不是元组解包,在栈的顶端做两个值的交换。
read()/readline()/readlines()
with open('test.txt', 'r', encoding='utf-8') as f:text = f.read()print(text)
with open('test.txt', 'r', encoding='utf-8') as f:try:line = f.readline()if line:print(line)except:pass
with open('test.txt', 'r', encoding='utf-8') as f:try:lines = f.readlines() # 全部加载到内存for line in lines:print(line)except:pass
json序列化,可以支持的数据类型是str/int/tuple/dict/bool/None,而datetime不支持json序列化。
json序列化遇到中文会转换成Unicode,想要保留中文怎么办?
import jsona = json.dumps({"name": "张三"}) print(a) """ {"name": "\u5f20\u4e09"} """
import jsona = json.dumps({"name": "张三"}, ensure_ascii=False) print(a) """ {"name": "张三"} """
AB两个文件里面都是字母,读出来排序好后,写在C文件里面
with open('test1.txt', 'r') as f1:line1 = f1.readline() with open('test2.txt', 'r') as f2:line2 = f2.readline() line = line1 + line2 line = sorted(line) print(line) with open("test3.txt", "a+") as f:f.write("".join(line))
求在当前时间的基础上加N天后的日期
import datetime def datetime_operate(num:int):now = datetime.datetime.now()_new_date=now+datetime.timedelta(days=num)# 再将这个数字转换为标准的时间new_date = _new_date.strftime("%Y%m%d")return new_date if __name__=="__main__":res = datetime_operate(10)print(res)
下面代码会存在什么问题
def strappend(num):str='first'for i in range(num):str+=str(i)return str
问题如下:
- str是内置函数,不应该作为变量名。
- str是不可变对象,每次迭代都会占用新的空间,num越大,浪费的空间就越大,是yield改成生成器即可。
- 从函数命名规范来讲,函数名改用分隔符比较好。
def str_append(num):s = 'first'for i in range(num):s += str(i)yield sif __name__ == '__main__':for i in str_append(3):print(i)
with语句的作用,写一段代码?
with语句,即上下文管理协议,这里面包含
__enter__
和__exit__
两个方法。with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理操作,释放资源,比如文件使用后自动关闭、线程中的锁自动获取和释放。class Test:def __enter__(self):print('__enter__() is called!')return selfdef dosomething(self):print('do something!')def __exit__(self,*args,**kwargs):print('__exit__() is called!') with Test() as sample:sample.dosomething()
统计文件中大写字母的数量
with open('A.txt') as f:count=0for word in f.read():if word.isupper():count+=1print(count)
Redis基本类型
- string
- hash
- list
- set
- zset(sorted set:有序集合)
Python 连接MySQL/MongoDB/Redis
数据库三范式
分布式锁
Redis事务
装饰器有什么作用?举例说明?
装饰器就是一个函数,在不改变任何代码变动的前提下给一个函数增加额外功能,起到装饰效果。
应用场景:
插入日志
性能测试
事务处理
缓存
权限校验
from functools import wraps def log(label):def decorate(func):@wraps(func)def _wrap(*args,**kwargs):try:func(*args,**kwargs)print("name",func.__name__)except Exception as e:print(e.args)return _wrapreturn decorate @log("info") def foo(a,b,c):print(a+b+c)print("in foo")if __name__=="__main__":foo(1,2,3)# mark一下,这个还需要认真琢磨琢磨。
------------------
Python垃圾回收机制
对于Python语言来讲,对象的类型和内存都是在运行时确定的,这也是我们称Python语言为动态类型的原因。
垃圾回收机制:
- 应用计数机制
- 标记-清除
- 分代回收
魔法函数
__call__
怎么使用?class Bar:def __call__(self,*args,**kwargs):print("in call")if __name__=="__main__":b=Bar()b()
判断一个对象是函数还是方法?
from types import MethodType, FunctionTypeclass Bar:def foo(self):passdef foo1():passprint("foo是函数", isinstance(Bar().foo, FunctionType)) print("foo是方法", isinstance(Bar().foo, MethodType))
python的传参是传值还是传址?
Python中传参既不是传值也不是传地址,传的是对象的应用。
Python中的元类(metaclass)使用举例。
什么是猴子补丁?
内存管理
正则表达式
enumerate
enumerate可以在迭代一个对象的时候,同时获取当前对象的索引和值
from string import ascii_lowercase from string import ascii_uppercase s = ascii_uppercase for index, value in enumerate(s):print(index, value)
列举五个标准模块
- pathlib 路径操作模块
- urllib 网络请求模块
- asyncio Python异步库
- re 正则表达式模块
- itertools 操作生成器的一些模块
Python异常处理
try:1 / 0 except Exception as e:print(e) ''' division by zero '''
python中递归的最大次数
答:最大次数默认为1000,一般电脑只能达到998。
import sys sys.setrecursionlimit(1500) # 这个只是修改的Python解释器允许的最大递归次数,此外限制还和OS有关。
面向对象的mro
调用类对象的mro()方法获取其继承关系。
断言:
Python中是断言语句实现此功能的,一般表达式为true的情况下,程序才能通过。
# assert() 断言成功,程序继续执行,断言失败,程序报错。 # 断言能够帮助别人活着未来的你理解代码 # 找出程序中逻辑不对的地方 # 一方面,断言会提醒你某个对象应该处于何种状态 # 另一方面 ,如果某个时候断言为假,会抛出异常 def foo(a):assert a==2,Exception('不等于2')print('ok',a) if __name__=='__main__':foo(1)
lambda表达式是一个匿名函数,在函数编程中经常作为参数使用。
列举5个Python中的异常类型以及其含义
- AttributeError 对象没有这个属性
- NotImplementedError 尚未实现的方法
- StopIteration 迭代器没有更多的值
- TypeError 对类型无效的操作
- IndentationError 缩进错误
列举sort和sorted的区别:
相同之处 sort 和 sorted 都可以对列表元素排序,sort() 与 sorted() 的不同在于,sort 是在原位重新排列列表,而 sorted() 是产生一个新的列表。 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
进制问题
print(int(0b1010)) print(bin(0xf)) print(oct(8)) print(hex(16)) ''' 10 0b1111 0o10 0x10 '''
算法和数据结构:
用Python实现一个二分查找的函数
def binary_search(arr, num):n = len(arr)left = 0right = n - 1 # 最右边的indexwhile left <= right:mid = (left + right) // 2if num == arr[mid]:return "index:" + str(mid)elif num < arr[mid]:right = mid - 1 # 比中间的小else:left = mid + 1 # 比中间的大return False # 从这个循环里面跳出来说明木有找到,返回Falseif __name__ == "__main__":lst = [1, 3, 4, 5, 7, 100]res = binary_search(lst, 7)print(res)
转载于:https://www.cnblogs.com/gaofeng-d/p/11442662.html
some interview question相关推荐
- Oversea company interview question.
2019独角兽企业重金招聘Python工程师标准>>> network, web, database, Linux system Interview Questions Given ...
- Python Interview Question and Answers
引文:http://ilian.i-n-i.org/python-interview-question-and-answers/ For the last few weeks I have been ...
- An interview question from MicroStrategy
去年校招时的一道面试题,觉得蛮有意思,贴出来. Question: Spy start at a, during an interval he moves |b| to right when b &g ...
- 眠眠interview Question
1. Wkwebkit在异步回调 如何像webview的回调 一样在主线程回调.可以使用runloop 解决么? dispatch get main queue http://www.jiansh ...
- English Interview Question
section 1 启动 <br> <br> 1. ; ;did you have any trouble finding us? <br> 2. ; ;how d ...
- [转]Design Pattern Interview Questions - Part 2
Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pat ...
- react控制组件中元素_React Interview问题:浏览器,组件或元素中呈现了什么?
react控制组件中元素 by Samer Buna 通过Samer Buna React Interview问题:浏览器,组件或元素中呈现了什么? (React Interview Question ...
- English job interview Questions and Answers
"What are your goals for the future?" or "Where do you see yourself in five years?&qu ...
- 如何在C ++中从容器中删除元素
How to remove elements from container is a common C++ interview question, so you can earn some brown ...
最新文章
- 路由器配置与管理完全手册(H3C篇)学习感想
- mac下,svn配置
- 使用HttpHandler实现图片防盗链
- TensorFlow学习笔记(四)自己动手求Weights和biases
- 在终端(Terminal)中用颜色显示不同类型文件
- [html] HTML5的Server-Sent和WebSocket有什么区别?
- java上传图片http错误_上传图片出错
- 期刊投稿状态_在省级期刊上发表论文可以用于评定中级职称吗?
- 最短路径之dijkstra算法的C语言实现
- PAT甲级1007 最大连续子序列
- 凸优化第八章几何问题 8.5中心
- PCISPH的通俗解释与简单实现
- 部署IBM区块链平台:开发区块链业务网络到Hyperledger Fabric(多个组织)
- 我国有较大的AI大模型应用市场,在应用领域具有优势
- Win10系统的SurfacePro4的触摸笔如何使用
- 青龙面板JD各大库合集
- Camera硬件知识汇总
- Android MTK 音频通道修改
- 新用户阿里云服务器免费试用-远程桌面链接
- qt5报错Installed Qt WebEngine locales directory not found at location
热门文章
- 拳王虚拟项目公社:0成本的售卖高考资料的虚拟资源的其他最简单最轻松玩法
- socket中使用心跳来检测连接是否断开[ZT]
- MINIGUI编译方法【原创】
- 开发到底要不要自己做测试?
- syslog-ng配置说明
- java_security之base64原理解析以及三种代码的实现方式
- 初入c++(三)this指针,友元函数,友元类
- std c++ 获取运行时间封装
- oracle12c正在检查环境变量,oracle11g安装客户端检查先决条件失败
- 【clickhouse】clickchouse的分区合并速度小于插入速度会怎么样