语言特性
1.谈谈对 Python 和其他语言的区别

语言特点:简洁、优雅,省略了各种大括号和分号,还有一些关键字,类型说明;
语言类型:解释型语言,运行的时候是一行一行的解释,并运行,所以调试代码很方便,开发效率很高;
第三方库:python是开源的,并且python的定位时任由其发展,应用领域很多比如Web,运维,自动化测试,爬虫,数据分析,人工智能。Python具有非常完备的第三方库;
Python和Java相比
Python比Java要简单。Python是函数为一等公民的语言,而Java是类为一等公民的语言。Python是弱类型语言,而Java是强类型语言.;
Python和C相比
对于使用:
Python的类库齐全并且使用简洁,很少代码实现的功能用C可能要很复杂对于速度;
Python的运行速度相较于C,绝对是很慢了。Python和CPython解释器都是C语言编写的

2.简述解释型和编译型编程语言

编译性和解释型语言
解释型:就是边解释边执行;
编译性:编译后再执行

3.Python 的解释器种类以及相关特点?

CPython
c语言开发的 使用最广的解释器
IPython
基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样
PyPy
目标是执行效率 采用JIT技术 对python代码进行动态编译,提高执行效率
JPython
运行在Java上的解释器 直接把python代码编译成Java字节码执行
IronPython
运行在微软 .NET 平台上的解释器,把python编译成. NET 的字节码

4.说说你知道的Python3 和 Python2 之间的区别?

按照当前时间点(Python 2.7 和 Python3.6),从宏观上介绍下Python 3和Python 2的区别,并举一些对应常见的例子:
1. 统一了字符编码支持。
2. 增加了新的语法。print/exec等成为了函数,格式化字符串变量,类型标注,添加了nonlocal、yield from、async/await、yield for关键词和__annotations__、__context__、__traceback__、__qualname__等dunder方法。
3. 修改了一些语法。metaclass,raise、map、filter以及dict的items/keys/values方法返回迭代对象而不是列表,描述符协议,保存类属性定义顺序,保存关键字参数顺序
4. 去掉了一些语法。cmp、<>(也就是!=)、xrange(其实就是range)、不再有经典类
5. 增加一些新的模块。concurrent.futures、venv、unittest.mock、asyncio、selectors、typing等
6. 修改了一些模块。主要是对模块添加函数/类/方法(如functools.lru_cache、threading.Barrier)或者参数。
7. 模块改名。把一些相关的模块放进同一个包里面(如httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib放进了http里面,urllib, urllib2, urlparse, robotparse放进了urllib里面),个例如SocketServer改成了socketserver,Queue改成queue等
8. 去掉了一些模块或者函数。gopherlib、md5、contextlib.nested、inspect.getmoduleinfo等。去掉的内容的原因主要是2点:1. 过时的技术产物,已经没什么人在用了;2. 出现了新的替代产物后者被证明存在意义不大。理论上对于开发者影响很小。
9. 优化。重新实现了dict可以减少20%-25%的内存使用;提升pickle序列化和反序列化的效率;collections.OrderedDict改用C实现;通过os.scandir对glob模块中的glob()及iglob()进行优化,使得它们现在大概快了3-6倍等.. 这些都是喜大普奔的好消息,同样开发者不需要感知,默默的就会让结果变得更好。
10. 其他。构建过程、C的API、安全性等方面的修改,通常对于开发者不需要关心。

5.Python3 和 Python2 中 int 和 long 区别?

python2中有long类型
python3中没有long类型,只有int类型

6.xrange 和 range 的区别?

xrange用于返回xrange对象,而range用于返回一个数组。不管那个范围多大,xrange都使用同样的内存。
注意:python3中没有xrange。python3中演示:>>> range(10)
range(0, 10)>>> type(range(10))
<class 'range'>

编码规范

7.什么是 PEP8?

1. 变量
常量:大写加下划线 USER_CONSTANT。
私有变量 : 小写和一个前导下划线 _private_value。
Python 中不存在私有变量一说,若是遇到需要保护的变量,使用小写和一个前导下划线。但这只是程序员之间的一个约定,用于警告说明这是一个私有变量,外部类不要去访问它。但实际上,外部类还是可以访问到这个变量。
内置变量 : 小写,两个前导下划线和两个后置下划线 __class__两个前导下划线会导致变量在解释期间被更名。这是为了避免内置变量和其他变量产生冲突。用户定义的变量要严格避免这种风格。以免导致混乱。2. 函数和方法总体而言应该使用,小写和下划线。但有些比较老的库使用的是混合大小写,即首单词小写,之后
每个单词第一个字母大写,其余小写。但现在,小写和下划线已成为规范。
私有方法 :小写和一个前导下划线,这里和私有变量一样,并不是真正的私有访问权限。同时也应该注意一般函数不要使用两个前导下划线(当遇到两个前导下划线时,Python 的名称改编特性将发挥作用)。
特殊方法 :小写和两个前导下划线,两个后置下划线这种风格只应用于特殊函数,比如操作符重载等。
函数参数 : 小写和下划线,缺省值等号两边无空格3. 类类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写。类名应该简明,精确,并足以从中理解类所完成的工作。4. 模块和包除特殊模块 __init__ 之外,模块名称都使用不带下划线的小写字母。5. 关于参数5.1 不要用断言来实现静态类型检测。断言可以用于检查参数,但不应仅仅是进行静态类型检测。Python 是动态类型语言,静态类型检测违背了其设计思想。断言应该用于避免函数不被毫无意义的调用。5.2 不要滥用 *args 和 **kwargs。*args 和 **kwargs 参数可能会破坏函数的健壮性。它们使签名变得模糊,而且代码常常开始在不应该的地方构建小的参数解析器。6. 其他6.1 使用 has 或 is 前缀命名布尔元素
is_connect = True
has_member = False
6.2 用复数形式命名序列
members = ['user_1', 'user_2']
6.3 用显式名称命名字典
person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'}
6.4 避免通用名称
诸如 list, dict, sequence 或者 element 这样的名称应该避免。
6.5 避免现有名称
诸如 os, sys 这种系统已经存在的名称应该避免。7. 一些数字
一行列数 : PEP 8 规定为 79 列。根据自己的情况,比如不要超过满屏时编辑器的显示列数。
一个函数 : 不要超过 30 行代码, 即可显示在一个屏幕类,可以不使用垂直游标即可看到整个函数。
一个类 : 不要超过 200 行代码,不要有超过 10 个方法。一个模块 不要超过 500 行。

8.了解 Python 之禅么?

 import this
"The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!"

9.了解 dosctring 么?

就是函数方法的内置解释,随便import一个模块,比如re正则,输出re.__doc__就出现类似help(re)的文档内容,不过比help()简短多了。

10.了解类型注解么?

Python解释器会在运行的时候动态判断变量和参数的类型,这样的好处是编写代码速度很快,很灵活,但是坏处也很明显,不好维护,可能代码写过一段时间重新看就很难理解了,因为那些变量、参数、函数返回值的类型,全都给忘记了。
而且当你在读别人的代码的时候,也无法一眼看出变量或者参数的类型,经常要自己推敲,这样给学习带来了很大的障碍。
所以Python3里有了这个新特性,可以给参数、函数返回值和变量的类型加上注解,不过这个仅仅是注释而已,对代码的运行来说没有任何影响,变量的真正类型还是会有Python解释器来确定,你所做的只是在提高代码的可读性,仅此而已。

转载于:https://www.cnblogs.com/reseelei-despair/p/11308813.html

Python爬虫面试题170道:2019版【1】相关推荐

  1. Python 爬虫面试题 170 道:2019 版

    引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不是很满意,一个是有些部分还是 Python ...

  2. python爬虫毕业设计题目-Python爬虫面试题170道:2019版【1】

    语言特性 1.谈谈对 Python 和其他语言的区别 语言特点:简洁.优雅,省略了各种大括号和分号,还有一些关键字,类型说明: 语言类型:解释型语言,运行的时候是一行一行的解释,并运行,所以调试代码很 ...

  3. python高阶面试题_Python 爬虫面试题 170 道:2019 版

    通过本场 Chat,你将获得如下知识点:掌握 Python 的基础语法 语法常见的 Python 应用场景 掌握 Python 闭包的使用以及装饰器的使用 生成器和迭代器的使用 常见的设计模式的使用 ...

  4. Python 爬虫面试题 102 道

    语言特性 1.谈谈对 Python 和其他语言的区别 2.简述解释型和编译型编程语言 3.Python 的解释器种类以及相关特点? 4.说说你知道的Python3 和 Python2 之间的区别? 5 ...

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

    Python 今年还是很火,不仅是编程语言排行榜前二,更成为互联网公司最火热的招聘职位之一.伴随而来的则是面试题目越来越全面和深入化.有的时候不是你不会,而是触及到你的工作边缘,并没有更多的使用,可是 ...

  6. python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)

    搞定这套Python爬虫面试题(面试会so easy) 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  搞定这套Python爬虫面试题(面试会so easy).t ...

  7. Java面试题及答案2019版(上)

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...

  8. python企业面试题250道

    Python基础 文件操作 ◾1.有一个jsonline格式的文件file.txt大小约为10K ◾2.补充缺失的代码 模块与包 ◾3.输入日期, 判断这一天是这一年的第几天? ◾4.打乱一个排好序的 ...

  9. Python 爬虫 面试题

    目录 理论 笔试或面试记录题 理论 爬虫遵循的协议:robot协议 定义:网络爬虫排除标准. 作用:告诉搜索引擎哪里可以爬,哪里不可以爬. 爬虫分类 (1)通用爬虫:搜索引擎的主要组成,作用就是将互联 ...

  10. python爬虫面试题-扣丁学堂解析Python爬虫工程师面试题汇总

    扣丁学堂解析Python爬虫工程师面试题汇总 2018-08-20 11:24:39 1629浏览 今天,扣丁学堂的小编来给大家总结一下Python爬虫的面试技巧,希望给参加Python培训的同学一点 ...

最新文章

  1. Apache common包应用集合
  2. vue事件委托传递节点防止向下传递穿透
  3. mysql5.7安装教程绿色_mysql 5.7.17 安装配置方法图文教程(windows)
  4. 压缩包安装_SPSS 21 下载(内附压缩包及安装过程)
  5. SQL SERCER 控制 SERVERICE BROKER 服务
  6. SpringMvc的 @Valid 拦截到的异常如何抛出
  7. 免费python全套教程-0基础学python 全套教程送你参考
  8. centos 下安装mysql-5.6.11
  9. ubuntu 17.10 如何设置合盖不关机
  10. git flow使用
  11. (6)微信UI自动化-搜索指定联系人(C#)
  12. sshd报错Privilege separation user sshd does not exist的解决办法
  13. Ada2012即将完成
  14. 微信建群怎么建?2个方法,快速学会!
  15. Python netCDF4
  16. LOL全英雄皮肤爬虫
  17. java opengl 图片文字_如何通过opengl显示相机预览
  18. 孙陶然:创业是和平年代最靓丽的生活方式
  19. Bonjour(苹果电脑公司的服务器搜索协议商标名)
  20. is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto

热门文章

  1. 拓端tecdat|R语言k-Shape时间序列聚类方法对股票价格时间序列聚类
  2. html 文本位置中心,html – 元素内的文本位置
  3. Java从入门到精通 第5章 数据类型
  4. Java事件处理机制的两个案例
  5. 广义表的存储结构算法c语言,广义表(一)
  6. winpe+linux iso,用syslinux引导maxdos,winpe,slax l
  7. java接口自动化框架_java接口自动化测试框架及断言详解
  8. RuntimeError: context has already been set(multiprocessing)
  9. docker镜像打包
  10. Tensorspace一款神奇的神经网络可视化应用