Python后端开发面试总结

Python后端开发面试总结

1. is和==的区别?

is判断两个引用是否指向的是同一个变量,即内存id是否相等,==则是调用的eq方法,一般是用于判断值是否相等,也可以重写eq方法实现想要的效果。

2. dict与list的查找复杂度?

dict用hash实现,查找的时间复杂度是O(1),list则为O(n)。

3. a/b/c三个装饰器依次装饰函数fun(),装饰器的执行顺序?

注意装饰器函数本身一般有两层,在装饰的时候外层和内层顺序是相反的,详情可以参考这边文章python 多个装饰器的调用顺序。

4. 如何运行一个字符串?

eval和exec。

5. Python多线程能否充分利用CPU多核心,为什么?

这里回答的是GIL相关的东西,可深可浅,自己把握~

6. 什么是上下文管理器?如何实现?

广泛意义上来说,上下文是指程序运行的环境,Python中常见于打开文件或网络连接,其实就是with关键字,如:

with open("test.txt") as file:  
    print(file.read())

可以确保文件在最后会被关闭,只要对一个对象实现了enterexit函数,就可以构造自己的上下文管理器了

7. 同步/异步/阻塞/非阻塞都是什么?

感觉直接解释概念不好解释,这里我回答的思路是举例子,异步说白了就是任务不需要同步进行,比如用爬虫爬取一个数据,然后再保存数据,接下来再去爬另一个数据,这是同步;异步就是爬虫不用等着数据保存好,爬完一个直接去爬另一个,数据保存的事情交给别的逻辑去慢慢处理;阻塞和非阻塞也是基于此的,同步的情况下会阻塞爬虫,爬虫需要等待数据的保存.(非专业解释)

8. 如何判断两个浮点数是否相等?

之前完全没想过这个的问题,我的回答就是按一个差不多的精度去比较,比如到小数点第几位之前都是相等的,就认为两个数相等,或者Math模块里可能有什么方法可以去精确对比,当时是这么回答的,现在查了一下基本也是这个思路,Math模块中有一个isclose函数用来判断两个浮点数的值是否接近或相等.

9. MySQL的索引一般是怎么实现的?

B-Tree(一般是B+Tree)和Hash,然后再简单介绍一下。

10. 对于Flask的实现有了解吗?

只知道WSGI,其余的不清楚,暂时还没去深入看Flask的源码。

Part 二

1. 一个木棍任意截成三段,围成三角形的概率?

咩咩咩?不知道。(回来查了是25%,具体可以自行搜索,反正脱离数学N年是无论如何都想不出来的)。

2. 一个函数RAND7()随机返回1~7,使用它构造一个RAND10()函数随机返回10。

一开始写了个函数如下:

def rand10():  
a = rand7() + 3/10  
b = rand7() - 4  
if b < 0:  
b = 0  
return a + b

也是脑袋抽了,想得太简单,这个rand10虽然能返回1~10的随机数,但每个数出现的概率不是1/10,后面时间快到了检查的时候才反应过来。正确的思路是:

def rand10():  
while  1:  
       res = (rand7()-1)*7+rand7()    \# res等概率随机1~49  
if res < 40: \# 只取出0~39共40个数,每个数出现的概率也是相等的  
return res % 10 \+ 1 \# 随机输出1~10

3. 把一段JAVA代码改成Python,并增加单元测试。

JAVA代码本身很简单,即使没学过也能看懂,改后的Python代码如下:

class MyClass:  
__current = 0  
def next(self):  
MyClass.__current += 1  
return MyClass.__current

但是对于单元测试则仅限于听过的地步,需要用到unittest,好像也有别的模块。

4. 给定一个数组,按奇数在前升序,偶数在后降序排列,一行代码实现。

没啥好说的,一行代码必然是列表生成式,假设数组是nums,代码如下:

sorted(\[n for n in nums if n % 2\]) \+ sorted(\[n for n in nums if  not n % 2\], reverse=True)

5. 实现单例。

单例就是说一个class只能有一个instance,实现的方法有很多,例如改写new方法:

class Singleton(object):  
_instance = None  
def \_\_new\_\_(cls, \*args, \*\*kw):  
if  not cls._instance:  
           cls.\_instance = super(Singleton, cls).\_\_new__(cls, \*args, \*\*kw)    
return cls._instance

6. 有一个问答平台,每个用户对一个问题最多只能回答一次,同一个问题最多只能对一个答案点赞;1)设计合适的数据库结构;2)写出SQL获取点赞数最多的10个问题;

我平时也就用数据库查数据,在设计数据库上没有深入研究,因此的我答案就简单写了有哪些表,字段分别是什么,至于题中的条件限制,就交由后台的程序逻辑去处理,而不是在数据库设计层面去限制。因为是自己设计的表结构,SQL本身也就不难。

7. 设计一个栈,实现pop/push及max方法,要求能在O(1)时间内取得最大值。

LeetCode原题啊!list怎么能O(1)取得最大值呢,无非是空间换时间,每push一个数就同时记录当前的最大值。

8. 手写快排。

呵呵。

其他针对简历的提问

1. 你的网站,你觉得如果访问量上去了,最先出现瓶颈问题的点是哪?怎么优化?

我答的是数据库,因为好多不必要或者可以使用缓存的地方也频繁操作数据库,而且是使用的ORM,但之前从哪看到ORM不能确保对应的SQL语句是最优的,因此可以尝试使用原生SQL或者增加Redis缓存。

2. 如果要扩展后台服务器,需要怎么做?

(话说这不是运维的工作么。。。)呃,就是增加服务器啊,然后前面加一层负载均衡,把请求分配给不同的服务器.(那不同的服务器怎么使用你的Session?)再加个Session服务器。

3. 我看你平时刷编程题,有遇到什么有意思的题目吗?

LeetCode才开始刷,就举了两道Codewars上的题目,我也真是傻了,真的举了两道有意思(但自己没做好)的题。

其他就无非是一些为什么想做后端开发之类的问题了,个人感觉题目大部分也挺简单的,我的表现也算中规中矩吧,但面试官说我要进一步加强基础知识,具体哪方面(数据库、网络协议、还是Python本身)又语焉不详。

原文地址

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 第一部分 Python基础篇(80题) 1、为什么学习Python? Python相对于其他编程语言有很多优点: ...
    清清子衿木子水心阅读 1,697评论 0 1
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,893评论 2 89
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,680评论 2 59
  • 今天,听着下雨声,我睡着了。下面的室友在打游戏,打着打着,我感觉我醒来了。我就去和以前的朋友去吃午饭,在吃的过程中...
    等待下一页相遇阅读 186评论 0 0
  • 如果说三线城市人可能会面临进入自身舒适怪圈的问题,那么我还要说,舒适怪圈本身也是三线城市独有的福利,如果你是一个乐...
    狂人包阅读 701评论 5 9