python技术面试题(十七)

简介: python技术面试题(十七)

每日分享

People will forget what you said, people will forget what you did, but people will never forget how you made them feel.

人们会忘记你所说的话,也会忘记你做的事,但是人们不会忘记你带给他们的感觉。

小闫语录

昨日夜观天象,东南方有异象显现,低头思,今天不宜瞎说。。。



python技术面试题(十七)

1.@classmethod和@staticmethod?

@classmethod用来标识类方法,对于类方法,第一个参数必须是类对象,一般用 cls作为第一个参数。 cls参数用来调用类的属性,类的方法等等。类方法可以通过实例对象和类对象去访问。类方法还可以对类属性进行修改。

@staticmethod修饰的方法为静态方法,该方法不强制要求传递参数,可以通过对象和类来访问。在静态方法中引用类属性的话,必须通过类来引用。

2.谈一谈python中的元类

答:一般来说,我们都是在代码里定义类,用定义的类来创建实例。而使用元类,步骤有些不同,定义元类,用元类创建类,再使用创建出来的类来创建实例。元类的主要目的就是当创建类时能够自动地改变类。

3.with open执行原理

答:使用了with上下文管理器。上下文管理器的工作机制便是使用了python的方法: __enter____exit__两个方法。

上下文管理器简单的理解就是一个操作环境。在文件操作时,需要打开、关闭文件,而在文件进行读写操作时,就处于文件操作的上下文中,也就是文件操作环境中。

__enter__方法会在执行 with 后面的语句时执行,一般用来处理操作前的内容。比如一些创建对象,初始化等。在with open的时候就是打开文件的操作。

__exit__方法会在 with 内的代码执行完毕后执行,一般用来处理一些善后收尾工作,比如文件的关闭,数据库的关闭等。在with open的时候就是关闭文件的操作。

自定义一个上下文管理器,模拟文件打开过程

class MyOpen(object):
    def __init__(self,file,mode):
        self.__file = file
        self.__mode = mode
    def __enter__(self):
        print('__enter__run... open the file')
        self.__handle = open(self.__file,self.__mode)
        return self.__handle
    def __exit__(self,exc_type,exc_val,exc_tb):
        print('__exit__.run... close the file')
        self.__handle.close()
with MyOpen('test','w') as f:
    f.write('欢迎关注 <小闫笔记>')
print('over')

4.状态码中301和302的区别?

答:301是永久重定向,302是临时重定向。

5.python中的列表底层实现原理

python中的列表底层采用了顺序表。那么什么是顺序表呢?顺序表是线性表存储的一种方式。那么什么是线性表呢?(怎么问题这么多....)线性表就是存储着一些元素的集合(不光有元素,还有元素的顺序关系)。

为了了解底层实现原理,首先来了解顺序表吧。假如班主任在统计班级同学信息,统计完之后在教室前面贴了一张表,表上写的是班级能容纳学生的数量以及现有同学的数量,教室和这张表就构成了顺序表。

一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。

了解完顺序表之后,我们了解一下顺序表的实现方式。顺序表实现方式有两种,分别是一体式结构和分离式结构。(点击下图即可查看超清图片)

一体式就是教室前面的那张表被用胶水粘死了,他和教室融为了一体,在教室前面。

一体式结构,存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。

分离式就是表在班主任办公桌上,教室在.....(不管你爱还是不爱,教室就在那里...),万一换教室了,班主任改一下表上的信息就好了。如果是一体式,哈哈哈,再做一张表吧,总不能为了看班级的信息,天天跑去改为了2班的教室吧.....

上面涉及到了元素存储区的一个替换。就是假如我们想更换数据区,也就是教室要从南校区搬迁到北校区了。那张表十分珍贵,被班主任糊涂的写在了乾隆年间的一张草纸上,世界上再无第二张,但是又被死死粘在了墙上,怎么办,教室和那张纸一起搬走(有点暴力哈,不要和我说为什么不把墙皮弄下来....我任性,我就要整体搬迁,谁让是我写的故事呢....哼),这就是一体式结构的元素存储区替换。分离式呢?教室搬迁到了北校区,但是老师的办公室在南校区,这张表还在老师的办公桌上,老师只需要小手一挥,将南校区1班改为北校区1班即可。

一体式结构由于顺序表信息区与数据区连续存储在一起,所以若想更换数据区,则只能整体搬迁,即整个顺序表对象(指存储顺序表的结构信息的区域)改变了。

分离式结构若想更换数据区,只需将表信息区中的数据区链接地址更新即可,而该顺序表对象不变。

好了,了解完了,回归正题。python中的列表就是采取了分离式技术实现的动态顺序表。之所以你可以根据下标随意的访问和更新数据,时间复杂度为O(1),特别快,是因为顺序表中的元素保存在一块连续的存储区中。为了可以任意加入元素,而且在不断加入元素过程中,表对象的id不变,那就只能采用分离式实现。也就是班主任的表就在班主任办公桌上,不变。当班级里的学生太多了需要换教室,随便换,不需要暴力的将整个房子搬走了。


相关文章
|
23天前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
144 66
|
23天前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
144 64
|
5天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
29天前
|
算法 数据挖掘 Python
Python中的拟合技术:揭示数据背后的模式
Python中的拟合技术:揭示数据背后的模式
28 0
Python中的拟合技术:揭示数据背后的模式
|
17天前
|
存储 数据可视化 Python
Python编程中的数据可视化技术
在数据驱动的世界中,将复杂的数据集转换为易于理解的视觉表示形式至关重要。本文将深入探讨如何使用Python进行数据可视化,包括选择合适的库、处理数据和设计有效的图表。我们将一起学习如何让数据讲故事,并确保你的信息传达清晰且有影响力。
|
9天前
|
网络协议 安全 Java
难懂,误点!将多线程技术应用于Python的异步事件循环
难懂,误点!将多线程技术应用于Python的异步事件循环
31 0
|
13天前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
13天前
|
数据挖掘 计算机视觉 Python
基于Python的简单图像处理技术
【10月更文挑战第4天】在数字时代,图像处理已成为不可或缺的技能。本文通过Python语言,介绍了图像处理的基本方法,包括图像读取、显示、编辑和保存。我们将一起探索如何使用PIL库进行图像操作,并通过实际代码示例加深理解。无论你是编程新手还是图像处理爱好者,这篇文章都将为你打开一扇新窗,让你看到编程与创意结合的无限可能。
|
16天前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
16天前
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
46 0