前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python技术面试题(十九)--腾讯

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

作者头像
小闫同学啊
发布2019-07-18 15:09:46
3.7K0
发布2019-07-18 15:09:46
举报
文章被收录于专栏:小闫笔记小闫笔记

正文共: 4171 字 6 图 预计阅读时间: 11 分钟

因为去面试,停更了几天。在这次面试中,直接教会了我怎么做人......问的问题很深入,也让我明白了自己的水平。很简单的一个问题,深入之后,会衍生出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.多继承写法以及继承顺序问题。

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

代码语言:javascript
复制
class Son(Master, Father):
    pass

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

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

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

6.析构函数

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

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

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

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

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

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

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

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

代码语言:javascript
复制
>>> range(0,20)[2:-2]
range(2, 18)

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

代码语言:javascript
复制
[1,2,3,5,6,7,8][2:-2]

结果为:

代码语言:javascript
复制
[3,5,6]

11.将一个列表去重,并按原始顺序排序。

代码语言:javascript
复制
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.如果将一个列表传入函数中,在函数中修改后,全局的列表会被修改吗?

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

代码语言:javascript
复制
a = [1,2,3]
def fuc(a):
    a.append(1)
    print(a)
fuc(a)

结果为:

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

优质文章推荐:

公众号使用指南

redis操作命令总结

前端中那些让你头疼的英文单词

Flask框架重点知识总结回顾

项目重点知识点详解

难点理解&面试题问答

flask框架中的一些常见问题

团队开发注意事项

浅谈密码加密

Django框架中的英文单词

Django中数据库的相关操作

DRF框架中的英文单词

重点内容回顾-DRF

Django相关知识点回顾

美多商城项目导航帖

项目重要技术点介绍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日分享
  • 面试题和笔试题
    • 1.python中map和reduce?
      • 2.多态
        • 3.事务隔离级别。
          • 4.Django中ORM如何使用?
            • 5.多继承写法以及继承顺序问题。
              • 6.析构函数
                • 7.继承,在执行析构函数时,先执行父类的,还是先执行子类的?
                  • 8.继承时,所有的方法都会被继承吗?
                    • 9.range(0,20)[2:-2]执行结果?
                      • 10.写出下面代码执行结果。
                        • 11.将一个列表去重,并按原始顺序排序。
                          • 12.谈一下单例模式。
                            • 13.简单谈谈ACID,并解释每一个特性。
                              • 14.MySQL的两个主流引擎,并介绍它们的区别。
                                • 15.如果将一个列表传入函数中,在函数中修改后,全局的列表会被修改吗?
                                  • 16.像快排、冒泡之类的必须会手写!!!不光腾讯,每个公司都问!!!可以看文章『这是一个链接』,冒泡排序请看更正文章『这是一个链接』
                                    • 17.之前的那些面试题都有问到,大家多看一下本公众号之前的面试题。下面为大家做了汇总,可以点击跳转对应文章进行查看。
                                      • 18.还有很多问题,太底层,一脸懵逼的题,我也没法写,只能向大家提一下意见。学知识,多问一下为什么,多往底层走一步。比如列表底层实现(当然这次没有问这个)等等。SQL语句,往往简单的查询不会考,都是多张表联合查询,此次综合考了两个查询。算法和数据结构很重要,大公司和小公司都会考!!!还要会手写代码,否则习惯了代码提示的你,手写时会一脸懵逼。
                                      相关产品与服务
                                      数据库
                                      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档