1.技术面试题
**(1)详细描述单调栈的工作原理和应用场景
答:工作原理:新元素入栈时 不断顶出栈顶元素 直到栈空或者栈顶元素满足当前的单调性要求 将新元素压栈。
应用场景:例如在计算滑动窗口最大值/直方图中最大的矩形面积等场景。
(2)详细描述单调队列的工作原理和应用场景
答:工作原理:当新元素入队时 为保证单调性从队尾移除所有比它小的元素然后将新元素加入队尾 若首元素超出窗口位置则移除。
应用场景:例如窗口滑动问题/队列中的最大值问题等。
2.HR面试题
(1)如果竞争对手用双倍薪资挖你,你会怎么选择?
答:对我来说工资并不是我本人考虑公司的第一决策驱动,对我来说我的发展需要贵公司的理念与未来更加契合,我认为我在贵公司的发展与在其他公司的发展未来相比更加具有希望,因此无论其他公司开出多少薪资我都会以贵公司的offer置于第一位置
(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
答:C
(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循环主要用于固定次数的迭代与遍历为已知循环次数使用的循环。 while循环则更多适用于不确定循环次数 知道满足一个特定条件的循环。
(2)Python中有哪些循环控制语句?它们各自的作用是什么?请给出示例说明。
答:break:终止整个循环,跳出循环体。
示例:for i in range(5): if i= =3: break; print(i)
continue: 跳过当前迭代,继续下一次迭代。
示例:for i in range(5): if i==3: continue; print(i)
pass:空操作,用于占位保持代码结构。示例:if condition: pass
(3)在Python的for循环中,range()函数扮演着重要角色。请详细说明range()函数的语法、参数含义和使用方法,并给出至少3个不同用法的示例。
答:range(a):生成[0,-1]的整数。示例:list(range(5)) → [0,1,2,3,4]。 range(a,b) : 生成[a,b-1]的整数。示例:list(range(2,6)) → [2,3,4,5]。 range(a, b,c):按步长c生成整数。
示例:list(range(1,10,2)) → [1,3,5,7,9] ;list(ran ge(5,0,-1)) → [5,4,3,2,1]。
(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
输出:
相离
答:
# 在此写入你的代码
```# 在此写入你的代码
x1, y1, w1, h1 = map(float, input().split())
x2, y2, w2, h2 = map(float, input().split())# 计算矩形的边界(左、右、下、上)
def get_bounds(x, y, w, h):
l = x - w / 2
r = x + w / 2
bo = y - h / 2
t = y + h / 2
return (l, r, bo, t)
a_l, a_r, a_bo, a_t = get_bounds(x1, y1, w1, h1)
b_l, b_r, b_bo, b_t = get_bounds(x2, y2, w2, h2)# 判断包含关系(A包含B或B包含A)
def is_contain(a, b):
return (a[0] <= b[0] and a[1] >= b[1] and
a[2] <= b[2] and a[3] >= b[3])
if is_contain((a_l, a_r, a_bo, a_t), (b_l, b_r, b_bo, b_t)) or \
is_contain((b_l, b_r, b_bo, b_t), (a_l, a_r, a_bo, a_t)):
print("包含")# 判断相离(无重叠区域)
elif (a_r < b_l or a_l > b_r or
a_t < b_bo or a_bo > b_t):
print("相离")
else:
print("重叠")
**(6)编写代码,打印如下数字图案**
```python
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(n):
# 打印前导空格
print(" " * (n - i - 1), end="")
# 生成数字序列:前半部分
nums = []
for j in range(i + 1):
nums.append(str(2 ** j))
# 生成数字序列:后半部分(对称)
for j in range(i - 1, -1, -1):
nums.append(str(2 ** j))
# 打印数字序列
print(" ".join(nums))
**(7)编写代码,打印如下星星图案**
```python
*
***
*****
*******
*********
*******
*****
***
*
答:
# 在此写入你的代码
```# 在此写入你的代码
for i in range(5):
print(" " * (4 - i) + "*" * (2 * i + 1))
for i in range(3, -1, -1):
print(" " * (4 - i) + "*" * (2 * i + 1))
**(8)编写代码,求最小公倍数**
**题目描述**
输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
**输入输出描述**
输入两个正整数
输出最小公倍数
**示例1**
> 输入:
>
> 3 9
>
> 输出:
>
> 9
**示例2**
> 输入:
>
> 4 6
>
> 输出:
>
> 12
答:# 在此写入你的代码
# def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# 最小公倍数 = 两数乘积 // 最大公约数
a, b = map(int, input().split())
lcm = a * b // gcd(a, b)
print(lcm)
124

被折叠的 条评论
为什么被折叠?



