0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

这里有份Python面试攻略,请签收!

马哥Linux运维 来源:电子发烧友网 作者:工程师谭军 2018-07-04 16:26 次阅读

千呼万唤始出来,咱们需要的面试文档终于整理出来啦!这一次,小编为大家送上的是python面试题之基础概念篇。通过对十几份面试题目的整理,我们选出了其中出现频率最高的十个题目,附上答案供各位小伙伴参考!

1.*args和**kwargs是什么意思?

答:*args表示可变参数(variadicarguments),它允许你传入0个或任意个无名参数,这些参数在函数调用时自动组装为一个tuple; **kwargs表示关键字参数(keyword arguments),它允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。同时使用*args和**kwargs的时候,必须保证*args在**kwargs之前。

2.python里面如何拷贝一个对象?

答:

(1) 赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个;

(2)浅拷贝(copy.copy()),创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另一个也会被改变);

(3)深拷贝(copy.deepcopy()),创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另一个不会改变)

注意:并不是所有的对象都可以拷贝

3.简要描述python的垃圾回收机制

答:python中的垃圾回收是以引用计数为主,标记-清除和分代收集为辅。

引用计数:python在内存中存储每个对象的引用计数,如果计数变成0,该对象就会消失,分配给该对象的内存就会释放出来。

标记-清除:一些容器对象,比如说list、dict、tuple、instance等可能会出现引用循环,对于这些循环,垃圾回收器会定时回收这些循环(对象之间通过引用(指针)连在一起,构成一个有向图,对象构成这个有向图的节点,而引用关系构成这个有向图的边)。

分代收集:python把内存根据对象存活时间划分为三代,对象创建之后,垃圾回收器会分配它们所属的代。每个对象都会被分配一个代,而被分配更年轻的代是被优先处理的,因此越晚创建的对象越容易被回收。

4.什么是lambda函数?它有什么好处?

答:lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

Python允许你定义一种单行的小函数。定义lambda函数的形式如下(lambda参数:表达式)lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个。

5.python如何实现单例模式?

答:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个单例而且该单例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和累的属性的特点可以实现设计模式的单例模式。单例模式是指创建唯一对象,单例模式设计的类只能实例。

1.使用__new__方法

class Singleton(object): def __new__(cls, *args, **kw): if not hasattr(cls, '_instance'): orig = super(Singleton, cls) cls._instance = orig.__new__(cls, *args, **kw) return cls._instanceclass MyClass(Singleton): a = 1

2.共享属性

class Borg(object): _state = {} def __new__(cls, *args, **kw): ob = super(Borg, cls).__new__(cls, *args, **kw) ob.__dict__ = cls._state return obclass MyClass2(Borg): a = 1

3.装饰器版本

def singleton(cls, *args, **kw): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls(*args, **kw) return instances[cls] return getinstance@singletonclass MyClass: ...

4.import方法

class My_Singleton(object): def foo(self): passmy_singleton = My_Singleton()# to usefrom mysingleton import my_singletonmy_singleton.foo()

6.python自省

答:自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型,简单一句就是运行时能够获得对象的类型,比如type(),dir(),getattr(),hasattr(),isinstance().

a = [1,2,3]b = {'a':1,'b':2,'c':3}c = Trueprint type(a),type(b),type(c) # print isinstance(a,list) # True

7.谈一谈python的装饰器

答:装饰器本质上是一个python函数,它可以让其他函数在不作任何变动的情况下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景。比如:插入日志、性能测试,事务处理、缓存、权限验证等。有了装饰器我们就可以抽离出大量的与函数功能无关的雷同代码进行重用。

8.什么是鸭子类型?

答:在鸭子类型中,关注的不是对象的类型本身,而是他如何使用的。例如,在不适用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为鸭的对象,并调用它的走和叫方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。

class duck(): def walk(self): print('I am duck,I can walk...') def swim(self): print('I am duck,I can swim...') def call(self): print('I am duck,I can call...')duck1=duck()duck1.walk() # I am duck,I can walk...duck1.call() # I am duck,I can call...

9.@classmethod和@staticmethod

答:@classmethod修饰符对应的函数不需要实例化,不需要self参数,第一个参数需要是表示自身类的cls参数,cls参数可以用来调用类的属性,类的方法,实例化对象等。@staticmethod返回函数的静态方法,该方法不强制要求传递参数,如下声明一个静态方法:

Class C(object):

@staticmethod

Def f(arg1, arg2,…):

以上实例声明了静态方法f,类可以不用实例化就可以调用该方法C.f(),也可以实例化后调用C().f()。

10.谈一谈python中的元类

答:一般来说,我们都是在代码里定义类,用定义的类来创建实例。而使用元类,步骤又是同,定义元类,用元类创建类,再使用创建出来的类来创建实例。元类的主要目的就是为了当创建类时能够自动地改变类。

如果你在面试中也曾遇到过一些让你“眼前一亮”的经典题目,或者,那些年你也有关于面试的难(cao)忘(dan)回忆,欢迎留言讨论!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4674

    浏览量

    83459
  • Python编程语言

    关注

    1

    文章

    13

    浏览量

    4017

原文标题:Python面试攻略(嗨谈篇)

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    程序员面试攻略第2版pdf

    程序员面试攻略介绍程序员在求职过程所面临的求职沟通和程序设计技能两个方面的问题。在程序设计技能方面,本书介绍了作为一名程序员必须具备的一些知识并以简洁实用的方式介绍程序员的基本功。强调沟通方法是本书
    发表于 09-19 17:23

    这里有点好资料

    这里有以前下载的资料,前几天碰到,看了看,很不错。虽然与PROTEL板块内容不太想干,但确实不错,希望对大家有用。
    发表于 04-10 09:58

    职场要掌握面试的心理攻略

    职场要掌握面试的心理攻略,具体的攻略内容如下,仅供参考。 面试心理攻略 准备、准备再准备  你当然不会毫无准备地就去
    发表于 11-02 15:03

    这里有那么好东东呀

    这里有那么好东东呀PCB打样找华强 http://www.hqpcb.com 样板2天出货
    发表于 12-11 18:43

    这里有份很不错的430的程序打包学习和学习视频打包

    这里有份很不错的430的程序打包学习和学习视频打包很全的如果需要的可以留一个你邮件号我给你发过来哈
    发表于 08-06 12:22

    这里有OTT的完整设计方案吗

    这里有OTT的完整设计方案吗?
    发表于 01-10 20:36

    如何在ccs4\5中使用makefile文件,不会朋友我这里有官方文档,拿走细看!

    如何在ccs4\5中使用makefile文件,不会朋友我这里有官方文档,拿走细看!官方文档,英文版,不难看懂,有需要的拿走!
    发表于 09-12 16:58

    这里有什么电子元件

    这里有没有单片机? 有没有晶振
    发表于 10-05 16:38

    Python面试必看的10个问题

    找工作是每个学习Python人员的目标,为了更好的找到工作,刷面试题是必不可少的,了解最新企业招聘试题,可以让你面试更加的顺利。小编整理了一些2017年最新的Python
    发表于 02-28 17:00

    Py之pyserial:Python的pyserial库的简介、安装、使用方法之详细攻略

    Py之pyserial:Python的pyserial库的简介、安装、使用方法之详细攻略
    发表于 12-20 10:40

    python库之folium安装和使用攻略

    Py之folium:python库之folium的简介、安装、使用方法之详细攻略
    发表于 12-28 10:24

    程序员面试攻略下载(PDF第二版)

    程序员面试攻略介绍程序员在求职过程所面临的求职沟通和程序设计技能两个方面的问题。在程序设计技
    发表于 09-19 17:22 0次下载

    Python工程师面试时需要准备什么

    随着互联网的发展,python语言现在变得越来越火爆,Python程序员越来越受到大家的青睐!那么想进入Python行业,面试时需要注意些什么问题呢?我们在参加
    的头像 发表于 03-01 14:25 2055次阅读

    Python最常见的面试题解答

    Python作为人工智能知识的基础知识,加上有许多公司都在招python方面的程序员,那么小编在这里整理了一些Python最常见的面试题。在
    的头像 发表于 05-12 10:26 3239次阅读

    关于保险丝,这里有一些必知其实用的小常识

    关于保险丝,这里有一些必知其实用的小常识
    的头像 发表于 07-02 11:40 5800次阅读