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语句,往往简单的查询不会考,都是多张表联合查询,此次综合考了两个查询。算法和数据结构很重要,大公司和小公司都会考!!!还要会手写代码,否则习惯了代码提示的你,手写时会一脸懵逼。


相关文章
|
7天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
22 1
|
6天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
20 0
|
6天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
7天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
13 1
Flask框架在Python面试中的应用与实战
|
8天前
|
数据可视化 Python
Python模型评估与选择:面试必备知识点
【4月更文挑战第17天】本文深入探讨了Python模型评估与选择在面试中的关键点,包括性能度量、过拟合与欠拟合识别、模型比较与选择、模型融合和偏差-方差权衡。强调了避免混淆评估指标、忽视模型验证和盲目追求高复杂度模型的常见错误,并提供相关代码示例,如交叉验证、网格搜索和超参数调优。通过理解这些概念和技巧,可在面试中展示出色的数据科学能力。
31 12
|
8天前
|
机器学习/深度学习 搜索推荐 Python
Python特征工程面试:从理论到实践
【4月更文挑战第17天】本文探讨了Python在数据科学面试中的特征工程,涵盖基础概念如特征选择和提取,实战技能如缺失值和异常值处理,以及特定场景应用。强调避免过度依赖单一方法,忽视数据分布和相关性,以及保持特征工程的可解释性。提供代码示例展示了处理缺失值、标准化、特征选择和异常值检测的基本操作。建议结合业务理解,灵活运用多种方法并注重模型解释性。
23 9
|
8天前
|
数据采集 机器学习/深度学习 数据挖掘
Python数据清洗与预处理面试题解析
【4月更文挑战第17天】本文介绍了Python数据清洗与预处理在面试中的常见问题,包括Pandas基础操作、异常值处理和特征工程。通过示例代码展示了数据读取、筛选、合并、分组统计、离群点检测、缺失值和重复值处理、特征缩放、编码、转换和降维。强调了易错点,如忽视数据质量检查、盲目处理数据、数据隐私保护、过度简化特征关系和忽视模型输入要求。掌握这些技能和策略将有助于在面试中脱颖而出。
24 8
|
9天前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
28 5
|
9天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
133 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
9天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
29 6