今天面试碰见三个问题

来源:8-4 缓存机制及Redis常考面试题

慕瓜2058331

2019-03-14

话说今天头一回面试 结果问的问题几乎全是python相关的。。。有点遭不住。
还记得有三个问题没答上来:
1.nginx跟gunicorn通信的方式是什么?
2.tuple([1, 2])是浅拷贝还是深拷贝?
3.设计一个函数,将形如{'jack':{'math':{'teacher':'xxx', 'score':'10'}}}的字典展开成形如{'jack_math_teacher': 'xxx', 'jack_math_score': '10'}这样的字典?
希望大家也可以讨论讨论碰着的面试题。

写回答

3回答

码农小杨

2019-03-16

第一个应该是通过 NGINX配置里面的模块协议

第二个问题 如果是可变对象 作为参数 那么是浅拷贝

第三个问题 递归

我写下我简陋的写法 

key_string = ''
result_dict = {}


def dict_compress(some_dict):
   global key_string
   global result_dict

   for key, value in some_dict.items():

       if isinstance(value, dict):
           key_string += str(key)
           key_string += '_'
           return dict_compress(value)
       else:
           result_key = key_string + str(key)
           result_dict.update({result_key: value})

   return result_dict



等待老师回答

0
1
半亩糖
def dict_compress(key_string='', some_dict=None): result_dict = {} if some_dict is None: some_dict = {} source_key = key_string for key, value in some_dict.items(): if isinstance(value, dict): key_string += str(key) key_string += '_' some_dict.pop(key) return dict(dict_compress(key_string, value), ** dict_compress(source_key, some_dict)) else: result_key = key_string + str(key) result_dict.update({result_key: value}) return result_dict
2022-05-12
共1条回复

djjcool

2019-03-15

我也是个小菜鸟。。。

第一个我看法和你一样。

第二个是浅拷贝

第三个,还蛮复杂的,我这么写的

def unpack(d):
    new_dic = {}
    for name in d:
        for subj in d[name]:
            for info in d[name][subj]:
                new_dic[name+"_"+subj+"_"+info]=d[name][subj][info]
            return new_dic






0
2
djjcool
回复
慕瓜2058331
理解你的意思了,谢啦
2019-03-15
共2条回复

慕瓜2058331

提问者

2019-03-14

第一个问题我回答是unix socket 面试官也没说对不对。。。

0
2
西毒欧阳锋
对的域套接字
2019-12-17
共2条回复

Python工程师面试宝典 一线大厂资深面试官亲授

Python工程师面试必看,资深面试官亲授,倍增面试成功率

1035 学习 · 102 问题

查看课程