面试中遇到的面试题
Python
多选题:
1.__init__和__new__的区别
a.__new__用来创建对象,__init__是初始化对象;
b.__new__用来初始化对象,__init__是创建对象;
c.当实例化一个对象时两个方法都会被执行,并且执行顺序是 先__new__再__init__。
d.当实例化一个对象时两个方法都会被执行,并且执行顺序是 先__init__再__new__。
答案:bc(参考:https://blog.csdn.net/weixin_30478923/article/details/97348756)
2.深拷贝和浅拷贝的区别
a.深拷贝是将对象本身复制给另一个对象,这意味着如果对象的副本进行更改时不会影响原对象。
b.浅拷贝是将对象的引用复制给另一个对象,因此,如果在副本中进行更改,会影响原对象。
c.浅拷贝是将对象本身复制给另一个对象,这意味着如果对象的副本进行更改时不会影响原对象。
d.深拷贝是将对象的引用复制给另一个对象,因此,如果在副本中进行更改,会影响原对象。
答案:ab(参考:https://www.cnblogs.com/brf-test/p/13337985.html)
3.is和 ==的区别
答案:is是判断内存地址是否相等。==是判断值是否相等。(参考:https://www.cnblogs.com/wangkun122/p/9082088.html)
笔试题
(1)Python中append,insert和extend的区别?
a_list = [x for x in range(1, 11)] print(a_list) a_list.append('sdadfewf') # 将整个字符串放到列表的最后 print(a_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'sdadfewf'] b_list = [x for x in range(1, 11)] print(b_list) b_list.extend('sdadfewf') # 将字符串中的每个元素放到列表的最后 print(b_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 's', 'd', 'a', 'd', 'f', 'e', 'w', 'f'] c_list = [x for x in range(1, 11)] print(c_list) c_list.insert(3, 'sdadfewf') # 将整个字符串插入到列表索引为3的位置 print(c_list) # [1, 2, 3, 'sdadfewf', 4, 5, 6, 7, 8, 9, 10]
def func(lis): lis1=[] del_lis=[] for i in lis: if i not in lis1: if i not in del_lis: lis1.append(i) else: del_lis.append(i) lis1.remove(i) return sum(lis1) def func2(lis): return sum([i for i in set(lis) if lis.count(i)==1]) print(func2([3,4,1,2,5,6,6,5,4,3,3]))
(3)用一行Python代码,从给定列表中取出所有的偶数和奇数
a = [1,2,3,4,5,6,7,8,9,10] odd, even = [el for el in a if el % 2==1], [el for el in a if el % 2==0] print(odd,even) > ([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
list1=[1,2,3,5,8,7,11,10] list2=[5,15,25,10] sim=[i for i in list1 if i in list2] diff=[i for i in list1+list2 if i not in sim] print(sim) print(diff)
import random lis=random.sample(range(0,100),10) print(lis)
print('\n'.join(['\t'.join(['{}*{}={}'.format(x,y,x*y) for x in range(1,y+1)]) for y in range(1,10)]))
for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s'%(i,j,i*j),end='\t') else: print()
(7)python二进制转中文_python3 二进制转中文
name = '中国万岁' print(name) # 执行结果为:中国万岁 a = name.encode() print(a) # 执行结果为:b'\xe4\xb8\xad\xe5\x9b\xbd\xe4\xb8\x87\xe5\xb2\x81' c = a.decode() print(c) # 执行结果为:中国万岁
(8) 字符中,找出出现次数最少的,如:a='aabcbd',找出cd
方法一:
a = 'aabcbd' d={} for i in a: if i not in d.keys(): d[i]=1 else: d[i]+=1 for i in d.keys(): if d[i]>1: a=a.replace(i,'') print(a)
方法二:
for i in a: if a.count(i)>1: a=a.replace(i,'') print(a)
方法三:
from collections import Counter # 返回所有出现次数最少的字符列表 def find_all_least_common_chars(s): char_counts = Counter(s) min_count = min(char_counts.values()) return [char for char, count in char_counts.items() if count == min_count] # 示例使用 a = 'aabcbd' least_common_chars = find_all_least_common_chars(a) print(least_common_chars) # 输出可能是['b', 'c', 'd'],顺序可能不同
(9)1 到100如何相加如何算出总和
# 方法一 a = 0 for i in range(1, 101): a = a + i print(a) # 方法二 a = sum(range(1, 101)) print(a)
SQL
- 学生成绩表,如何查询到第二名
select score as score from ( select score, RANK() OVER (order by score desc) ranking from score ) a where ranking = 2;
本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/15869164.html