• 技术文章 >面试题 >python面试题

    Python面试题之基础篇(一)

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-11-08 16:08:19转载16937

    Python基础篇

    1、为什么学习Python

    家里有在这个IT圈子里面,也想让我接触这个圈子,然后给我建议学的Python,然后自己通过百度和向有学过Python的同学了解了Python,Python这门语言,入门比较简单,它简单易学,生态圈比较强大,涉及的地方比较多,特别是在人工智能,和数据分析这方面。在未来我觉得是往自动化,人工智能这方面发展的,所以学习了Python。

    2、通过什么途径学习Python

    刚开始接触Python的时候,到网上里面跟着视频学基础,再后来网上到看技术贴,然后看到有人推荐廖雪峰的Python教程,

    练项目到GitHub上面找一些小项目学习。

    3、谈谈对Python和其他语言的区别

    Python属于解释型语言,当程序运行时,是一行一行的解释,并运行,所以调式代码很方便,开发效率高,

    还有龟叔给Python定位是任其自由发展、优雅、明确、简单,所以在每个领域都有建树,所有它有着非常强大的第三方库。

    特点:

    语法简洁优美,功能强大,标准库与第三方库都非常强大,而且应用领域也非常广

    可移植性,可扩展性,可嵌入性

    缺点:运行速度慢

    - 解释型

    - python/php

    - 编译型

    - c/java/c#

    - Python弱类型

    (1)与java相比:在很多方面,Python比Java要简单,比如java中所有变量必须声明才能使用,而Python不需要声明,用少量的代码构建出很多功能;(高效的高级数据结构)

    (2)与php相比:python标准包直接提供了工具,并且相对于PHP代码更易于维护;

    (3)Python与c相比:

    Python 和 C Python这门语言是由C开发而来。

    对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多。

    对于速度:Python的运行速度相较与C,绝逼是慢了。

    Python的优势:

    1、Python 易于学习;

    2、用少量的代码构建出很多功能;(高效的高级数据结构)

    3、Python 拥有最成熟的程序包资源库之一;

    4、Python完全支持面向对象;

    5、Python是跨平台且开源的;

    6、动态类型。

    4、简述解释型和编译型编程语言

    解释型:就是边解释边执行(Python,php)

    编译型:编译后再执行(c、java、c#)

    5、Python的解释器种类以及相关特点?

    CPython

    当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

    CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

    IPython

    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

    PyPy

    PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

    绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

    Jython

    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

    IronPython

    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

    小结:

    Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独

    PyPy

    由Python写的解释器,它的执行速度是最快。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),

    绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。

    Jython

    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

    IronPython

    IronPython和Jython类似,只不过IronPython是运行在.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

    小结:

    Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

    6、位和字节的关系

    1字节 = 8 位
    位(bit),数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,
    一个位就代表一个0或1(即一个二进制),二进制是构成存储器的最小单位,每8个位(bit,简写为b)组成一个字节(Byte,
    简写为B),字节是最小一级的信息单位

    7、b、B、KB、MB、GB的关系

    b --->位(bit)    
    B --->字节      一个字节等于8位
    1B = 8 bit
    1kb = 1024 B
    1 MB = 1024 KB
    1 GB = 1024 MB

    8、PE8规范

    1、使用4个空格而不是tab键进行缩进。
    2、每行长度不能超过79
    3、使用空行来间隔函数和类,以及函数内部的大块代码
    4、必要时候,在每一行下写注释
    5、使用文档注释,写出函数注释
    6、在操作符和逗号之后使用空格,但是不要在括号内部使用
    7、命名类和函数的时候使用一致的方式,比如使用CamelCase来命名类,使用lower_case_with_underscores来命名函数和方法
    8、在类中总是使用self来作为默认
    9、尽量不要使用魔法方法
    10、默认使用UTF-8,甚至ASCII作为编码方式
    11、换行可以使用反斜杠,最好使用圆括号。
    12、不要在一句import中多个库,
    13、空格的使用

    9、通过代码实现如下转换(进制之间转换)

    # 二进制转换成十进制-->int
    v = "0b1111011"
    b = int(v,2)
    print(b)  # 123
    # 十进制转换成二进制--->bin
    v2 = 18
    print(bin(int(v2)))
    # 0b10010
    # 八进制转换成十进制
    v3 = "011"
    print(int(v3))
    # 11
    # 十进制转换成八进制:---> oct
    v4 = 30
    print(oct(int(v4)))
    # 0o36
    # 十六进制转换成十进制:
    v5 = "0x12"
    print(int(v5,16))
    # 18
    # 十进制转换成十六进制:---> hex
    v6 = 87
    print(hex(int(v6)))
    # 0x57

    10、请编写一个函数实现将IP地址转换成一个整数

    请编写一个函数实现将IP地址转换成一个整数。
    如 10.3.9.12 转换规则为:
            10           00001010
    
        3            00000011

            9            00001001
    
        12           00001100

    再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
    def v1(addr):
        # 取每个数
        id = [int(x) for x in addr.split(".")]
        print(id)
        return sum(id[i] << [24, 16, 8, 0][i] for i in range(4))
    print(v1("127.0.0.1"))
    # [127, 0, 0, 1]
    # 2130706433

    众多python培训视频,尽在python学习网,欢迎在线学习!

    专题推荐:python 面试题 基础
    上一篇:没有了 下一篇:没有了

    相关文章推荐

    • 10道Python常见面试题

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网