近几年来,Python的运用范围越来越广,发展势头十分强劲。小到网页建设、网站搭建,大到人工智能AI、云计算、人脸识别、大数据分析等等尖端技术,都基于Python编程语言来实现。
在小伙伴们通过参加培训或者自学掌握一门过硬的Python全栈技术后,收获高薪就业似乎是水到渠成!
但别忘了,面试官正在等着大家来过五关斩六将!
明明有技术有实力,但因为在面试中因为紧张或者没做好准备而被面试官刷下来,那真的是很可惜的一件事。所以,今天小千就跟大家分享互联网大厂面试常见专业Python问题:
1.什么是Python?
Python是一种面向对象的,交互式的,解释型的计算机程序设计语言。Python的设计具有高可读性,它使用英语关键词而非标点符号,语法结构也比其他语言简单。
2.Python的主要功能是什么?
1)Python是一种解释型语言,因此在使用Python时不需要进行编译
2)声明变量和类似变量时,不需要重复声明变量的类型;
3)Python非常适合面向对象的编程,因为它允许类的定义以及组合和继承;
4)函数是第一类对象,这意味着它们可以分配给变量,从其他函数返回并传递给函数,类也是第一类对象;
5)用于许多领域,包括Web应用程序,自动化,科学建模,大数据应用程序等等。
3.Python编程中的函数是什么?
函数是表示代码块并且是可重用实体的对象。
它为程序带来了模块化,并提供了更高程度的代码可重用性。
Python为我们提供了许多内置函数,例如print()等,并提供了创建用户定义函数的能力。
4.Python中有多少基本类型的函数可用?
Python为我们提供了两种基本类型的函数:内置和用户定义。
内置函数是Python语言的一部分,比如print(),dir(),len()和abs()等。
5.我们如何用Python编写函数?
我们可以通过以下方式创建Python函数。
1)用def定义函数并链接功能名称;
2)传递参数并使用括号将它们括起来,使用冒号来表示结尾;
3)添加所需的Python语句以供执行。
6.列出5个Python标准库
os:提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime:处理日期时间
7.谈下Python的GIL
GIL 是Python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行Python程序的时候会霸占Python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。
如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个Python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
8.Python2和Python3的range(100)的区别
Python2返回列表,Python3返回迭代器,节约内存
9.一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言,可以使用装饰器
10.Python内建数据类型有哪些
整型--int
布尔型--bool
字符串--str
列表--list
元组--tuple
字典--dict
11.避免转义给字符串加哪个字母表示原始字符串?
r , 表示需要原始字符串,不转义特殊字符
12.正则re.complie作用
re.compile是将正则表达式编译成一个对象,加快速度,并重复使用
13.数据库优化查询方法
外键、索引、联合查询、选择特定字段等等
14.简述mysql和redis区别
redis:内存型非关系数据库,数据保存在内存中,速度快
mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢
15.遇到bug如何处理
1)细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log
2)如果涉及一些第三方框架,会去查官方文档或者一些技术博客。
3)对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。
4)导包问题、城市定位多音字造成的显示错误问题
16.列出常见MYSQL数据存储引擎
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
17.简述cookie和session的区别
1)session 在服务器端,cookie 在客户端(浏览器)
2)session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效,存储Session时,键与Cookie中的sessionid相同,值是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置
3)cookie安全性比session差
18.列出几种魔法方法并简要介绍用途
__init__:对象初始化方法
__new__:创建对象时候执行的方法,单列模式会用到
__str__:当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
__del__:删除对象执行的方法
19.Python传参数是传值还是传址?
Python中函数参数是引用传递(注意不是值传递)。对于不可变类型(数值型、字符串、元组),因变量不能修改,所以运算不会影响到变量自身;而对于可变类型(列表字典)来说,函数体运算可能会更改传入的参数变量。
20.常见的网络传输协议
UDP、TCP、FTP、HTTP、SMTP等等