本面试题题库,由公号:非本科程序员 整理发布

第1题:是否遇到过python的模块间循环引用的问题,如何避免它?

这是代码结构设计的问题,模块依赖和类依赖

如果老是觉得碰到循环引用可能的原因有几点:

  1. 可能是模块的分界线划错地方了
  2. 可能是把应该在一起的东西硬拆开了
  3. 可能是某些职责放错地方了
  4. 可能是应该抽象的东西没抽象

总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工

采取办法,从设计模式上来规避这个问题,比如:

  1. 使用 “__all__” 白名单开放接口
  2. 尽量避免 import

第2题:简单介绍一下python函数式编程?

在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。

除了匿名函数外,Python还使用fliter(),map(),reduce(),apply()函数来支持函数式编程。

所以你的重点围绕fliter(),map(),reduce().apply()来介绍就可以顺利和面试官达成一致

第3题:python中函数装饰器有什么作用?

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

它经常用于有切面需求的场景,比如:

插入日志性能测试事务处理缓存权限校验等场景。

有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

第4题: 按照要求完成编码?

写一个函数,将两个dict(key是数字,value是string)进行合并,函数返回合并后的dict。

规则如下:如果一个key仅仅存在于其中一个dict中,则直接加入合并后的dict;

如果一个key在两个dict中都存在,那么给定一个choice值,choice可以是任何string,如果choice是任一个dict中的value,则写入,否则不写入。

代码如下

def function(lefdict,rightdict,choice):
samelist=lefdict.keys() & rightdict.keys() # dict.keys()返回的是一个可迭代对象,取两个dict的keys的交集
diflist = lefdict.keys() ^ rightdict.keys() # 取两个dict的keys的不同集
newdict={}
for key,value in lefdict.items():
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
for key,value in rightdict.items():
if key in diflist:
newdict[key]=value
elif key in samelist:
if value==choice:
newdict[key]=value
print(samelist,diflist)
print(newdict)
return newdict function({1:'a',2:'b',3:'c'},{4:'f',2:'b',3:'d'},'b')

第5题:按照要求完成编码?

把一个字符串的尾字母移到首位,比如‘abcde’->‘eabcd’,称为一次字符串的旋转。如果字符串1的任何一次旋转可以包含字符串2,则返回true,否则返回false,请写一个函数实现。

代码如下

def function(str1, str2):
str1 = str1[-1] + str1[:-1]
print(str1)
if str1.find(str2) != -1:
return True
else:
return False print(function("abcde", "cde"))

第6题:关注题,最近在公号更新一个神奇的系列入门文章

更多内容,欢迎关注 https://dwz.cn/r4lCXEuL

最新文章

  1. 解决mysql too many connections的问题
  2. JavaScript执行环境
  3. 理解 Glance - 每天5分钟玩转 OpenStack(20)
  4. 转帖:Python应用性能分析指南
  5. 使用redis作为session的存储方式
  6. C语言 给字符数组赋值的方法
  7. javascritpt 原型链
  8. Oracle常用语句记录
  9. 第11章:DOM扩展
  10. 磁盘寻道时间算法之----------------SCAN算法和最短寻道时间优先调度算法
  11. Docker系统六:Docker网络管理
  12. Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined)
  13. turtle文库 ——python
  14. Django里URL配置中name参数的作用
  15. influxdb问题解决
  16. h5做直播的弹幕效果
  17. 装机人员工具 - imsoft.cnblogs
  18. 学习笔记之DevOps
  19. 【uoj7】 NOI2014—购票
  20. GNU Radio 入门培训

热门文章

  1. 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
  2. GraphQL实战经验和性能问题的解决方案
  3. awk 分解行、字段
  4. Primefaces dataTable设置某个cell的样式问题
  5. U盘安装Ubuntu15.04 出现boot failed: please change disks and press a key to continue
  6. 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
  7. C 碎片十 关键字&库函数
  8. springboot 学习笔记(九)
  9. 零基础逆向工程32_Win32_06_通用控件_VM_NOTIFY
  10. [转]vim 快捷键整理