面试题---python面试题
阅读目录
一、 【第一部分】
1.为什么学习python
2.通过什么途径学习python
3.公司上线和开发环境
4.python和其它语言对比
5.简述编译型和解释型语言
6.Python解释器的种类和特点
二、【第二部分】
1. and和or
2.ASCII、Unicode、utf-8、gbk区别
3. 三元运算编写格式
4. python2和python3 的区别
5. py2项目如何迁移成py3
6. python2和python3 的区别
7. py2项目如何迁移成py3
8. python2和python3中int和long的区别
9. xrange和range的区别
第一部分
为什么学习python
- 开发效率高,python有非常强大的第三方库
- 入门容易,python的定位是“优雅、明确、简单”
- 应用广泛,python广泛应用在爬虫、人工智能、网页应用、后台管理等领域
- 可移植性,由于python是开源,python可以移植到不同放入操作平台
- 可扩展性,由于python是C语言写的,可以用C或C++编写部分代码,可以使得关键代码运行的更快以及不公开某些算法
- 课嵌入式,可以把python程序嵌入到C或者C++中,从而提供脚本功能
通过什么途径学习python
- 看视频
- 看网站:博客园、python学习大本营、CSDN、掘金
- 看书:《python基础教程》《python入门到精通》
公司上线和开发环境
开发环境:Ubuntu系统
python与其它语言对比
Java | 企业应用使用 |
---|---|
C | 操作系统、开发语言、游戏引擎 |
C++ | 游戏 |
Python | 爬虫、人工智能、全栈、网页应用、后台管理、大数据搜索引擎 |
C# | 微软公司的,在处理内存上优秀,应用在Xbox、游戏机 |
Visual Basic | 大学课本、快绝迹 |
PHP | 开发动态网页效率及其高,太简单 |
JavaScript | 语法类似python,但及其严格、灵活 |
SQl | |
国内很少,日本很火,类似python、PHP的脚本语言 | |
Object-c | ios苹果 |
简述编译型和解释型语言
编译型:
- 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。
可以脱离语言环境独立运行
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同得操作系统之间移植就会有问题,需要根据不同的操作系统环境编译不同的可执行文件。
- 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。
解释型:
- 优点:有良好的平台兼容性,在任何环境都可以运行,前提是安装了解释器(虚拟机),灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
总结:简单来讲编译型如果代码太大,每次修改太麻烦,效率低但运行快--->问题出在编译时间太长
解释型语言:运行效率太低,解释一行代码跑一行,但调试方便
Python解释器的种类和特点
解释器 | 特点 |
---|---|
Cpython | 官网支持,内部是C语言写成的 |
Ipython | 与Cpython内核一样 |
Jpython | Jpython试运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码。 |
IronPython | IronPython和JPython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码 |
PyPy | 一次性的把代码解释成字节码问价,可以直接运行 |
位和字节
1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
列举PEP8规范(知道五个)
缩进:每一级缩进4个空格
行的最大长度:所有行限制最大字符数为79.
空行:
- 顶层函数和类的定义,前后用两个空行隔开,
- 类里面的方法定义用一个空行隔开。
import
导入在最文件顶部
导入应该按照以下顺序分组:
- 标准库带入(如os、re)
- 相关第三方库导入(需要pip安装)
- 本地应用/库特定导入(自己写的)
你应该在每组导入之前加入空行
3. 导入多个时用from django.shortcuts import render, HttpResponse, redirect
注释
- 函数注释(三个双引号)
- 单行注释
命名方式
- 类名一般使用首字母大写
- 函数名应该小写,如果想提高可读性可以用下划线分隔
- 模块命名小写
- 函数与函数之间,类与类之间空两行
第二部分
and和or
and:两边同时为真取后面,两边同时为假取前面,一真一假取假
or:两边同时为假取前面,两边同时为假取后面,一真一假取真
优先级not > and > or
求结果:
v1=1 or 3 #结果为1 v2=1 and 3 #结果为3 v3=0 and 2 and 1 #结果为0 v4=0 and 2 or 1 #结果为1 v5=0 and 2 or 1 or 4 #结果为1 v6=0 or False and 1 #结果为False
ASCII、Unicode、utf-8、gbk区别
ASCII:
最早的编码,至今还在使用。8位一个字节(字符)
GBK:
国标码,16位2个字节
英文一个字节(字符),8位
中文一个字符,两个字节,16位
Unicode:
英文:一个字符4个字节 32位
中文:一个字符4个字节 32位
utf-8:
英文:1个字节 8位
欧洲:2个字节 16位
亚洲:3个字节 24位
三元运算编写格式
a if a > b else b
当a>b成立返回a,否则返回b
python2和python3 的区别
编码区别:
py2:ASCII
py3:utf8
继承区别:
py2:经典类、新式类
py3:新式类
输出print区别:
py2:print ''
py3:print()
输出:
py2:v1=raw_input()
py3:input()
范围:
py2:range/xrange (range:会立即建立数据。xrange:使用一个创建一个)
py3:range(相当于xrange,若创建数据,list(range())),l会立即创建数据
除法区别:
py2: /是整除
py3: /是常规除法,//是整除
py2项目如何迁移成py3
python自带的工具2to3,他就在script目录下。使用方法不妨参考官方文档。使用方法其实就这一行执行即可
C:WINDOWSsystem32> cd C:ProgramDataAnaconda3Scripts
C:ProgramDataAnaconda3Scripts> .2to3.exe -w E:xxxxxx.py
python2和python3中int和long的区别
python2中有long类型
python3中有只有int类型,没有long类型
xrange和range的区别
py2:range/xrange (range:会立即建立数据。xrange:使用一个创建一个)
py3:range(相当于xrange,若创建数据,list(range())),l会立即创建数据