当前位置: 首页 > news >正文

Python列表操作、条件判断、循环、函数定义

1.技术面试题

(1)解释Linux中的进程、线程和守护进程的概念,以及如何管理它们?

答:

进程

概念:程序运行的实例,有独立资源(如内存),是系统调度的基本单位。
管理:`ps` 看进程,`kill` 终止,`nice`/`renice` 调优先级。

线程

概念:进程里的执行单元,多个线程共享进程资源,开销小,适合并发。
管理:通过编程语言线程库(如 `pthread`)创建 / 控制,`gdb` 调试。

守护进程

概念:后台长期运行的进程,无终端关联,系统启动时启动(如 `httpd`)。
管理:`systemctl` 或 `service` 命令启动 / 停止 / 查状态。

(2)请详细描述OSI七层模型和TCP/IP四层模型,并说明它们之间的对应关系。每一层的主要功能是什么?各层有哪些典型的协议?

答: 

OSI 七层模型

1.物理层:传输原始比特流(0/1),协议如 Ethernet 物理层、RS-232。
2. 数据链路层:封装比特流为帧,通过 MAC 地址通信,处理错误,协议如 Ethernet、PPP、ARP。
3. 网络层:通过 IP 地址路由,实现跨网络传输,协议如 IP、ICMP、OSPF。
4. 传输层:端到端数据传输(可靠 / 高效),协议如 TCP(可靠)、UDP(高效)。
5. 会话层:建立 / 管理进程会话(如登录状态),协议如 RPC。
6. 表示层:数据格式转换、加密(如编码、SSL),协议如 JPEG、SSL/TLS。
7. 应用层:为应用程序提供服务,协议如 HTTP、FTP、DNS。

TCP/IP 四层模型

1. 网络接口层:对应 OSI 物理层 + 数据链路层,协议如 Ethernet、ARP。
2. 网络层:同 OSI 网络层,协议如 IP、ICMP。
3. 传输层:同 OSI 传输层,协议如 TCP、UDP。
4. 应用层:合并 OSI 会话层 + 表示层 + 应用层,协议如 HTTP、DNS。

对应关系

TCP/IP 网络接口层 → OSI 物理层 + 数据链路层
TCP/IP 网络层 → OSI 网络层
TCP/IP 传输层 → OSI 传输层
TCP/IP 应用层 → OSI 会话层 + 表示层 + 应用层

(3)详细介绍什么是最大堆/最小堆。

答:

最大堆

- 定义:一种完全二叉树,每个父节点的值 **大于等于** 其左右子节点的值(根节点是最大值)。
- 特点:根节点为堆中最大元素,插入 / 删除时需调整结构维持特性。

最小堆

- 定义:一种完全二叉树,每个父节点的值 **小于等于** 其左右子节点的值(根节点是最小值)。
- 特点:根节点为堆中最小元素,同样需动态调整维持特性。

两者均用于高效获取极值(如最大 / 最小值),常见于优先队列、堆排序等场景。

(4)详细介绍什么是二分搜索树。

答:

二分搜索树(BST)是一种有序二叉树:

- 左子树所有节点值 **小于** 根节点值;
- 右子树所有节点值 **大于** 根节点值;
- 左右子树也为二分搜索树。

特点:支持高效的查找、插入、删除操作(平均时间复杂度 O (logn)),常用于动态数据的有序管理。

 2.HR面试题

(1)我们非常欣赏你的能力,但目前只能提供比你期望薪资低20%的offer。在这种情况下,你会接受这份工作吗?如果接受,你对未来薪资增长有什么期望?如果不接受,你的底线是什么?

答:

感谢您的认可,也特别理解公司可能有现阶段的考量。但这个薪资差距确实超出了我能接受的范围,这不仅关系到我现阶段的生活规划,也是对自己能力和过往经验的基本衡量,所以这次可能没办法接受。

不过我真心很看重这个机会,如果公司觉得我确实是合适的人选,能否咱们约定一下:比如入职后 3 个月,我会全力以赴做出业绩,到时候咱们根据我的实际表现,把薪资调整到我最初期望的水平?这样既不辜负您的信任,也能让我更安心地投入工作。如果这个约定能达成,我非常愿意加入;如果实在有难度,那这次只能遗憾错过了,也希望以后还有合作的可能。

2)我们公司经常需要加班到深夜,有时甚至需要周末工作。你如何看待这种工作强度?你认为工作与生活的理想平衡点在哪里?

答:我个人不太倾向于频繁加班到深夜,更希望能尽量避免占用周末时间。平时工作时我会集中精力高效完成任务,争取准时下班,留出时间处理生活琐事、放松调整,这样才能保持稳定的工作状态。当然,如果遇到项目紧急、确实需要赶工的情况,偶尔加班我是可以理解和配合的,但长期这样肯定不行,身体和精力都扛不住。如果需要加班,我希望能有符合预期的加班费作为补偿,这样付出和回报能对等一些。

对我来说,工作与生活的理想平衡就是:平时各有边界,工作时专注投入,生活时能踏实放松;偶尔需要打破平衡加班时,能有合理的回报来弥补,不让这种失衡成为常态,这样才能长久可持续。

(3)你认为自己最大的优势是什么?这个优势如何帮助你胜任我们这个岗位?

答:我的核心优势在于持续学习能力和快速掌握新技术的能力,这在云计算这个技术迭代迅速的领域尤为重要。我能够高效地消化吸收各类云平台的技术文档和最佳实践,无论是主流云服务商的基础架构还是新兴的云原生技术,都能在短时间内理解其核心原理并上手应用。这种能力使我不仅能够快速适应企业现有的云技术栈,更能跟进行业发展趋势,为企业未来的技术升级做好准备。在云计算这个日新月异的领域,我这种持续进化的技术适应力,相比静态的知识储备更能创造长期价值。

(4)你认为这份工作能为你带来什么?你能为公司创造什么价值?

答:这份工作能为我提供宝贵的实战机会,将我的云计算知识转化为真正的生产力,同时让我在专业团队中快速积累行业经验。作为新人,我尤其看重贵公司在云计算领域的成熟技术栈和规范流程,这能帮助我建立扎实的技术根基。

而我能为公司带来的价值是:用快速学习能力迅速填补经验缺口,以高度执行力完成基础性技术工作,同时保持对新技术趋势的敏感度。在团队中,我会成为可靠的技术执行者,随着经验积累逐步承担更复杂的云架构任务,最终成长为既能踏实运维又懂创新优化的综合型云技术人才。

3.问答题

(1)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
result = []
for i in range(len(lst)):
if i == len(lst) - 1:
result.append(lst[i] * 2)
elif lst[i] < lst[i+1]:
result.append(lst[i] + 1)
else:
result.append(lst[i] - 1)
return result

print(func([5, 3, 7, 2]))
```

答:运行结果:`[4,4,6,4]`

主要功能:按规则(相邻元素比较、最后一个元素加倍)转换列表元素并返回新列表 。

(2)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
result = []
for num in lst:
if num % 3 == 0:
result.append(num // 3)
elif num % 2 == 0:
result.append(num * 2)
if num > 10:
break
else:
result.append(num + 1)
return result

print(func([9, 4, 12, 7, 14]))
```

答:运行结果:`[3, 8, 4, 8, 28]`

主要功能:按元素是否被 3/2 整除的规则转换,且在 “能被 2 整除且>10” 时处理当前元素后终止循环。

(3)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(nums1, m, nums2, n):
i = j = k = 0
temp = nums1.copy()
while i < m and j < n:
if temp[i] < nums2[j]:
nums1[k] = temp[i]
i += 1
else:
nums1[k] = nums2[j]
j += 1
k += 1
while i < m:
nums1[k] = temp[i]
i += 1
k += 1
return nums1

nums1 = [1, 3, 5, 0, 0]
m = 3
nums2 = [2, 4]
n = 2
print(func(nums1, m, nums2, n))
```

答:运行结果:`[1, 2, 3, 4, 5]`

主要功能:合并两个有序子数组(`nums1` 前 `m` 个、`nums2` 前 `n` 个)到 `nums1` ,使其整体升序。

(4)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
total = 0
for i in range(len(lst)):
if i % 2 == 0:
total += lst[i]
else:
total -= lst[i]
if total < 0:
total = 0
return total

print(func([5, 3, 2, 7, 1]))
```

答:运行结果:`1`

主要功能:按索引奇偶交替加减元素值,负数结果重置为 0,最终返回计算总和。

(5)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
evens = []
odds = []
for num in lst:
if num % 2 == 0:
evens.append(num)
else:
odds.append(num)
evens.sort()
odds.sort(reverse=True)
return evens + odds

print(func([3, 1, 4, 1, 5, 9, 2, 6, 5]))
```

答:运行结果:[2, 4, 6, 9, 5, 5, 3, 1, 1]

主要功能:奇偶分离后,偶数升序、奇数降序,再拼接输出。

(6)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
result = []
for i in range(len(lst)):
current = lst.pop(0)
if current % 2 == 0:
lst.append(current * 2)
else:
result.append(current)
return result + lst

data = [1, 2, 3, 4, 5]
print(func(data))
```

答:运行结果:`[1, 3, 5, 4, 8]`

主要功能:分离列表中的奇数并收集,对偶数翻倍后放回原列表,最终返回奇数列表与处理后偶数列表的拼接结果。

(7)以下代码运行结果是?并阐述函数func的主要功能是什么?

```python
def func(lst):
result = []
for i in range(len(lst)):
for j in range(i+1, len(lst)):
if lst[i] + lst[j] == 10:
result.append((lst[i], lst[j]))
break
return result

print(func([5, 3, 7, 2, 8]))
```

答:运行结果:`[(3, 7), (2, 8)]`

主要功能:提取列表中 “和为 10” 的数对(每个数对仅找第一个匹配,不重复)。

(8)编写程序,反素数

反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数

输出显示前100个反素数,每行显示10个

答:

```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True

def is_palindrome(num):
return str(num) == str(num)[::-1]

count = 0
num = 10
result = []
while count < 100:
if not is_palindrome(num) and is_prime(num) and is_prime(int(str(num)[::-1])):
result.append(num)
count += 1
num += 1

for i in range(0, 100, 10):
print(*result[i:i + 10])
```

(9)编写程序,梅森素数

如果一个素数可以写成2p−12p−1的形式,其中p是某个正整数,那么这个素数就称作梅森素数

输出p≤31的所有梅森素数

答:

```python
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True

for p in range(1, 32):
j = 2**p - 1
if is_prime(p) and is_prime(j):
print(f"p={p}, 梅森素数={j}")
```

(10)编写程序,数列求和

编写一个函数计算下面的数列:
$$
m(i)=12+23+...+ii+1m(i)=12+23+...+ii+1
$$
并输出测试结果:

```python
i        m(i)
1        0.500
2        1.16
...        
19        16.40
20        17/35
```

答:

```python
def calculate_m(i):
result = 0.0
for n in range(1, i + 1):
result += n / (n + 1)
return result

for i in range(1, 21):
j = calculate_m(i)
print(f"{i}\t{j:.3f}")
```

(11)编写程序,组合问题

有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?

答:

```python
result = []
for i in range(1, 5):
for j in range(1, 5):
if j  ==  i :
continue
for k in range(1, 5):
if k ==  i  or k == j :
continue
result.append( i  * 100 + j  * 10 + k)
print(f"能组成 {len(result)} 个符合条件的三位数,分别是:")
for num in result:
print(num, end=" ")
```

(12)编写程序,计算e

你可以使用下面的数列近似计算e
$$
e=1+11!+12!+13!+14!+...+1i!e=1+11!+12!+13!+14!+...+1i!
$$
当i越大时,计算结果越近似于e

答:

```python
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result

i = 10
e = 1
for n in range(1, i + 1):
e += 1 / factorial(n)
print(f"e 的近似值为: {e:.10f}")
```

(13)编写程序,完全数

如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1

**输入输出描述**

输入一个正整数

输出该数是否为完全数

**示例1**

> 输入:
>
> 6
>
> 输出:
>
> Yes

**示例2**

> 输入:
>
> 9
>
> 输出:
>
> No

答:num = int(input("请输入一个正整数:"))
factor_sum = 0
for i in range(1, num):
if num % i == 0:
factor_sum += i
print("Yes" if factor_sum == num else "No")

http://www.dtcms.com/a/519735.html

相关文章:

  • ps怎么在dw上做网站广州番禺发布网
  • UltraScale/+ FPGA实现万兆网的两种方式:GT核、10G Ethernet Subsystem核
  • 元宇宙重构社交生态:从平面互动到沉浸式情感连接
  • SaaS模式重构工业软件竞争规则,助力中小企业快速实现数字化转型
  • 利用AI大模型重构陈旧代码库 (Refactoring Legacy Codebase with AI)
  • 数字孪生技术 重构 智能仓储新生态
  • 从上下文工程到组织知识管理重构——HRBP在人机协同时代的新使命
  • 1.2亿老人需助听器:本土品牌如何以AI破局,重构巨头垄断市场?
  • DeepSeek-OCR本地部署教程:DeepSeek突破性开创上下文光学压缩,10倍效率重构文本处理范式
  • “AI导师”现象:生成式人工智能对教育主体性及教学范式的重构
  • 住房和城乡建设统计网站南沙滩做网站公司
  • 网站备案要啥公司网站建设的视频教程
  • 全平台内容排期与矩阵玩法
  • 基于Python的声音信号分类:从公开数据集到自定义音频的实践
  • Web 前端开发常用工具推荐与团队实践分享
  • 网站 mssql 数据库2023八月重点新闻事件
  • [特殊字符] 多环境 DCDN 缓存与 version 切换刷新方案
  • PY32F040单片机介绍(2)
  • WordPress 迭代演进总结
  • MongoDB 排序操作详解sort方法使用指南
  • 深圳p2p网站开发如何把网站扒下来
  • 网站制作苏州企业舟山市建设工程造价管理协会网站
  • golang学习笔记:标准库strconv
  • A Better Finder Rename for mac 文件批量重命名
  • xss-labs pass-11
  • 深入剖析 iOS 26 系统流畅度,多工具协同监控与性能优化实践
  • 解决升级IDEA2025.2后,每次打开Maven项目爆红的问题:Windows和Mac解决方案
  • 家用豆腐磨浆机设计
  • 六级单词03
  • kettle的使用