51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 922|回复: 0
打印 上一主题 下一主题

[python] 这些Python问题会在面试中经常遇到

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:05
  • 签到天数: 1048 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-11-18 14:08:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算技术的发展,Python的职位需求越来越高,面试成为了搞定优质职位的快速方式。下面我收集了10个Python面试时经常问的问题,供参考。
      1.简要描述Python的垃圾回收机制(garbage collection)。
      答案:这里能说的很多。你应该提到下面几个主要的点:
      Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会小时,分配给该对象的内存就会释放出来用作他用。
      偶尔也会出现引用循环(reference cycle)。垃圾回收器会定时寻找这个循环,并将其回收。举个例子,假设有两个对象o1和o2,而且符合o1.x == o2和o2.x == o1这两个条件。如果o1和o2没有其他代码引用,那么它们就不应该继续存在。但它们的引用计数都是1。
      Python中使用了某些启发式算法(heuristics)来加速垃圾回收。例如,越晚创建的对象更有可能被回收。对象被创建之后,垃圾回收器会分配它们所属的代(generation)。每个对象都会被分配一个代,而被分配更年轻代的对象是优先被处理的。
      2.什么是Python?使用Python有什么好处?(这个问题是最常见的开头问题,是最基础也是最重要的!)
      答案:下面是一些关键点:
      Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和[url=]Ruby[/url]
      Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111和x="I'm a string"这样的代码,程序不会报错。
      Python用途非常广泛——网络应用,自动化,科学建模,大数据应用,等等。它也常被用作“胶水语言”,帮助其他语言和组件改善运行状况。
      Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。
      3.python中is和==的区别(总结了大部分人的面试,这道题出现的概率也很大。)
      答案:
      Python中对象包含的三个基本要素,分别是:id(身份标识) 、type(数据类型)和value(值)。
      ‘==’比较的是value值
      ‘is’比较的是id
      4. Python是怎样管理内存的?
      答案:
      Python的内存管理是由私有heap空间管理的。所有的Python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才能对它进行操作。
      另外,Python有自带的垃圾回收系统,它回收并释放没有被使用的内存让它们能够被其他程序使用。
      5.有哪些工具可以帮助debug或做静态分析?
      答案:
      PyChecker,一个静态分析工具,除了报告源代码中的错误,还能分析出错误的类型和复杂程度。另外,还有Pylint,用于检验模块是否达到代码标准的工具。
      6.你如何管理不同版本的代码?
      答案:
      一点不属于专业的小技巧——被问到这个问题的时候,你应该要表现得很兴奋,甚至告诉他们你是如何使用Git(或是其他你最喜欢的工具)追踪自己和女票的书信往来。除了Git作为版本控制系统(VCS),你也可以选择subversion(SVN)。
      7.什么是Python的命名空间?
      答案:
      python使用命名空间记录变量。python中的命名空间就像是一个dict,key是变量的名字,value是变量的值。
      如果你记不住上面这段标准答案,也可以这么回答:
      在Python 中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作——这就是命名空间。每一个变量名字都尤其对应的一个对象,而命名空间可是把他们收纳起来的盒子,当查询变量的时候,会从该盒子里面寻找相应的对象。
      8.Python中的pass是什么?
      答案:
      Pass是一个不可或缺但又毫无作用的语句。 pass就是什么也不做,只是为了防止语法错误,比如: if a>1: pass #我这里先不做任何处理,直接跳过,但是如果不写pass,就会语法错误。
      9.在Python中如何拷贝一个对象?
      答案:
      一般来说可以使用copy.copy方法或者copy.deepcopy方法,几乎所有的对象都可以被拷贝,一些对象可以更容易的拷贝,Dictionaries有一个copy方法:newdict = olddict.copy
      但并不是所有的对象都可以被拷贝。
      10.“猴子补丁”(monkey patching)指的是什么?这种做法好吗?
      答案:
      “猴子补丁”就是指,在函数或对象已经定义之后,再去改变它们的行为。
      举个例子:
      import datetime
      datetime.datetime.now = lambda: datetime.datetime(2012, 12, 12)
      大部分情况下,这是种很不好的做法 - 因为函数在代码库中的行为最好是都保持一致。打“猴子补丁”的原因可能是为了测试。mock包对实现这个目的很有帮助。
      自我介绍的时候,可以按照这个结构来:
      个人基本信息 + 基本技术构成 + 项目经验(具体项目以及在项目中的负责部分)+ 自我评价,其中的原则就是紧紧围绕招聘岗位的需求做介绍。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 02:47 , Processed in 0.060752 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表