【无标题】

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

答:d

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

答:c

(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 

答”

(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

答:a

4.问答题

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

答:for循环和while循环
for循环用于遍历可迭代对象中的元素:

for item in iterable:
    # 循环体
 

while循环在条件为真时重复执行代码块:`
``python
while condition:
# 循环体



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

答:Python的循环控制语句包括:

break:立即终止当前循环
continue:跳过当前迭代的剩余部分,进入下一次循环
pass:空操作语句,保持语法完整性
```python 
for i in range(5):
   if i == 2:
       continue
   if i == 4:
       break
   print(i)

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

答:range()函数生成一个不可变的整数序列,常用于for循环中控制迭代次数。其完整语法为:
range(stop)
range(start, stop[, step])
start:序列起始值(默认为0)。
stop:序列结束值(不包含该值)。
step:步长(默认为1)。

(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
x1, y1, w1, h1 = map(float, input().split())
# 读取第二个矩形的中心坐标x2, y2和宽w2, 高h2
x2, y2, w2, h2 = map(float, input().split())

# 计算两个矩形中心在x轴和y轴方向的距离
dx = abs(x1 - x2)
dy = abs(y1 - y2)

# 判断是否相离
if dx > (w1 / 2 + w2 / 2) or dy > (h1 / 2 + h2 / 2):
    print("相离")
else:
    # 判断是否包含
    if dx <= (w1 / 2 - w2 / 2) and dy <= (h1 / 2 - h2 / 2):
        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(8):
    # 打印空格部分
    for j in range(7 - i):
        print(' ', end=' ')
    # 打印前半部分数字
    for k in range(i + 1):
        print(2 ** k, end=' ')
    # 打印后半部分数字(倒序且不包括第一个数字,因为第一个数字在前面已经打印过)
    for l in range(i - 1, -1, -1):
        print(2 ** l, end=' ')
    print()

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

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

答:

# 在此写入你的代码
```# 上半部分
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)编写代码,求最小公倍数**

**题目描述**

输入两个正整数,计算其最小公倍数,例如42的最小公倍数是435的最小公倍数是15

**输入输出描述**

输入两个正整数

输出最小公倍数

**示例1**

> 输入:
>
> 3 9
>
> 输出:
>
> 9

**示例2**

> 输入:
>
> 4 6
>
> 输出:
>
> 12

答:

```python
num1 = int(input())
num2 = int(input())
max_num = max(num1, num2)

while True:
    if max_num % num1 == 0 and max_num % num2 == 0:
        print(max_num)
        break
    max_num += 1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值