摘要:正确的思路是等概率随机只取出共个数,每个数出现的概率也是相等的随机输出把一段代码改成,并增加单元测试。代码本身很简单,即使没学过也能看懂,改后的代码如下但是对于单元测试则仅限于听过的地步,需要用到,好像也有别的模块。
在拉勾上投了十几个公司,大部分都被标记为不合适,有两个给了面试机会,其中一个自己觉得肯定不会去的,也就没有去面试,另一个经历了一轮电话面加一轮现场笔试和面试,在此记录一下面试的内容,做个小的总结。
上来没废话,直接开始问问题。
is判断两个引用是否指向的是同一个变量,即内存id是否相等,==则是调用的__eq__方法,一般是用于判断值是否相等,也可以重写__eq__方法实现想要的效果。
dict用hash实现,查找的时间复杂度是O(1),list则为O(n)。
注意装饰器函数本身一般有两层,在装饰的时候外层和内层顺序是相反的,详情可以参考这边文章python 多个装饰器的调用顺序。
eval和exec。
这里回答的是GIL相关的东西,可深可浅,自己把握~
广泛意义上来说,上下文是指程序运行的环境,Python中常见于打开文件或网络连接,其实就是with关键字,如:
with open("test.txt") as file: print(file.read())
可以确保文件在最后会被关闭,只要对一个对象实现了__enter__和__exit__函数,就可以构造自己的上下文管理器了。
感觉直接解释概念不好解释,这里我回答的思路是举例子,异步说白了就是任务不需要同步进行,比如用爬虫爬取一个数据,然后再保存数据,接下来再去爬另一个数据,这是同步;异步就是爬虫不用等着数据保存好,爬完一个直接去爬另一个,数据保存的事情交给别的逻辑去慢慢处理;阻塞和非阻塞也是基于此的,同步的情况下会阻塞爬虫,爬虫需要等待数据的保存。(这部分是我自己的理解,建议看看专业的说明)
之前完全没想过这个的问题,我的回答就是按一个差不多的精度去比较,比如到小数点第几位之前都是相等的,就认为两个数相等,或者Math模块里可能有什么方法可以去精确对比,当时是这么回答的,现在查了一下基本也是这个思路,Math模块中有一个isclose函数用来判断两个浮点数的值是否接近或相等
B-Tree(一般是B+Tree)和Hash,然后再简单介绍一下。
只知道WSGI,其余的不清楚,暂时还没去深入看Flask的源码。
跨了大半个北京城,还跟leader撒谎请假,也是心累。笔试题如下:
咩咩咩?不知道。(回来查了是25%,具体可以自行搜索,反正脱离数学N年是无论如何都想不出来的)。
一开始写了个函数如下:
def rand10(): a = rand7() 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
JAVA代码本身很简单,即使没学过也能看懂,改后的Python代码如下:
class MyClass: __current = 0 def next(self): MyClass.__current += 1 return MyClass.__current
但是对于单元测试则仅限于听过的地步,需要用到unittest,好像也有别的模块。
没啥好说的,一行代码必然是列表生成式,假设数组是nums,代码如下:
sorted([n for n in nums if n % 2]) + sorted([n for n in nums if not n % 2], reverse=True)
单例就是说一个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
我平时也就用数据库查数据,在设计数据库上没有深入研究,因此的我答案就简单写了有哪些表,字段分别是什么,至于题中的条件限制,就交由后台的程序逻辑去处理,而不是在数据库设计层面去限制。因为是自己设计的表结构,SQL本身也就不难。
LeetCode原题啊!list怎么能O(1)取得最大值呢,无非是空间换时间,每push一个数就同时记录当前的最大值。
呵呵。
我答的是数据库,因为好多不必要或者可以使用缓存的地方也频繁操作数据库,而且是使用的ORM,但之前从哪看到ORM不能确保对应的SQL语句是最优的,因此可以尝试使用原生SQL或者增加Redis缓存。
(话说这不是运维的工作么。。。)呃,就是增加服务器啊,然后前面加一层负载均衡,把请求分配给不同的服务器。(那不同的服务器怎么使用你的Session?)再加个Session服务器。
LeetCode才开始刷,就举了两道Codewars上的题目,我也真是傻了,真的举了两道有意思(但自己没做好)的题。
其他就无非是一些为什么想做后端开发之类的问题了,个人感觉题目大部分也挺简单的,我的表现也算中规中矩吧,但面试官说我要进一步加强基础知识,具体哪方面(数据库、网络协议、还是Python本身)又语焉不详。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41573.html
摘要:当我们的需求出现变动时,工厂模式会需要进行相应的变化。总结来说,要想成功进行一次阿里巴巴的面试,你需要了解甚至掌握以下内容语言,尤其是线程原理数据库事务,加锁,重点分布式设计模式可以说是涉及范围非常广了。 showImg(https://segmentfault.com/img/bV8cSY?w=576&h=432); 前言 今天本是一个阳光明媚,鸟语花香的日子。于是我决定在逛街中感受...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 03月份前端资源分享 1. Javascript 175453545 Redux compose and middleware 源码分析 深入 Promise(二)——进击的 Promise Effective JavaScript leeheys blog -...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 03月份前端资源分享 1. Javascript 175453545 Redux compose and middleware 源码分析 深入 Promise(二)——进击的 Promise Effective JavaScript leeheys blog -...
平日学习接触过的网站积累,以每月的形式发布。2017年以前看这个网址:http://www.kancloud.cn/jsfron... 03月份前端资源分享 1. Javascript 175453545 Redux compose and middleware 源码分析 深入 Promise(二)——进击的 Promise Effective JavaScript leeheys blog -...
阅读 3713·2021-11-17 09:33
阅读 2723·2021-09-22 15:12
阅读 3343·2021-08-12 13:24
阅读 2438·2019-08-30 11:14
阅读 1732·2019-08-29 14:09
阅读 1324·2019-08-26 14:01
阅读 3060·2019-08-26 13:49
阅读 1774·2019-08-26 12:16