1.技术面试题
(1)详细描述单调栈的工作原理和应用场景
答:原理:是一种特殊的数据结构。让栈内的元素保持单调递增或单调递减。等到比最大或最小的数,大或小时,加入新元素。
场景:计算最大矩形面积
(2)详细描述单调队列的工作原理和应用场景
答:原理:是个队列。元素从队头到队尾保持单调递增或单调递减。如递增时,新元素从队尾进队列,要是队尾的数比新元素大,就把队尾数扔掉,直到队尾的数不大于新元素,再把新元素放进去。
场景:滑动窗口最值问题。
2.HR面试题
(1)如果竞争对手用双倍薪资挖你,你会怎么选择?
答:我非常感谢现公司给予我的发展平台和成长机会,在这里我不仅提升了专业技能,还融入了优秀的团队。在这里我有明确的晋升通道和学习新技能的机会,这对我的长远发展更为重要,所以,我依然会选择坚守在现岗位,为公司的发展继续贡献自己的力量 。
(2)我们觉得你今天表现一般,不符合岗位要求,你有什么想说的?
答:非常感谢您能给予我如此直接的反馈,我很尊重您的专业判段,这是因为我当时有些紧张,准备也不够充分。但我在过往项目经历或技能方面有着丰富的经验和较强的能力,后续我会加强提升自己的表达能力,争取在各方面都能更好地符合岗位需求。
3.选择题
(1)在Python中,以下哪个不是循环控制语句?
A. break
B. continue
C. pass
D. return
答:D
(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.
****
****
****
****
答:C
(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
答:B
4.问答题
(1)Python中有哪几种基本的循环结构?请简要说明它们的语法和适用场景。
答:两种,分别是for和while循环。
for:for 变量 in 对象
循环体语句;
适用于明确知道循环次数时。
while: while 条件表达式
循环体语句;
适用于不知道循环次数时。
(2)Python中有哪些循环控制语句?它们各自的作用是什么?请给出示例说明。
答:①break,用于结束循环体。
②continue,用于跳过coutinue语句后面的代码,直接进入下一次的循环条件判断。
③else,在for循环或while循环正常结束时,会执行 else 子句中的代码。如果循环是因为 break 语句提前结束的,则不会执行 else 子句。
(3)在Python的for循环中,range()函数扮演着重要角色。请详细说明range()函数的语法、参数含义和使用方法,并给出至少3个不同用法的示例。
答:XXXXXXX
(4)什么是嵌套循环?请解释嵌套循环的工作原理。
答:嵌套循环是指在一个循环结构的循环体中又包含另一个完整的循环结构。外层的循环称为外层循环,内层的循环称为内层循环。
原理:首先会进行外层循环的初始化操作 。若满足条件则进入外层循环体。进入外层循环体后,开始执行内层循环。内层循环会循环过程,直到内层循环条件不满足,跳出内层循环。外层循环体执行完一次后,进行外层循环的变量更新操作,然后再次检查外层循环条件。若条件仍满足,又会进入外层循环体,重新开始内层循环的执行过程。
(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
输出:
相离
答:
# 在此写入你的代码
(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
答:
# 在此写入你的代码
(7)编写代码,打印如下星星图案
*
***
*****
*******
*********
*******
*****
***
*
答:n = 99
for i in range(1, n + 1):
for k n range(abs(i - n / / 2 - 1)):
print(" “,end=” “)
for j in range(n / / 2 + 1 - abs(i - n / / 2 - 1)):
print(”*“, end=” ")
print( )
# 在此写入你的代码
(8)编写代码,求最小公倍数
题目描述
输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
输入输出描述
输入两个正整数
输出最小公倍数
示例1
输入:
3 9
输出:
9
示例2
输入:
4 6
输出:
12
答:
# 在此写入你的代码