python 3.7极速入门教程8语言比较与面试考试试题

本文教程目录

语言比较与面试考试试题

python和其他语言比较

  • Java

通常Python运行速度比Java程序慢点,但开发时间短很多。Python高级数据类型及其动态类型是比Java程序慢的主要原因,但是python很多库比如numpy之类的是c或c++实现,实际执行效率有时比java还快。但是Java在android应用广泛,python则没有。现在第一语言的排名主要是Python和java的斗争。凭借易学和丰富的库,非IT专业业人士大量基于python学习人工智能和其他的数据分析等,Python有逐渐拉开与java距离的趋势。

图片.png
  • Perl

虽然这两种语言在很多方面都被认为是相似的,但Perl支持常见的面向应用程序的任务,如报告生成,文件扫描等。而Python支持常见的编程方法,如数据结构设计和OOP编程,代码可读性更好,第三方库更丰富,与其他语言交互更方便,Perl是直接被Python超越并逐渐没落的。

  • TCL

Tcl数据结构很弱,执行代码的速度更慢,主要在一些通信仪表中使用,是一个极其次要的语言。

  • PHP

Python可读性更好。

在Python中,类在标准库中广泛使用,而PHP具有完全基于类的SPL。

Python支持结构化异常处理,而大多数PHP函数不使用异常来报告错误

Python中的开发功能由库提供,而在PHP中则是内置的

Python支持主要的GUI框架

PHP曾经是web后台开发的霸主语言,在其他地方基本上无用武之地,近年来PHP在web后台开发方面不敌Python,Java等语言,日渐衰落。

  • Ruby

与Ruby相比,Python具有丰富的数据结构,内部函数,更好的命名空间处理以及模块和迭代器的使用

Python支持多重继承,而Ruby则不支持。Python更简洁。

RUBY在Web开发和函数式编程有一定市场,但是因为Python过于庞大的库,可读性等,后台主流脚本语言没有不因为Python扩张而衰落的。

  • C ++

Python代码比大多数其他编程语言(如C或C ++)短得多。

Python是一种动态类型语言,而C ++是一种静态类型语言。

Python的效率远不敌C或C ++,Python和C或C ++是黄金组合。

  • JavaScript

Python主要在服务器端。 JavaScript主要在客户端。JavaScript在后台也有应用,但是市场地位远不及python。

Python使用缩进和空格。 JavaScript使用大括号来指定代码块。

JavaScript是主流语言中唯一不受Python打压的主流脚本语言。

参考资料

常见面试问题与解答

  • 什么是Python?使用Python有什么好处?

Python是一种编程语言,包含对象,模块,线程,进程,异常和自动内存管理等。Python的好处在于它简单易用,可移植,可扩展,内置数据结构,并且开源。

  • 什么是PEP 8?

PEP 8是一个编码约定,一组推荐,关于如何编写Python代码更具可读性,俗称编程风格指南。

  • 什么是pickling和unpickling?

Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用dump函数将其转储到文件中,此过程称为pickling。从存储的字符串表示中还原原始Python对象的过程称为unpickling。

  • Python如何解释?

Python语言是一种解释语言。 Python程序直接从源代码运行。它将程序员编写的源代码转换为中间语言,再转换为机器语言。

  • 如何在Python中管理内存?

Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。

Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。

Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。

  • 有哪些工具可以帮助查找错误或执行静态分析?

pyre-check 用于类型检查。

Pylint:完全可定制的源码分析器

更多请参考:https://github.com/china-testing/python-api-tesing/ 代码分析和lint(Code Analysis)部分。

  • 什么是Python装饰器?

Python装饰器是我们在Python语法中进行的一项特定更改,可以轻松地更改函数。

  • list和tuple有什么区别?

列表和元组之间的区别在于列表是可变的而元组不是。元组可以被散列,例如作为词典的关键。

  • 参数如何通过值或引用传递?

Python中的所有内容都是一个对象,所有变量都包含对象的引用。参考值根据功能;因此,您无法更改引用的值。但是,如果对象是可变的,则可以更改它们。

  • Dict和List是什么?

它们是语法结构,可以根据现有的iterable轻松创建Dictionary或List。

  • python提供的内置类型是什么?

有可变和不可变类型。

可变的有列表、集合、字典。
不可变的:字符串、元组、数值

  • Python中的命名空间是什么?

在Python中,引入的每个名称都有个地方,并且可以hook。这称为命名空间。它就像一个框,其中变量名称映射到对象。每当搜索到变量时,将搜索此框以获取相应的对象。

  • Python中的lambda是什么?

单独表达式匿名函数,通常用作内联函数。

  • 为什么python中的lambda没有语句?

python中的lambda表单没有语句,因为它用于创建新的函数对象,然后在运行时返回它们。

  • 什么是Python pass?

意味着,无操作的Python语句,或者换句话说,它是复合语句中的占位符,其中应该留有空白,不必在那里写入任何内容。

  • 什么是迭代器?

在Python中,迭代器用于迭代一组元素,如列表之类的容器。

  • 什么是Python中的单元测试?

Python中的单元测试框架称为unittest。它支持初始化,自动化测试,测试清理代码,测试用例组织等。pytest是python最出色的单元测试框架。nose是另外一个比较流行的单元测试框架。

更多请参考:https://github.com/china-testing/python-api-tesing/ 测试框架部分。

  • 在Python中切片是什么?

从序列类型(如列表,元组,字符串等)中选择一系列元素的机制称为切片。

  • Python中的生成器是什么?

实现迭代器的方法称为生成器。这是在函数中产生表达式的函数。

  • Python中的docstring是什么?

Python文档字符串称为docstring,它是一种文档化Python函数,模块和类的方法,同时还可以用于测试。

  • 如何在Python中复制对象?

要在Python中复制对象,可以尝试copy.copy () 或copy.deepcopy () 。复杂的对象无法复制所有对象。

  • Python中的负索引是什么?

Python序列可以是正数和负数的索引。对于正索引,0是第一个索引,1是第二个索引,依此类推。对于负索引,( - 1)是最后一个索引,( - 2)是倒数第二个索引,依此类推。

  • 如何将数字转换为字符串?

要将数字转换为字符串,请使用内置函数str()。如果需要八进制或十六进制表示,请使用内置函数oct()或hex()。

  • Python中的模块和包是什么?

在Python中,模块是构造程序的方式。每个Python程序文件都是一个模块,它导入其他模块,如对象和属性。

Python程序的文件夹是模块包。包可以包含模块或子文件夹。

  • Python中局部变量和全局变量的规则是什么?

局部变量:如果在函数体内的任何位置为变量分配了一个新值,则假定它是本地的。

全局变量:仅在函数内引用的变量是隐式全局变量。

  • 如何跨模块共享全局变量?

要在单个程序中跨模块共享全局变量,请创建一个特殊模块。在应用程序的所有模块中导入配置模块。该模块将作为跨模块的全局变量提供。

  • 解释如何在Linux上创建Python脚本?

要在Unix上使Python脚本可执行,您需要做两件事,

文件可执行的

第一行指明用python调用,比如#!/usr/local/bin/python

  • 如何在Python中删除文件?

使用命令shutil.rmtree,os.remove、os.unlink等。

  • 如何在Python中生成随机数?

random.random()返回[0,1]范围内的随机浮点数。另外numpy等外部库可以返回随机数。参见: https://china-testing.github.io/python_pandas_tutorial1.html

  • 如何从C访问用Python编写的模块?
Module = =PyImport_ImportModule("<modulename>"); 
  • //运算符?

它是地板除,用于分割两个操作数,结果为商,只显示小数点前的数字。例如,10 // 5 = 2和10.0 // 5.0 = 2.0。

  • 使用Python的好处?

Python包含巨大的标准库,适用于大多数Internet平台,如电子邮件,HTML等。强悍的外部库胜过其他任何语言。

Python不需要显式内存管理,因为解释器本身会将内存分配给新变量并自动释放它们

可读性好,容易维护

易学

内置强大的数据类型可以节省编程时间和工作量

胶水语言,与其他语言交互方便。

解释语言,没有繁琐的编译

跨平台等等

  • split函数的作用?

在Python中使用split函数是使用定义的分隔符将字符串分解为更短的字符串。它给出了字符串中存在的所有单词的列表。

  • Flask及其好处?

Flask是基于“Werkzeug,Jinja 2和良好意图”BSD许可的Python的Web微框架。 Werkzeug和jingja是它的两个依赖。

Flask是微框架的一部分。它对外部库几乎没有依赖性。框架轻盈,同时几乎没有更新的依赖性和更少的安全性错误。

  • Django,Pyramid和Flask之间有什么区别?

Flask是“微框架”,主要用于具有更简单要求的小型应用程序。

Pyramid是为更大的应用程序构建的。它提供了灵活性,并允许开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等。

像Pyramid一样,Django也可以用于更大的应用程序。它包括一个ORM。

  • Flask-WTF以及它们的特点是什么?

Flask-WTF提供与WTForms的简单集成。功能包括与wtforms集成;使用csrf令牌保护表单;全球csrf保护;国际化整合;Recaptcha支持;文件

  • Flask scriptk脚本工作的常用方法是什么?

应用程序的导入路径或Python文件的路径

  • 如何在Flask中访问会话?

会话允许您记住从一个请求到另一个请求的信息。flask使用签名cookie,以便用户可以查看会话内容并进行修改。用户有密钥Flask.secret_key才可以修改会话。

  • Flask是MVC模型么,举例看看?

Flask是一个简约框架,其行为与MVC框架相同。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
# 讨论钉钉免费群21745728 qq群144081101 567351477
# CreateDate: 2018-11-03
"""
# 配置
from flask import Flask

app = Flask(__name__)

#视图
@app.route("/")
def index():
    return "Hello, World!"

# 模型
if __name__ == '__main__':
    app.run(port=5000, debug=True)

更多参考:https://china-testing.github.io/python_flask_autotest1.html

  • Flask中的数据库连接?

Flask支持数据库驱动的应用程序(RDBS)。这样的系统需要创建模式,这需要将shema.sql文件传递给sqlite3命令。因此,您需要安装sqlite3命令才能在Flask中创建或启动数据库。

Flask允许以三种方式请求数据库

before_request():在请求之前调用它们并且不传递任何参数
after_request():在请求后调用它们并传递将发送到客户端的响应
teardown_request():在引发异常时调用它们,并且不保证响应。在构建响应之后调用它们。不允许它们修改请求,并忽略它们的值。

  • 你有多个运行Python的Memcache服务器,其中一个memcacher服务器出现故障,它有你的数据,是否会尝试从那个故障服务器获取关键数据?

故障服务器中的数据不会被删除,但有一个自动故障的规定,您可以为多个节点配置。可以在任何类型的套接字或Memcached服务器级别错误期间触发故障转移,而不是在正常的客户端错误(如添加现有密钥等)期间触发。

  • 如何最小化Python开发中的Memcached服务器中断?

当一个实例发生故障时,其中一些实例出现故障,当客户端发出请求时重新加载丢失的数据时,这会给数据库服务器带来更大的负载。为避免这种情况,如果您的代码已编写为最小化缓存标记,那么它将产生最小的影响

另一种方法是使用丢失的机器IP地址在新机器上调出Memcached实例
代码是最小化服务器中断的另一个选项,因为它使您可以自由地以最少的工作更改Memcached服务器列表

设置超时值是某些Memcached客户端为Memcached服务器中断实现的另一个选项。当Memcached服务器出现故障时,客户端将继续尝试发送请求,直到达到超时限制

  • 什么是Dogpile效应?你怎么能防止这种影响?

当缓存过期时,Dogpile效应被称为事件,并且网站被客户端同时发出的多个请求所击中。使用信号量锁可以防止这种影响。在此系统中,当值到期时,第一个进程获取锁并开始生成新值。

  • 如何在Python项目中不使用Memcached?

Memcached常见的误用是将其用作数据存储,而不是缓存

切勿使用Memcached作为运行应用程序所需信息的唯一来源。数据也应始终通过其他来源提供

Memcached只是一个键或值存储,不能对数据执行查询或迭代内容以提取信息

Memcached在加密或身份验证方面不提供任何形式的安全性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容