云计算作业
1.技术面试题
(1)解释 Linux 中的符号链接和硬链接
硬链接就是文件的别名,和源文件共同一分数据,不能跨磁盘,不能链接目录,删除源文件后仍能访问数据;符号链接是一个指向目标路径的小文件,可以跨磁盘、链接目录,源文件删除后,符号链接失效
(2)Linux 使用的进程间通信方式有哪些?
1、管道 2、命名通道3、消息队列4、共享内存5、信号6、套接字
(3)什么是TCP 三次握手与四次挥手?
三次握手:
客户端发 SYN 请求连接
服务端回 SYN+ACK 确认
客户端回 ACK 完成连接建立
四次挥手:
主动方发 FIN 请求断开
被动方回 ACK 确认
被动方发 FIN 同意断开
主动方回 ACK 完成断开
(4)ARP 协议的作用及工作原理
ARP(地址解析协议)作用是将 IP 地址解析为 MAC 地址。
工作原理:
主机发送 ARP 请求广播包(包含目标 IP)
网络中所有设备接收请求
目标 IP 主机回复 ARP 响应(含自身 MAC)
发送方缓存 IP-MAC 映射表(ARP 表)
(5)详细阐述快速排序算法
快速排序是一种高效的分治排序算法,平均时间复杂度为 O (n log n),最坏为 O (n²)。其核心思想是通过选择基准值(pivot)将数组分为两部分,递归排序子数组
将小于基准的元素移到左边
将大于基准的元素移到右边
基准归位到正确位置
(6)详细阐述归并排序算法
归并排序是一种采用分治策略的稳定排序算法,时间复杂度始终为 O (n log n)。其核心思想是将数组分成两个子数组,分别排序后合并
比较两个子数组的元素
按升序合并到临时数组
将临时数组复制回原数组
(7)详细阐述基数排序算法
基数排序是一种非比较型整数排序算法,时间复杂度为 O (d (n+k)),其中 d 为位数,k 为基数。其核心思想是按位分组排序,从低位到高位逐位处理
从最低位(个位)开始
使用稳定排序(如计数排序)对当前位分组
依次处理更高位,直到最高位 d
(8)详细阐述桶排序算法
桶排序是一种分布式排序算法,通过将元素分配到多个桶中,再分别对每个桶进行排序,最后合并结果。平均时间复杂度为 O (n + k),其中 n 为元素数,k 为桶数
确定桶数量与范围:根据数据分布确定桶的数量和区间。
分配元素:将每个元素放入对应区间的桶中。
桶内排序:对每个非空桶使用其他排序算法(如插入排序)。
合并结果:按顺序将所有桶中的元素连接。
2.HR面试题
(1)你为什么选择我们公司?
我选择贵公司是因为贵公司在技术领域的深耕和创新实践与我的技术追求十分契合,贵公司还能为我的技术成长提供莫大的帮助,我也确信我能在贵公司共同攻克难题,实现我与公司的双重提升
(2)你现在手里有offer吗?
当前我还没有其他offer,我的选择标准与贵公司高度契合,特别是贵公司的一些技术挑战,正是我钻研的主要方向,如果能加入贵公司,我期望在这样的环境中深度参与技术落地,实现个人与公司的双重提升
(3)你认为一份 “好工作” 的核心要素是什么?如果工作内容与预期不符,你会如何调整?
基础保障完善,职业发展潜力高,待遇优厚,工作环境舒适;如果工作内容与预期不符,我会提升适应能力,保持积极的态度
(4)如果领导对你的工作成果提出尖锐批评,你会如何回应?
我会保持冷静平和的心态面对批评和指责,控制情绪,避免与领导正面的冲突,其次我还会仔细复盘我的工作细节,找到问题所在,积极做出改变
(5)我看你简历里写了学习能力强,你怎么证明你的学习能力强呢?
我会自己学习新技术,帮助我理解不同领域不同行业之间的联系,遇到新的问题,我还会通过我的高效学习方法找到解决方案,我一直在保持技术博客的写作,这些都是我学习新技术的证明
(6)如果你的室友在考试中,偷偷让你帮忙传递一个写着知识点的小纸条(现场监管不严,被发现概率低),你会帮吗?请说具体理由,不要只讲大道理。
我不会帮,帮助他人作弊本身就是不符合规定的,即使被发现的概率低,但也不代表不会被揪出来,况且帮助他人作弊风险极大,很容易将自己牵连进去,影响自己未来的发展
(7)你说很想进入我们公司,但你的专业和我们公司关联度不高,而且你也没有相关的实习经历。你觉得我们为什么要相信你是真心想做这个行业,而不是把这里当跳板?
我非常理解你的顾虑,我对贵公司行业的前景一直保持乐观的态度,起码跟我的专业前景比起来,贵公司的发展更加契合时代潮流,我也想办法能够得到贵公司的帮助,帮助我转型到本领域
(8)你的成绩在班级里处于中等水平,而我们这个岗位竞争激烈,很多应聘者成绩都很优秀。你觉得自己比他们强在哪里,值得我们录用你?
虽然我的成绩不是最顶尖的,但这份中等成绩恰恰反映了我的时间都投入在了更符合贵司岗位需求的实际能力培养上,我的实战成果或许更能比分数证明我的实力。
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 lstnums = [2, 3, 8]print(process_list(nums))
结果:[2, 1, 3, 8, 4]
(2)运行下列代码,输出结果是什么?
def modify_tuple(t): try: t[1] += 10 except: t = (t[0], t[1]+10, t[2]) return ttup = (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\"))
结果:“nOhTyP”
(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())
结果:TypeError
(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 totalprint(nested_list_operation())
结果: 30
(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())
结果:2
(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())
结果:‘ytho orl ell’
(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())
结果:33