面试题需要注意的坑

Posted pythonz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题需要注意的坑相关的知识,希望对你有一定的参考价值。

# 坑1fromkeys:
# fromkeys():生成新字典 语法dict.fromkeys()
# d = {}
# d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# y = d.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# print(d)  #  输出结果 {}  因为fromkeys会生成新列表对原列表无影响
# print(y)  # ({jay: None, JJ: None}, [周杰伦, 林俊杰]) 生成新字典

# d = dict.fromkeys(["jay", "JJ"], ["周杰伦", "林俊杰"])
# d.get("jay").append("杨千嬅")
# print(d)  # {jay: [周杰伦, 林俊杰, 杨千嬅], JJ: [周杰伦, 林俊杰, 杨千嬅]} # 因为jay 和 jj对应的value是同一个列表,当列表发生改变自然都会改变
# 代码中只是更改了jay那个列表. 但是由于jay和JJ?的是同?个列表. 所以. 前?那个改了. 后
# ?那个也会跟着改

# 坑2
# 函数是以代码的形式存储,用起来的时候在赋值运算
# 在获取数据的时候,注意n到底是几
def add(a, b):
    return a + b
def test():
    for r_i in range(4):
        yield r_i
g = test()
for n in [2, 10]:
    g = (add(n, i) for i in g)
print(list(g))
# print(list(g)) 相当于 g = (add(n, i) for i in add(n, i) for i in test())
# 结果[20, 21, 22, 23]

# 坑3
# def extendList(val, list=[]):
#     list.append(val)
#     return list
# list1 = extendList(10)   # [10,a]
# list2 = extendList(123, []) # [1,2,3]
# list3 = extendList(a)  # [10, a]
#
# print(list1=%s % list1)
# print(list2=%s % list2)
# print(list3=%s % list3)
# 结果
# list1=[10, a]
# list2=[123]
# list3=[10, a]
# 此题关键在于list = [],[]为默认值参数当没有传入元素时都是公用同一个list = []
# 此空列表的内存地址是相同的所以当后面的list3在list = []加入一个a时list1结果也跟着改变

 

以上是关于面试题需要注意的坑的主要内容,如果未能解决你的问题,请参考以下文章

Java工程师面试题,二级java刷题软件

快讯Java工程师面试题,要不要来试试?

Java进阶之光!2021必看-Java高级面试题总结

vue高频面试题(面试路上踩过的坑)

2019校招Java 面试题:百度前200页都在这里了

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!