1. 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法.

正解1:

  1. def trim(s):
  2. while s[:1] == ' ':
  3. s = s[1:]
  4. while s[-1:] == ' ':
  5. s = s[:-1]
  6. return s

正解2:

  1. def trim(s):
  2. if s[:1] == ' ':
  3. s = trim(s[1:])
  4. if s[-1:] == ' ':
  5. s = trim(s[:-1])
  6. return s

容易写错的方法:

  1. def trim(s):
  2. while s[0] == ' ':
  3. s = s[1:]
  4. while s[-1] == ' ':
  5. s = s[:-1]
  6. return s

解释:当s=''时,s[0]和s[-1]会报IndexError: string index out of range,但是s[:1])和s[-1:]不会。

  1. 请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间.

  1. # -*- coding: utf-8 -*-
  2. import time, functools
  3. def metric(fn):
  4. @functools.wraps(fn)
  5. def wrapper(*args, **kw):
  6. time0 = time.time()
  7. ret = fn(*args, **kw)
  8. time1 = time.time()
  9. print('%s executed in %s ms' % (fn.__name__, time1-time0))
  10. return ret
  11. return wrapper

  1. 装饰器的实质是什么?或者说为什么装饰器要写2层嵌套函数,里层函数完全就已经实现了装饰的功能为什么不直接用里层函数名作为装饰器名称?

    答:装饰器是要把原来的函数装饰成新的函数,并且返回这个函数本身的高阶函数

  2. python下多线程的限制以及多进程中传递参数的方式

    python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。

    多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array

  3. python多线程与多进程的区别:

    在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法 (实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。

    多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。

  4. 请写出一段Python代码实现删除一个list里面的重复元素

  1. >>> l = [1,1,2,3,4,5,4]
  2. >>> list(set(l))
  3. [1, 2, 3, 4, 5]
  4. 或者
  5. d = {}
  6. for x in mylist:
  7. d[x] = 1
  8. mylist = list(d.keys())

  1. 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

  1. def normalize(name):
  2. return name[0].upper()+name[1:].lower()
  3. def normalizeList(inputlist):
  4. return list(map(normalize, inputlist))

  1. Python是如何进行内存管理的?
      http://developer.51cto.com/art/201007/213585.htm
      Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于管理对小块内存的申请和释放
    内存池(memory pool)的概念:
      当 创建大量消耗小内存的对象时,频繁调用new/malloc会导致大量的内存碎片,致使效率降低。内存池的概念就是预先在内存中申请一定数量的,大小相等 的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎片,提升效率。
    内存池的实现方式有很多,性能和适用范围也不一样。
    python中的内存管理机制——Pymalloc:
      python中的内存管理机制都有两套实现,一套是针对小对象,就是大小小于256bits时,pymalloc会在内存池中申请内存空间;当大于256bits,则会直接执行new/malloc的行为来申请内存空间。
      关于释放内存方面,当一个对象的引用计数变为0时,python就会调用它的析构函数。在析构时,也采用了内存池机制,从内存池来的内存会被归还到内存池中,以避免频繁地释放动作。

  2. 解释一下python的and-or语法
    http://www.kuqin.com/diveinto_python_document/apihelper_andor.html
    与C表达式 bool ? a : b类似,但是bool and a or b,当 a 为假时,不会象C表达式 bool ? a : b 一样工作
    应该将 and-or 技巧封装成一个函数:

  1. def choose(bool, a, b):
  2. return (bool and [a] or [b])[0]

因为 [a] 是一个非空列表,它永远不会为假。甚至 a 是 0 或 '' 或其它假值,列表[a]为真,因为它有一个元素。

  1. how do I iterate over a sequence in reverse order

  1. for x in reversed(sequence):
  2. ... # do something with x..

如果不是list, 最通用但是稍慢的解决方案是:

  1. for i in range(len(sequence)-1, -1, -1):
  2. x = sequence[i]
  3. <do something with x>

    1. Python如何实现单例模式?其他23种设计模式python如何实现?

    2. Python里面如何拷贝一个对象?
      http://blog.csdn.net/sharkw/article/details/1934090
      标准库中的copy模块提供了两个方法来实现拷贝.一个方法是copy,它返回和参数包含内容一样的对象.
      使用deepcopy方法,对象中的属性也被复制

    3. Python里面search()和match()的区别?
      match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

    4. 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;
      要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

      1. 分别计算a,b序列的和;

      2. 求a序列和与b序列和的差值的一半,记为half;

      3. 在和值大的序列中找出一个与和值小的序列中的元素max的差值最接近half的元素,记为min;

      4. 将max与min互换即可。

    5. 描述元类的概念。Python有没有接口?元类和Java的接口有什么异同?
      python里无接口类型,定义接口类(抽象类)只是一个人为规定,在编程过程自我约束。
      元类是类的模板,重在帮助创建类。接口是重在提供思路,后续进行实现。

python面试题及答案 2019的更多相关文章

  1. Python面试题及答案汇总整理(2019版)

    发现网上很多Python面试题都没有答案,所以博主花了很长时间搜集整理了这套Python面试题及答案,由于网上的Python相关面试题大多数都是2019年的,所以我这个也是2019版的,哈哈~ (文末 ...

  2. 常见的 35 个 Python 面试题及答案

    1. Python 面试问题及答案 作为一个 Python 新手,你必须熟悉基础知识.在本文中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试.包括 Python 开发 ...

  3. python面试题以及答案

    目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...

  4. 转:Python考核试题及答案

    Python测试(总分:120) 选择题(每题2分,共20分) 1.下列哪个语句在Python中是非法的? (B) A.x = y = z = 1 B.x = (y = z + 1) C.x, y = ...

  5. Python 最常见的 170 道面试题解析:2019 最新

    Python 最常见的 170 道面试题解析:2019 最新 2019年06月03日 23:30:10 GitChat的博客 阅读数 21329 文章标签: PythonPython入门Python面 ...

  6. [ZZ]知名互联网公司Python的16道经典面试题及答案

    知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...

  7. python公司面试题集锦 python面试题大全

    问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...

  8. 网上搜集python面试题(更新中......)

    武Sir博客拿的面试题,答案都是自己写的,多有不足,请多多指教.更新中...... 1.为什么学习Python? a.写起来快,看起来明白.作为通用性的语言,除了一些对性能要求很高的场合,几乎什么都能 ...

  9. 一道Python面试题

    无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun():    temp = [lambda x : i*x for i in range(4)]    return ...

随机推荐

  1. IIS配置和发布网站

    一.安装配置IIS 控制面板->程序和功能->启用或关闭Windows功能 选中“Internet Information Services”,勾选Web管理工具子项,万维网服务子项(万维 ...

  2. 2019/12/13学习内容摘要(Linux磁盘管理①)

    一,查看磁盘或目录容量 1.命令df  查看已挂载磁盘的总容量,使用容量,剩余容量等,可以不加任何参数,默认以KB为单位 选项[-i] 表示查看inodes的使用情况 [-h] 表示用合适的单位显示 ...

  3. 【洛谷5492】[PKUWC2018] 随机算法(状压DP)

    点此看题面 大致题意: 用随机算法求一张图的最大独立集:每次随机一个排列,从前到后枚举排列中的点,如果当前点加入点集中依然是独立集,就将当前点加入点集中,最终得到的点集就是最大独立集.求这个随机算法的 ...

  4. SpringBoot:CORS处理跨域请求的三种方式

    一.跨域背景 1.1 何为跨域? Url的一般格式: 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 示例: https://www.dustyblog.cn:8080/say/Hel ...

  5. 国产处理器的逆袭机会——RISC-V

    前言 今天天气阴沉,刚才又下起了小雨,温度骤降,前几天脱下的秋裤,今天又穿上了,这天气真是变化无常.上周六(4.20)参加了一场关于RSIC-V的技术沙龙,第一次真正了解了RISC-V架构,正好今天不 ...

  6. linux命令--网络命令

    一.网络命令 1.配置ip 1.1 配置 IP 地址 IP 地址是计算机在互联网中唯一的地址编码.每台计算机如果需要接入网络和其他计算机进行数 据通信,就必须配置唯一的公网 IP 地址. 配置 IP ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(2)- RT1052DVL6性能实测(CoreMark)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的性能. 在前面的文章 i.MXRTyyyy微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2 ...

  8. Linux 解压xz格式文件及安装xz

    1.安装xz命令 # yum install epel-release -y # yum install xz -y 2.将xz文件解压为tar文件 # xz -d test.tar.xz 3.将ta ...

  9. jvm虚拟机笔记<五> 编译期优化

    JVM的编译器可以分为三个编译器: 1.前端编译器:把.java转变为.class的过程.如Sun的Javac.Eclipse JDT中的增量式编译器(ECJ). 2.JIT编译器:把字节码转变为机器 ...

  10. vue非父子关系之间通信传值

    第一种方法: 通过给vue实例添加自定义属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...