python技术面试题(十九)--腾讯

简介: python技术面试题(十九)--腾讯

因为去面试,停更了几天。在这次面试中,直接教会了我怎么做人......问的问题很深入,也让我明白了自己的水平。很简单的一个问题,深入之后,会衍生出n多问题。路途遥远,同志仍需努力啊......

这次面试的是腾讯地图项目。面试过程中,数据库以及数据结构与算法占大多数,python的相关知识需要深入,不能只停留表面。以下只列出几个印象深刻的问题。问了超多问题,有些很大,不知从何处写起。(二叉树的实现和遍历,我未写出O-O...大家感兴趣可以看我之前的文章『这是一个链接』,需要手写代码,大家可以多练习一下)

每日分享

Every person is a new door to a different world.

每个人都是通往不同世界的新大门。

小闫语录

每个人都是独一无二的存在,暂时的失意,只是寻找道路的一次尝试。也许尝试的次数多到你曾无数次想放弃,但是放弃又能怎样?请感谢坚持的自己,疼爱坚持的自己,最后的成功只属于你自己。



面试题和笔试题

1.python中map和reduce?

1. map()是python内置的高阶函数,它接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。(python3中返回的迭代器)

2. reduce()函数接收的参数和 map()类似,一个函数f和一个list,但行为和 map()不同, reduce()传入的函数f必须接收两个参数, reduce()对list的每个元素反复调用函数f,并返回最终结果的值。python3使用 reduce需要导入,在 functools中。

2.多态

答:定义时的类型和运行时的类型不一样,此时就是多态。python中,多态就是弱化类型,重点在于对象参数是否有指定的属性和方法,如果有,就认定合适,而不关心对象的类型是否正确。

3.事务隔离级别。

MySQL数据库事务隔离级别主要有四种:

  • Serializable (串行化),一个事务一个事务的执行。
  • Repeatable read (可重复读),无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响。
  • Read committed (读取已提交),其他事务提交了对数据的修改后,本事务就能读取到修改后的数据值。
  • Read uncommitted (读取为提交),其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。

MySQL数据库默认使用可重复读( Repeatable read)。

4.Django中ORM如何使用?

Django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。

使用Django进行数据库开发的步骤如下

1.配置数据库连接信息。

2.在 models.py中定义模型类。

3.迁移。

4.通过类和对象完成数据增删改查操作。

腾讯面试官问:Django中ORM框架的使用,调用了哪个模块?

因为有一段时间没写代码了,对于框架的一些东西记忆并不是很清晰,我只记得当时使用Django框架并没有导包或者调用什么,而是直接写业务逻辑,所以我答的是“Django框架封装了ORM不需要额外安装扩展,可以直接使用”,显然面试官不是很满意,任然追问,我只能是尴尬的微笑一下,面试官在看出不会时,问我是不是忘记了,然后继续了后面的提问。O-O......

定义模型类时,我们继承了 models.Model,这个模块在 django.db中。我们在查询操作时,需要导入模型类,通过类和对象完成数据增删改查。(也许这是面试官想听的吧,我关注点错误的放在了查询时导了什么包....)

5.多继承写法以及继承顺序问题。

答:在多继承时,我们的书写方式:

  1. classSon(Master,Father):
  2.    pass

python中多采用新式类,多继承的时候按照上面的方式进行书写。

多继承会继承所有父类的属性和方法。如果多个父类中有同名的属性和方法,则默认使用第一个父类的属性和方法。我们可以根据 __mro__(是一个魔法方法,称为方法解析顺序,用来获取当前类的方法继承顺序)来查看继承顺序。

在腾讯面试中,面试官质疑我的答案,觉得多个父类有同名的方法,继承的不是第一个。也许是考验我吧,我查找了相关资料发现没有问题.....很尴尬,幸亏当时没有动摇。

6.析构函数

答:析构函数就是当对象结束其生命周期,比如对象所在的函数已经调用完毕,程序结束时,系统自动执行析构函数。在python中,当一个对象的引用计数为0的时候, __del__会被自动调用。 __del__就是一个析构函数。

7.继承,在执行析构函数时,先执行父类的,还是先执行子类的?

答:析构时,会先调用子类的析构函数,再调用父类的。

初始化子类时,会先自动调用父类的构造函数,然后调用子类的构造函数。

8.继承时,所有的方法都会被继承吗?

答:不会,比如构造函数和析构函数,它们不能被继承。

9.range(0,20)[2:-2]执行结果?

python3中range返回的是一个可迭代对象,python2中则是返回一个列表。这个题目我以为python3会报错,特意写出了上面的话。结果面试官的答案显示出了我的无知...

>>> range(0,20)[2:-2]
range(2, 18)

10.写出下面代码执行结果。

[1,2,3,5,6,7,8][2:-2]

结果为:

  1. 11.将一个列表去重,并按原始顺序排序。
1. [3,5,6]
alist = [2,5,6,3,2,6,3,2,8]
new_list = list(set(alist))
new_list.sort(key=alist.index)
print(new_list)
>>>[2, 5, 6, 3, 8]

本来很稳的一道题,结果我在手写的过程中,忘记用新列表接收了,面试官问我对不对,我还自信的说没问题,结果我仔细看的时候,啪啪打脸啊......

12.谈一下单例模式。

答:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。简单的说就是保证只有一个对象,节约内存空间,我们可以通过修改类中的 __new__方法,实现一个简单的单例类。

之前的文章中有相关的代码也写过这个题。『浅谈面向对象』『python技术面试题(十)』点击左侧连接,跳转查看。

13.简单谈谈ACID,并解释每一个特性。

答:ACID是事务的四大特性。分别为原子性,一致性,隔离性和持久性。原子性(Atomicity)指的是一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。一致性(Consistency)指的是数据库总是从一个一致性的状态转换到另一个一致性的状态,如果事务没有提交,中间某一步执行失败,那么事务中所做的修改并不会保存到数据库中。隔离性(Isolation)指的是一个事务所做的修改在最终提交以前,对其他事务是不可见的。持久性(Durability)指的是一旦事务提交,则其所做的修改会永久保存到数据库。

14.MySQL的两个主流引擎,并介绍它们的区别。

答:主流的引擎有两个,分别是 InnoDBMyISAM。其中 InnoDB支持事务,支持外键约束,它还支持行锁(比如select…for update语句,会触发行锁,但是锁定的是索引不是记录)。 MyISAM不支持事务,不支持外键,它是数据库默认的引擎。 InnoDB保存表的行数,如果看这个表有多少行的时候, InnoDB扫描整张表, MyISAM则是直接读取保存的行数即可。删除表的时候 InnoDB是一行一行的删,而 MyISAM则是重建表。 InnoDB适合频繁修改以及安全性要求较高的应用, MyISAM适合查询为主的应用。在我们的项目中使用的是 InnoDB

15.如果将一个列表传入函数中,在函数中修改后,全局的列表会被修改吗?

答:会被修改,作为参数传入函数内部,内部修改相当于修改外部的列表。

  1. a =[1,2,3]
  2. def fuc(a):
  3.    a.append(1)
  4.    print(a)
  5. fuc(a)

结果为:

  1. [1,2,3,1]

可以看出,确实改变了。

16.像快排、冒泡之类的必须会手写!!!不光腾讯,每个公司都问!!!可以看文章『这是一个链接』,冒泡排序请看更正文章『这是一个链接

17.之前的那些面试题都有问到,大家多看一下本公众号之前的面试题。下面为大家做了汇总,可以点击跳转对应文章进行查看。

个人水平有限,可以根据自己情况,自由发挥。

  1. python技术面试题(一)
  2. python技术面试题(二)
  3. python技术面试题(三)
  4. python技术面试题(四)--redis持久化
  5. python技术面试题(五)
  6. python技术面试题(六)--数据库的优化
  7. python技术面试题(七)--SQL语句
  8. python技术面试题(八)
  9. python技术面试题(九)
  10. python技术面试题(十)
  11. python技术面试题(十一)
  12. python技术面试题(十二)--SQL注入、项目部署
  13. python技术面试题(十三)
  14. python技术面试题(十四)--数据库索
  15. python技术面试题(十五)--算法
  16. python技术面试题(十六)--数据结构与算法
  17. 更正--冒泡排序代码
  18. python技术面试题(十七)
  19. python技术面试题(十八)
  20. 浅谈面向对象
  21. python那些包
  22. 字符串的相关操作

18.还有很多问题,太底层,一脸懵逼的题,我也没法写,只能向大家提一下意见。学知识,多问一下为什么,多往底层走一步。比如列表底层实现(当然这次没有问这个)等等。SQL语句,往往简单的查询不会考,都是多张表联合查询,此次综合考了两个查询。算法和数据结构很重要,大公司和小公司都会考!!!还要会手写代码,否则习惯了代码提示的你,手写时会一脸懵逼。


相关文章
|
6天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
14天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
49 2
|
2月前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
48 9
|
2月前
|
数据可视化 数据处理 Python
Python编程中的数据可视化技术
在Python编程中,数据可视化是一项强大的工具,它能够将复杂的数据集转化为易于理解的图形。本文将介绍如何使用matplotlib和pandas这两个流行的Python库来实现数据可视化,并展示一些实用的代码示例。通过这些示例,读者将学会如何创建各种图表,包括折线图、柱状图和散点图等,以便更好地理解和呈现数据。
|
2月前
|
存储 数据挖掘 数据处理
Python中的计票技术
本文介绍了如何使用 Python 进行计票,包括使用字典、`collections.Counter` 和 `pandas` 等方法。通过多个示例详细展示了每种方法的具体应用,帮助读者掌握计票技巧。
32 1
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
100 2
|
2月前
|
算法 Python
Python图论探索:从理论到实践,DFS与BFS遍历技巧让你秒变技术大牛
图论在数据结构与算法中占据重要地位,应用广泛。本文通过Python代码实现深度优先搜索(DFS)和广度优先搜索(BFS),帮助读者掌握图的遍历技巧。DFS沿路径深入搜索,BFS逐层向外扩展,两者各具优势。掌握这些技巧,为解决复杂问题打下坚实基础。
38 2
|
2月前
|
开发框架 开发者 Python
探索Python中的装饰器:技术感悟与实践
【10月更文挑战第31天】 在编程世界中,装饰器是Python中一种强大的工具,它允许我们在不修改函数代码的情况下增强函数的功能。本文将通过浅显易懂的方式,带你了解装饰器的概念、实现原理及其在实际开发中的应用。我们将一起探索如何利用装饰器简化代码、提高可读性和复用性,同时也会分享一些个人的技术感悟,帮助你更好地掌握这项技术。
36 2
|
2月前
|
数据采集 API 定位技术
Python技术进阶:动态代理IP的跨境电商解决方案
Python技术进阶:动态代理IP的跨境电商解决方案
|
2月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
89 0