(1)详细描述单调栈的工作原理和应用场景
答:单调栈是一种栈结构,其元素在栈内保持单调(递增或递减)。以递增单调栈为例,新元素入栈时,若栈顶元素大于等于新元素,就弹出栈顶元素,直到栈顶元素小于新元素,再将新元素入栈。这样保证了栈内元素单调递增。
应用场景:常用于求解下一个更大元素问题。例如数组[2,1,2,4,3],对每个元素找其右边第一个更大元素。利用单调栈,时间复杂度为O(n)O(n)O(n)。还可用于计算直方图最大矩形面积等,通过维护单调栈来高效处理元素间的大小关系。
(2)详细描述单调队列的工作原理和应用场景
答:单调队列基于双端队列实现。以求最大值的单调递减队列为例,新元素从队尾入队时,若队尾元素小于新元素,就删除队尾元素,直到队尾元素大于等于新元素再入队。队头元素超出窗口范围时从队头删除。这样队列内元素单调递减,队头始终是窗口内最大值。
应用场景:典型是滑动窗口最大值问题。如数组[1,3,-1,-3,5,3,6,7],窗口大小为3。利用单调队列,每个窗口移动时,时间复杂度为O(1)O(1)O(1)均摊。也可用于滑动窗口最小值等类似问题,高效处理窗口内极值。
(1)如果竞争对手用双倍薪资挖你,你会怎么选择?
答:首先,我会感谢竞争对手的认可。但我不会仅仅因为薪资翻倍就轻易跳槽。我会综合考虑。现公司给了我成长的平台,团队氛围好,我在项目中承担重要角色且有明确晋升空间。如果只为钱去新公司,可能面临业务不熟悉、团队融合等问题。当然,如果新公司在技术领域有重大突破,能让我接触前沿技术,助力长远职业发展,我会慎重评估。但目前,我更看重现公司的整体环境和未来潜力,不会因短期薪资诱惑离开
(2)我们觉得你今天表现一般,不符合岗位要求,你有什么想说的?
答:非常感谢您能给我这样直接的反馈,这对我来说是一次宝贵的成长机会。我深知今天的表现可能没达到您心中的预期,或许是在某些环节的表达不够精准或自信有所欠缺。但请您相信,我对这个岗位是充满热忱且做了大量准备的。我反思今天的表现,可能是过于想把所有优势展现出来,导致节奏没把握好。如果能有幸加入贵公司,我会以最快速度适应企业文化和工作节奏,针对今天表现的不足,我会立刻改进。我坚信自己的专业能力和积极态度能为团队创造价值,希望您能再给我一次机会,让我用实际行动证明自己完全能胜任这个岗位。
(1)在Python中,以下哪个不是循环控制语句?
A. break
B. continue
C. pass
D. return
答: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
(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
(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
(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
(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
(1)Python中有哪几种基本的循环结构?请简要说明它们的语法和适用场景。
答:Python有while循环和for循环。while语法:while 条件: 循环体,当条件为真时执行循环体,适用于不确定循环次数,根据条件判断是否继续的场景,如count = 0; while count < 5: print(count); count += 1。for语法:for 变量 in 可迭代对象: 循环体,用于遍历可迭代对象(如列表、字符串等),像for i in [1, 2, 3]: print(i)。
(2)Python中有哪些循环控制语句?它们各自的作用是什么?请给出示例说明。
答:有break、continue。break作用是立即终止本层循环,如for i in range(10): if i == 5: break; print(i)(输出0 - 4)。continue是跳过本次循环后续代码,继续下一次循环,如for i in range(10): if i % 2 == 0: continue; print(i)(输出1、3、5、7、9)。
(3)在Python的for循环中,range()函数扮演着重要角色。请详细说明range()函数的语法、参数含义和使用方法,并给出至少3个不同用法的示例。
答:语法range(start, stop, step)(start默认0,step默认1)。参数:start起始值(含),stop结束值(不含),step步长。示例:range(5)(0 - 4);range(2, 8)(2 - 7);range(1, 10, 2)(1、3、5、7、9)。
(4)什么是嵌套循环?请解释嵌套循环的工作原理。
答:嵌套循环是在一个循环体内又包含另一个完整循环结构。工作原理:外层循环每执行一次,内层循环完整执行一轮。如for i in range(3): for j in range(2): print(f"i={i}, j={j}"),外层i从0到2,每次i变化,内层j从0到1完整循环
(5)编写代码,判断两个矩形的关系
题目描述
判断两个矩形之间的关系:包含,重叠,相离
输入输出描述
输入两行,每行四个数据,分别是矩形的中心坐标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(" "))
if abs(x1 - x2) <= 1/2 * abs(w1 - w2) and abs(y1 - y2) <= 1/2 * abs(h1 - h2):
print("包含")
elif abs(x1 - x2) >= 1/2 * (w1 + w2) or abs(y1 - y2)> 1/2 * (h1 + h2):
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(1, 8):
for k in range(7 - i):
print(" ", end="")
current = 1
for j in range(i):
print(f"{current:3d}", end="")
current *= 2
current = current // 4
for j in range(i - 1):
print(f"{current:3d}", end="")
current //= 2
print()
(7)编写代码,打印如下星星图案
*
***
*****
*******
*********
*******
*****
***
*
答:
# 在此写入你的代码
n = 9
for i in range(1, n + 1):
for k in range(abs(i - n // 2 - 1)):
print(" ", end="")
stars_count = 2 * min(i, n + 1 - i) - 1
for j in range(stars_count):
print("*", end="")
print
(8)编写代码,求最小公倍数
题目描述
输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
输入输出描述
输入两个正整数
输出最小公倍数
示例1
输入:
3 9
输出:
9
示例2
输入:
4 6
输出:
12
答:
# 在此写入你的代码
num1,num2 = map(int, input("请输入正整数").split(" "))
max_num = max(num1, num2 * num1)
for i in range(num1, (num1 * num2) + 1, 1):
if i % num1 == 0 and i % num2 == 0:
print(i)
break