2017年度python面试题超纲20道(完)

昨天有没有失眠 困不困

相关链接:

  我知道,我知道大家技术面的时候问的大多都是相关于项目的问题,我也是,但是到三面时候高层会心血来潮问你个极其底层的问题(没错是我本人了),这次与底层关系不大,是一些笔试题,难度均不是很大,不过善始善终嘛。

What happens when you assign the value of one variable to another variable in Python?

在Python中,当你用一个变量给另外一个变量赋值时会发生什么?

>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42

  不知道大家C语言基础怎么样,其实完全可以当做c的指针来理解。
  之前文章中说过些概念:

  • Python所有对象都在heap上,因此每个对象都是指针。
  • Pytohn的数字也是对象,你定义的整形1实际上是对对象1的引用。而且Python使用引用计数,所以当一个对象放在一个新的容器,它的引用计数必须递增,所以pytohn不仅仅是复制引用。
      在这里顺序是这样:
>>> spam = 42     # spam 指向对象42
>>> cheese = spam # spam 将值(对象42的地址)赋值给 cheese 
                  # cheese 指向spam所指向的对象(也就是42)
>>> spam = 100    # spam 指向对象100
>>> spam          # spam 指向对象100
100
>>> cheese        # cheese 指向对象100
42

  指针赋值不改变所指对象的内容。

Understanding *x ,= list

如何理解语句 *x ,= list

  首先这是python3语法,如果你用的python2瞄一眼就好了,嗯...其实python3瞄一眼也好了,今天的题目真的好简单。
  其实就是语法糖,觉得跟x = p[:]差不多。看代码:

>>> p = [1, 2, 3]
>>> *x, = p
>>> x == p
True
>>> x is p
False
>>>y, *x = p
>>>y
1
>>>*x
[2, 3]
>>> x = p # 直接赋值 浅拷贝
>>> x == p
True
>>> x is p
True

关于图的算法题 难度低于acm

Problem

Say you have two lists A = [a_1, a_2, ..., a_n] and B = [b_1, b_2, ..., b_n] of integers. We say A is potentially-divisible by B if there is a permutation of B that makes a_i divisible by b_i for all i. The problem is then: is it possible to reorder (i.e. permute) B so that a_i is divisible by b_i for all i? For example, if you have

A = [6, 12, 8]
B = [3, 4, 6]

Then the answer would be True, as B can be reordered to be B = [3, 6, 4] and then we would have that a_1 / b_1 = 2, a_2 / b_2 = 2, and a_3 / b_3 = 2, all of which are integers, so A is potentially-divisible by B.

As an example which should output False, we could have:

A = [10, 12, 6, 5, 21, 25]
B = [2, 7, 5, 3, 12, 3]

The reason this is False is that we can't reorder B as 25 and 5 are in A, but the only divisor in B would be 5, so one would be left out.

Approach

Obviously the straightforward approach would be to get all the permutations of B and see if one would satisfy potential-divisibility, something along the lines of:

import itertools
def is_potentially_divisible(A, B):
   perms = itertools.permutations(B)
   divisible = lambda ls: all( x % y == 0 for x, y in zip(A, ls))
   return any(divisible(perm) for perm in perms)

Question

What is the fastest way to know if a list is potentially-divisible by another list? Any thoughts? I was thinking if there's is a clever way to do this with primes, but I couldn't come up with a solution.

  就关于图的算法题,比大学时候acm简单太多,不翻译了啊,反正愿意看这题的一定觉得算法题是英文才亲切吧,就有兴趣的看一下代码,逻辑不通的私信我帮你讲解~

import networkx as nx

def is_potentially_divisible(multiples, divisors):
    if len(multiples) != len(divisors):
        return False

    g = nx.Graph()
    g.add_nodes_from([('A', a, i) for i, a in enumerate(multiples)], bipartite=0)
    g.add_nodes_from([('B', b, j) for j, b in enumerate(divisors)], bipartite=1)

    edges = [(('A', a, i), ('B', b, j)) for i, a in enumerate(multiples)
             for j, b in enumerate(divisors) if a % b == 0]
    g.add_edges_from(edges)
    m = nx.bipartite.maximum_matching(g)
    return len(m) // 2 == len(multiples)

print(is_potentially_divisible([6, 12, 8], [3, 4, 6]))
# True
print(is_potentially_divisible([6, 12, 8], [3, 4, 3]))
# True
print(is_potentially_divisible([10, 12, 6, 5, 21, 25], [2, 7, 5, 3, 12, 3]))
# False

  真的比acm简单太多,嗯...假如你是学生在看我文章,恰巧你准备参加acm之类的比赛,那你加油~过来人跟你说,这类比赛真的对你有帮助

  不行了,怕是不能善始善终了,剩下的问题就真的很无聊,比如:

  • 增加Python代码逻辑层数的上限个数
    • python是有逻辑层数上限20没错了,但是谁会超过20啊...
  • 把一个变量赋值给自己,是什么作用?
    • 其实就是局部变量给同名全局变量,提问的人没给上下文,大家的回答一顿瞎猜,直到提问的人贴了代码
  • ...

  昨天失眠,今天困的头疼,抽空在休息时间把文章写了出来,如果这次文章哪里不到位大家评论指正就好了,谢谢包涵。
  之后的文章将说下python实现异步爬虫,这两天上网看了下,发现网上这一类文档不算写的太明白,大部分代码一贴完事了,我准备自己梳理下写下来,如果有兴趣可以关注我,这周内更新(吧)。
  新的一周,生活愉快~

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

推荐阅读更多精彩内容

  • 文/怡然美好原创 01 “嘭嘭嘭”,“安娜你的快递!”一位带着黑色礼帽,穿着黑色长款风衣的快递员大声喊道。 安娜放...
    怡然美好阅读 728评论 3 8
  • 3月19日 冒雨跑完10公里的迷你马拉松,兴冲冲的跑去领取纪念章,纪念章的样子还是有点小失望,幸好重量凑够数,也能...
    沙包妹妹阅读 284评论 0 0
  • 我想去扬州, 不为瘦西湖的景, 不想游历各位名人古迹, 不愿吃醉蟹和狮子头。 我只想看李白写的诗的地方, 烟花三月...
    顾纯熙阅读 193评论 5 4