python相关内容二

1.技术面试题

(1)详细描述单调栈的工作原理和应用场景

答:工作原理:维护一个栈结构,栈中元素保持单调递增或单调递减的顺序。遍历数据时,新元素入栈前,弹出栈顶所有不满足单调关系的元素,再将新元素入栈,确保栈的单调性。

应用场景:解决下一个元素更大的问题,如数组中后面一个元素比前面一个入栈的元素大,则需要上一个元素出栈,然后大的那个元素入栈。

(2)详细描述单调队列的工作原理和应用场景

答:工作原理:维护队列内元素单调性,不管是单调递增还是单调递减,新元素入队前,移除队尾破坏单调性的元素;若队首元素无效(如滑动窗口外)也移除,保证队列单调且有效

应用场景:解决滑动窗口最值问题,或优化动态规划,辅助快速取区间极值做状态转移 。

2.HR面试题

(1)如果竞争对手用双倍薪资挖你,你会怎么选择?

答:首先思考一下我现在的公司是否还是稳定的,我是否还有成长的空间,如果没有则可以考虑,如果我现在的公司还是很稳定,工作环境和氛围很号,我就会委婉的对竞争对手。

(2)我们觉得你今天表现一般,不符合岗位要求,你有什么想说的?

答:感谢您直言反馈,我理解面试表现没达到预期。可能因紧张,一些与岗位相关的内容没清晰呈现。我的能力是长期积累沉淀的,您现在可能没有看见我真实的样貌,若您能给我次机会,我相信在以后的工作岗位上您能够看见我的表现的。

3.选择题

(1)在Python中,以下哪个不是循环控制语句?

A. break
B. continue
C. pass
D. return

答:D a是跳出循环,b是跳过当前循环,进入下一个循环,c是占位语句,在循环等结构中可维持语法完整。

(2)以下代码的输出结果是什么?

for i in range(5):
    if i == 3:
        continue
    print(i, end=' ')

A. 0 1 2 3 4
B. 0 1 2 4
C. 0 1 2
D. 3

答:B 循环五次,从0开始到4,当i=3时会跳过当前循环,进入下一次循环

(3)完成以下代码,使其能够打印出1到100之间所有的偶数:

for i in range(1, 101):
    if ______:
        print(i, end=' ')

A. i % 2 == 0
B. i % 2 == 1
C. i / 2 == 0
D. i // 2 == 0

答:A

b 是判断奇数

c 和d都是除2

(4)以下代码有一个错误,导致它无法正确计算1到10的和。请选择正确的修改方案:

sum = 0
i = 1
while i < 10:
    sum += i
    i += 1
print(sum)

A. 将i < 10改为i <= 10
B. 将i += 1改为i += 2
C. 将sum += i改为sum = sum + i + 1
D. 将i = 1改为i = 0

答:A

原代码 while i < 10 ,循环到 i=9就结束,无法包含 10。要计算 1 到 10 的和,需让循环条件包含 10,即i <= 10 。B 会改变累加数字间隔,C 错误修改累加逻辑,D 会引入多余数字,所以选 A 。

(5)以下代码的输出结果是什么?

for i in range(3):
    for j in range(2):
        print(f"({i},{j})", end=' ')

A. (0,0) (0,1) (1,0) (1,1) (2,0) (2,1)
B. (0,0) (1,0) (2,0) (0,1) (1,1) (2,1)
C. (0,0) (0,1) (0,2) (1,0) (1,1) (1,2)
D. (0,0) (1,1) (2,2)

答:A 这个外层循环是取不到3的,内存取不到2

(6)完成以下代码,使其能够打印出斐波那契数列的前10个数:

a, b = 0, 1
for _ in range(10):
    print(a, end=' ')
    ______

A. a, b = b, a + b
B. a, b = a + b, b
C. a, b = b, a
D. a, b = a + 1, b + 1

答:A

(7)以下代码的输出结果是什么?

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i, end=' ')
else:
    print("Done")

A. 1 2 3 4 5 Done
B. 1 2 4 5 Done
C. 1 2 4 5
D. 1 2 Done

答:B

(8)以下代码的输出结果是什么?

for i in range(1, 5):
    for j in range(1, 5):
        if i * j > 10:
            break
        print(f"{i}*{j}={i*j}", end=" ")
    print()

A.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 3*4=12 
4*1=4 4*2=8 4*3=12 4*4=16 

B.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 

C.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 

D.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 

答:B

(9)以下代码的输出结果是什么?

for i in range(4):
    for j in range(4):
        if (i + j) % 2 == 0:
            print("*", end="")
        else:
            print("#", end="")
    print()

A.

****
####
****
####

B.

*#*#
#*#*
*#*#
#*#*

C.

*#*#
*#*#
*#*#
*#*#

D.

****
****
****
****

答:B

(10)以下代码的输出结果是什么?

count = 0
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if i != j and j != k and i != k:
                count += 1
print(count)

A. 24
B. 36
C. 60
D. 64

答:A

4.问答题

(1)Python中有哪几种基本的循环结构?请简要说明它们的语法和适用场景。

答:for和while循环。for 变量 in range ():代码块 while 条件表达式 :代码块

for适用于已知循环次数 ,while适用于循环次数不确定,靠条件判断

(2)Python中有哪些循环控制语句?它们各自的作用是什么?请给出示例说明。

答:break:立即终止当前所在循环),跳出循环体执行后续代码。

for i in range(1, 5):
    for j in range(1, 5):
        if i * j > 10:
            break
        print(f"{i}*{j}={i*j}", end=" ")
    print() 
"""输出  1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8""" 

continue:跳过当前循环,进入下一次循环

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i, end=' ')
else:
    print("Done")  #输出:1 2 4 5 Done

else:循环正常结束时执行

for i in range(3):
    print(i)
else:
    print("循环正常结束")  # 输出 0、1、2 后,执行该句

(3)在Python的for循环中,range()函数扮演着重要角色。请详细说明range()函数的语法、参数含义和使用方法,并给出至少3个不同用法的示例。

答:range() 语法:range([start,] stop [, step])
start(可选):起始值,默认 0,整数,生成序列从 start 开始。
stop(必选):结束值。到stop值前一个结束。
step(可选):步长,默认 1,整数,控制序列中数的间隔,step>0 递增,step<0 递减;

只有stop

for i in range(5):
    print(i)  # 输出 0、1、2、3、4 ,默认 start=0,step=1,生成 0 到 4 的整数序列

有start和stop

for i in range(2, 7):
    print(i)  # 输出 2、3、4、5、6 ,start=2,stop=7,生成 2 到 6 的整数序列

三个参数都有

for i in range(1, 10, 2):
    print(i)  # 输出 1、3、5、7、9 生成间隔为 2 的递增序列 

(4)什么是嵌套循环?请解释嵌套循环的工作原理。

答:嵌套循环是循环里再嵌套循环,外层循环每执行一次,内层循环就完整执行一轮 ,内层循环依赖外层循环控制,共同实现复杂重复逻辑。 比如外层循环控制行数,内层循环控制每行内容输出次数 。

(5)编写代码,判断两个矩形的关系

题目描述

判断两个矩形之间的关系:包含,重叠,相离

image-20250304171517426

输入输出描述

输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高

输出两者的关系

示例1

输入:

2.5 4 2.5 43

1.5 5 0.5 3

输出:

包含

示例2

输入:

1 2 3 5.5

3 4 4.5 5

输出:

重叠

示例3

输入:

1 2 3 3

40 45 3 2

输出:

相离

答:

x1,y1,w1,h1 = map(float,input("请输入第一个矩形相相关信息").split())
x2,y2,w2,h2 = map(float,input("请输入第二个矩形的相关信息").split())

#中心点到边界的距离
left1=x1-w1/2
right1=x1+w1/2
top1=y1+h1/2
bottom1=y1-h1/2

left2=x2-w2/2
right2=x2+w2/2
top2=y2+h2/2
bottom2=y2-h2/2

if (left1 <= left2 and right1 >= right2 and top1 >= top2 and bottom1 <= bottom2) or (left2 <= left1 and right2 >= right1 and top2 >= top1 and bottom2 <= bottom1):
    print("包含")
elif (right1 >= left2 and left1 <= right2 and top1 >= bottom2 and bottom1 <= top2):
    print("重叠")
else:
    print("相离")

(6)编写代码,打印如下数字图案

                        1
                    1	2	1
                1	2	4	2	1
            1 	2	4	8	4	2	1
        1	2	4	8	16	8	4	2	1
    1	2	4	8	16	32	16	8	4	2	1
1	2	4	8	16	32	64	32	16	8	4	2	1

答:

for i in range(7):
    for k in range(6 - i):
        print("  ", end=" ")
    num = 1
    for j in range(i + 1):
        print(f"{num:3}", end="")
        num *= 2
    num //= 4
    for j in range(i):
        print(f"{num:3}", end="")
        num //= 2
    print()

(7)编写代码,打印如下星星图案

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

答:

n = 9
mid = n // 2
for i in range(1, n + 1):
    kg = abs(i - mid - 1)
    for k in range(kg):
        print(" ", end="")
    count = n - 2 * kg
    for j in range(count):
        print("*", end="")
    print()

(8)编写代码,求最小公倍数

题目描述

输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15

输入输出描述

输入两个正整数

输出最小公倍数

示例1

输入:

3 9

输出:

9

示例2

输入:

4 6

输出:

12

答:

a, b = map(int, input().split())
max_num = max(a, b)
while True:
    if max_num % a == 0 and max_num % b == 0:
        print(max_num)
        break
    max_num += 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值