# 1.技术面试题

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

答:进程是资源分配的基本单位,独立运行;线程是进程内的执行单元,共享资源,效率更高;守护进程是后台长期运行的特殊进程,提供系统服务。

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

答:                                          

对应关系

  • 网络接口层 ↔ 物理层 + 数据链路层
  • 网络层 ↔ 网络层
  • 传输层 ↔ 传输层
  • 应用层 ↔ 会话层 + 表示层 + 应用层

TCP/IP:

  1. 网络接口层
  2. 网络层
  3. 传输层
  4. 应用层

OSI: 

  1.  物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

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

答:最大堆是满足父节点值 ≥ 子节点值的完全二叉树。最小堆是满足父节点值≤ 子节点值的完全二叉树。

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

答:

  • 每个节点包含一个键(或值),且键具有可比较性(如数字、字符串等)。
  • 对于任意节点,其左子树中的所有键均小于该节点的键。
  • 对于任意节点,其右子树中的所有键均大于该节点的键。
  • 左子树和右子树也必须是二分搜索树

# 2.HR面试题

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

答:我接受,但要知道是否在入职后基于业绩重新评估薪资,或者以其他形式的薪资发放。以及、岗位匹配度、福利待遇(如股票期权、培训资源)、工作强度及稳定性。若其他条件优越,短期薪资差距可通过长期成长弥补。

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

答:适当是可以的,但要有合理的补助以及加班后是否有休息时间,确保8小时睡眠,非工作时间至少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]))
```

答:函数 func 对输入列表 lst 进行遍历,并根据特定规则生成新的列表 result

**(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)以下代码运行结果是?并阐述函数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))
```

答:将两个有序数组合并为一个有序数组

**(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]))
```

答:通过交替加减索引奇偶位置的元素值,并在总和为负时重置为 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]))
```

答:

将输入列表中的元素按奇偶性分成两个子列表,分别对偶数子列表升序排序、奇数子列表降序排序,最后合并两个子列表并返回。

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

答:函数通过动态调整列表长度和内容,将原列表中的奇数按顺序提取,偶数则不断倍增后保留在剩余元素中。最终返回 “奇数在前、偶数处理后的值在后” 的列表。

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

答:遍历列表元素对:函数通过双重循环检查所有可能的 (i, j) 组合,其中 i < j。

**(8)编写程序,反素数**

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

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

答:

```python
# Your Codes 
```

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

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

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

答:

```python
# Your Codes 
```

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

编写一个函数计算下面的数列:

$m(i) = \frac{1}{2} + \frac{2}{3} + ... + \frac{i}{i + 1}$

并输出测试结果:

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

答:

```python
# Your Codes 
```

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

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

答:

```python
# Your Codes 
```

digits = [1, 2, 3, 4]
result = []

for i in digits:
    for j in digits:
        for k in digits:
            if i != j and j != k and i != k:
                result.append(i * 100 + j * 10 + k)

print("总数:", len(result))
print("具体数字:", result)

**(12)编写程序,计算e**

你可以使用下面的数列近似计算e
$$
e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...+\frac{1}{i!}
$$
当i越大时,计算结果越近似于e

答:

```python
# Your Codes 
```

**(13)

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

**示例2**

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

答:

```python
# Your Codes 
``

num = int(input("请输入一个正整数: "))
def is_number(num):
    if num <= 1:
        return False
    sum_factors = 1
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            sum_factors += i
            if i != num // i:
                sum_factors += num // i
    return sum_factors == num


num = int(input("请输入一个正整数: "))
if is_number(num):
    print(f"{num} 是完全数")
else:
    print(f"{num} 不是完全数")
————————————————
版权声明:本文为CSDN博主「我坚持学习!!!!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_87542836/article/details/149358700

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐