Python问答3

1.技术面试题

(1)解释 Linux 中的符号链接和硬链接
符号连接即使软连接,它是一种特殊文件,其内容为指向另一个文件或目录的路径。作用:能够跨越文件系统对文件进行引用;可以指向目录或者不存在的文件。
硬链接是同一个文件的多个文件名,它们共享相同的 inode,作用:只能在同一文件系统内创建;无法对目录创建硬链接;删除其中一个硬链接,不会影响其他链接和文件数据。

(2)Linux 使用的进程间通信方式有哪些?
1.匿名管道:数据只能单向流动,并且只能在具有亲缘关系(如父子进程)的进程间使用。 2.消息列队:基于内核的消息链表实现,数据按消息类型读取;能实现进程间的异步通信,缓解生产者消费者速度不匹配的问题。 3.共享内存:多个进程可以直接访问同一块物理内存区域,是最快的 IPC 方式;需要配合信号量等同步机制使用。 4.套接字:可实现跨网络的不同主机间进程通信,分为 Unix Domain Socket(本地通信)和网络 Socket(网络通信);支持面向连接(TCP)和无连接(UDP)两种通信模式。

(3)什么是TCP 三次握手与四次挥手?
TCP 三次握手是建立 TCP 连接的过程,确保通信双方都有发送和接收数据的能力,并同步初始序列号(ISN)。简单来说就是客户端向服务器发送一个请求连接的包,当服务器收到后会向客户端进行回包(两个)一个是同意连接的包,一个是确认连接的包,最后由客户端再发送一个包给服务器表示确认服务器。
TCP 四次挥手是关闭 TCP 连接的过程,允许双方独立关闭发送或接收通道。
流程:客户发送一个请求关闭的包给服务器,当服务器收到后会回复一个表示同意包给客户,随即载发送一个表示请求关闭的包给客户,当客户收到请求关闭的包后还需向服务器发送一个关闭的包。

(4)ARP 协议的作用及工作原理
ARP即地址解析协议,用于将 IP 地址解析为对应的物理地址(MAC 地址)。在以太网中,数据帧的传输需要知道目标设备的 MAC 地址,但网络层(如 IP 协议)使用的是 IP 地址,因此需要 ARP 协议在两者之间建立映射关系。即通过IP找MAC,或通过MAC找IP。

(5)详细阐述快速排序算法
它的核心思想是通过选择一个基准值(pivot)** 将数组分为两部分,使得左边部分的所有元素都小于等于基准值,右边部分的所有元素都大于等于基准值,然后分别对左右两部分递归排序。
原理:将快速排序的分治过程包括三个步骤1.分解:选择一个基准值,将数组分为两部分,左半部分 ≤ 基准值 ≤ 右半部分。 2.解决:递归地对左右两部分进行快速排序。 3.合并:由于分解时已保证左右两部分的顺序,无需额外合并操作,数组自然有序。

(6)详细阐述归并排序算法
它将一个数组分成两个子数组,递归地对子数组进行排序,最后将已排序的子数组合并成一个有序的数组。归并排序的时间复杂度始终为 O,且是一种稳定排序(相等元素的相对顺序保持不变)。原理:1.分解:将数组从中间分成两个子数组,递归地对每个子数组进行分解,直到子数组长度为 1 或 0(基线条件)。2.解决:长度为 1 的子数组自然有序,无需进一步操作;对于长度大于 1 的子数组,递归调用归并排序。3.合并:将两个已排序的子数组合并成一个有序数组,这是归并排序的核心操作。

(7)详细阐述基数排序算法
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。原理:将多位数或字符串按位分解,逐位进行排序,最终得到整体有序的序列。

(8)详细阐述桶排序算法
桶排序是一种分布式排序算法,其核心思想是将数组元素分配到多个有序的桶中,每个桶再分别进行排序(可以使用其他排序算法或递归使用桶排序),最后将所有桶中的元素按顺序合并。原理:确定桶的数量和范围:根据输入数据的范围和分布,将数据空间划分为 k 个桶;分配元素到桶:将每个元素放入对应的桶中;排序每个桶:对每个非空桶内的元素进行排序(可使用插入排序、快速排序等);合并桶:按顺序将所有桶中的元素合并成最终有序数组。

2.HR面试题原理

(1)你为什么选择我们公司?
首先,贵公司在行业领域的技术积累和行业地位让我非常认同,我长期关注到贵公司在某技术上的突破,我期待能在这样的技术平台上,将自己在个人技能方面的经验落地到实际业务中,同时也能跟随团队接触最前沿的技术趋势。其次,贵公司的企业文化和价值观让我感受到强烈的归属感。通过了解,我发现贵公司重视工程师文化,快速迭代的工作节奏,对创新试错的包容,这与我追求的个人工作理念的工作方式非常匹配。最后,我看重贵公司为员工提供的成长空间,贵公司在人才培养方面如:核心项目参与机会等方面的投入,能支持我在个人发展方向如:深入行业解决方案设计上持续提升。我相信在这里我的跨团队沟通能得到充分发挥,同时也能通过应对规模化场景下的性能优化实现自我突破。

(2)你现在手里有offer吗?
目前确实收到了两三家公司的 offer,行业和岗位方向也都和我现在的职业目标相关。不过对比下来,贵公司在比如:智能硬件的技术落地上的布局,以及团队在比如:敏捷开发的节奏上的特点,其实更贴近我希望深耕的方向。对我来说,选择工作不只是看当下的机会,更在意长期能和团队一起解决什么样的问题、获得怎样的成长。贵公司目前在推进的面向中小企业的 SaaS 工具迭代、新能源领域的材料研发,正是我过去工作中积累了相关经验的领域,这种匹配度让我更倾向于把这里作为优先选择,也希望能有机会加入团队贡献自己的力量。

(3)你认为一份 “好工作” 的核心要素是什么?如果工作内容与预期不符,你会如何调整?
我认为一份好工作的核心要素可以归结为三点:第一是价值感的匹配,比如我的专业技能能直接解决团队的核心问题,付出能看到明确的结果;亦或我认可这份工作对行业(或用户)产生的价值如技术岗位推动效率提升,服务岗位解决用户真实痛点,这种认同会带来持续的内驱力。第二是成长的可持续性,工作中能接触到有挑战的任务(而不是机械重复),能在实践中积累新经验如跨领域协作、复杂问题拆解,同时团队或公司有支持成长的环境,让个人能力能随着工作推进同步迭代,而不是停留在原地。第三是环境的舒适度,这里的“舒适”不是指轻松,而是团队氛围健康如沟通高效、权责清晰,少内耗,工作节奏与个人状态适配如能平衡专注做事与必要的休息,能让人在投入时更专注,遇到问题时敢开口,这种环境能减少内耗,放大个人价值。
如遇到预期不符,我会先沉下心了解“差异点”。刚入职时可能对业务全貌不熟悉,所谓“不符”可能是信息差导致的所以我会先通过梳理岗位职责、和直属领导沟通、参与具体任务,搞清楚“实际内容”和“预期”的核心差异在哪里,是方向偏差,还是执行路径不同。最后我会及时沟通,寻求调整空间。如果确实发现方向偏差较大,我会在积累一定实践观察后,和领导坦诚沟通:说明自己的职业规划与当前工作的匹配度,以及希望在哪些方向上承担更多责任,争取调整分工如在现有工作中加入部分目标方向的任务,或在团队有需求时优先参与相关项目。

(4)如果领导对你的工作成果提出尖锐批评,你会如何回应?
首先我会保持冷静,专注听清楚批评的核心,不会急于辩解或情绪对抗,而是认真记录具体问题如方案逻辑有漏洞,执行效率低于预期,甚至主动追问细节“您觉得哪个部分的逻辑需要重点调整?”,让领导感受到我在认真对待他的反馈,而不是抵触。 其次,坦诚回应,明确态度。比如可以说:“您提的这些问题确实是我没考虑周全的,尤其是在问题上,确实影响了结果,这部分我需要重新梳理。” 不回避责任,也不泛泛道歉,而是针对具体问题表态,让领导知道我理解了问题所在。 最后,我会主动给出改进思路,如:“我会在今天下班前重新优化方案的逻辑部分,重点补充问题方面的论证,完成后第一时间发给您再看。后续执行时我也会增加某步骤的校验,避免再出现类似问题。” 用具体的行动计划替代空泛的“我会改”,既体现担当,也让领导看到解决问题的诚意。

(5)我看你简历里写了学习能力强,你怎么证明你的学习能力强呢?
:我之前有过3天从零学会低代码工具并独立完成模块开发,提前交付项目;还有为做用户增长项目,1周掌握分层模型并落地,让触达率提升20%。我习惯带着问题学、边练边总结,所以能快速把新知识用在实际工作里。

(6)如果你的室友在考试中,偷偷让你帮忙传递一个写着知识点的小纸条(现场监管不严,被发现概率低),你会帮吗?请说具体理由,不要只讲大道理。
我会明确告诉他不会帮。
首先,考试的意义本来就是检验学习成果,传纸条看似帮他应付了这次考试,其实是让他错过了发现自己知识漏洞的机会。就像工作里,如果同事遇到问题我直接替他做了,他永远学不会解决方法,下次还是会卡住,反而耽误团队效率。
其次,这种事一旦做了,我自己心里也会一直不踏实。职场里讲究 “拿结果但更要守底线”,比如报数据时哪怕差一点点,也得如实反馈,不然看似蒙混过关,最后可能因为这个小错影响整个决策,风险太大了。
不过我会跟他说:“这纸条我不能传,但考完试我帮你把这些知识点的逻辑框架画出来,咱们一起过一遍,哪里不懂我再给你讲透,下次就不用这么慌了。” 就像工作中遇到同事求助,与其帮他走捷径,不如教他方法,这样才是真的帮他成长。

(7)你说很想进入我们公司,但你的专业和我们公司关联度不高,而且你也没有相关的实习经历。你觉得我们为什么要相信你是真心想做这个行业,而不是把这里当跳板?
我理解专业和经验不匹配会让您顾虑。但这半年我一直在针对性准备:跟着贵公司的案例学业务逻辑,用行业工具练实操,还整理了客户问题方案 —— 这些都是主动贴近这个领域的证明。
选贵公司不是找跳板,而是想从基础做起,跟着团队扎实成长。毕竟,若只是过渡,没必要跨专业花这么多功夫,更不会把这里当优先。我的行动,都是冲着“留下来做好”。

(8)你的成绩在班级里处于中等水平,而我们这个岗位竞争激烈,很多应聘者成绩都很优秀。你觉得自己比他们强在哪里,值得我们录用你?
我承认成绩中等,但我更关注 “把知识用在解决实际问题上”—— 这可能是我和成绩优秀者相比的差异点。
比如,我牵头做过班级的校企合作项目,从对接企业需求、拆解任务到协调团队落地,全程跑下来,练出了快速理解需求、推进执行的能力。为了这个岗位,我还提前用行业工具做了 3 个模拟案例,总结出实操中的避坑点 —— 这些经验可能比卷面分数更贴近工作里 “解决问题” 的核心需求。
而且我知道自己的短板,所以更注重主动补位:比如遇到不懂的,会第一时间找资料、请教人,这种“以结果为导向”的行动力,或许正是岗位需要的。毕竟,工作里更看重“能不能把事做成”,而不只是“会不会答题”。

3.问答题

(1)执行以下代码,输出结果是什么?

def process_list(lst):
    for i in range(len(lst)):
        if lst[i] % 2 == 0:
            lst.insert(i+1, lst[i] // 2)
    return lst

nums = [2, 3, 8]
print(process_list(nums))

会导致无限循环

(2)运行下列代码,输出结果是什么?

def modify_tuple(t):
    try:
        t[1] += 10
    except:
        t = (t[0], t[1]+10, t[2])
    return t

tup = (1, 5, 3)
new_tup = modify_tuple(tup)
print(tup[1] + new_tup[1])

会输出20

(3)以下代码的输出结果是什么?

def set_operations():
    a = {1, 2, 3}
    b = a.copy()
    a.add(4)
    b.discard(2)
    c = a - b
    b.update(c)
    return len(a & b)

print(set_operations())

会输出4

(4)执行下列代码后,输出结果是什么?

def string_transform(s):
    result = []
    for i, char in enumerate(s):
        if i % 2 == 0:
            result.append(char.upper())
        else:
            result.append(char.lower())
    return ''.join(result[::-1])

print(string_transform("PyThOn"))

输出nOtHyP

(5)运行以下代码,输出结果是什么?

def dict_processing():
    d = {'a': 1, 'b': 2, 'c': 3}
    new_d = {}
    for k, v in d.items():
        new_d[v] = k
        if v % 2 == 0:
            new_d[k.upper()] = v * 2
    return sum(new_d.keys())

print(dict_processing())

输出6

(6)以下代码的输出结果是什么?

def nested_list_operation():
    matrix = [[1, 2], [3, 4], [5, 6]]
    total = 0
    for i in range(len(matrix)):
        matrix[i].append(matrix[i-1][0])
        total += sum(matrix[i])
    return total

print(nested_list_operation())

输出21

(7)执行下列代码会产生什么结果?

def tuple_unpacking():
    tup = (10, 20, 30, 40)
    a, *b, c = tup
    b.append(c // a)
    return tuple(b)

print(tuple_unpacking()[1] * 2)

输出60

(8)运行以下代码,输出结果是什么?

def set_generator():
    s = set()
    for i in range(5):
        if i % 2 == 0:
            s.add(i)
        else:
            s.update(range(i))
    return sorted(s)[-2]

print(set_generator())

输出3

(9)以下代码的输出结果是什么?

def string_manipulation():
    s = "Hello World Python"
    words = s.split()
    result = []
    for word in reversed(words):
        result.append(word[1:-1] if len(word) > 2 else word)
    return ' '.join(result)

print(string_manipulation())

输出 Ptohn Wyolr olleH

(10)执行下列代码后,输出结果是什么?

def dict_traversal():
    d = {'x': 5, 'y': 10, 'z': 15}
    keys = list(d.keys())
    for key in keys:
        if d[key] > 8:
            d[key.upper()] = d.pop(key)
    return len(d) + sum(d.values())

print(dict_traversal())

输出43

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值