每天努力一点点,坚持下去 ------ 博客首页

面试中遇到的面试题

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]

 (2)编写一个函数,找出数组中没有重复的值的和

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])

 (4)找出两个列表中相同的元素和不同的元素

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)

 (5)从0-99这100个数中随机取出10个,要求不能重复

import random
lis=random.sample(range(0,100),10)
print(lis)

(6)实现99乘法表(使用两种方法)

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;

 


 

posted @ 2022-02-07 20:58  他还在坚持嘛  阅读(55)  评论(0编辑  收藏  举报