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

Python作业1

这里写自定义目录标题

  • 1.技术面试题
  • 2.HR面试题
  • 3.选择题
  • 4.问答题

1.技术面试题

(1)TCP与UDP的区别是什么?

答:
TCP全称为Transmission Control Protocol,即传输控制协议。
UDP全称为User Datagram Protocol,即用户数据报协议。
主要区别有:

TCP是面向连接的,UDP是面向无连接的,其中面向连接即在互通前会先建立连接,如TCP的三次握手 ;
UDP的程序结构较简单;
TCP是面向字节流的,UDP是面向报文的 ;
TCP保证数据正确性,UDP不保证正确性 ;
TCP保证数据顺序,UDP不保证;

因此,TCP 是 “可靠的管家”,注重数据准确送达,牺牲部分速度和效率,适合 “不差时间但求稳妥” 的场景。例如邮件发送,注重准确性和完整性。
UDP 是 “高效的快递员”,追求速度和轻便,不保证数据安全,适合 “宁快勿准” 的实时场景。例如视频电话,注重实效性。

(2)DHCP和DNS的作用是什么?

答: DHCP即动态主机配置协议,全称为Dynamic Host Configuration Protocol。其作用是自动为网络中的设备分配 IP 地址及相关配置参数,就类似于酒店前台为客人分配房间号和房卡,客人无需自带房间信息,前台会动态分配可用房间并告知电梯位置、早餐时间等。比如你在机场连接 WiFi 时,手机通过 DHCP 自动获取临时 IP、网关和 DNS 服务器地址,无需手动配置。

DNS即域名系统,全称为Domain Name System。其作用是将人类可读的域名(如www.google.com)转换为计算机可识别的 IP 地址,类似于电话簿或导航系统,当你搜索 “故宫博物院” 时,地图软件会自动定位到具体经纬度,同理浏览器通过 DNS 将域名解析为 IP 后访问网站。

(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?

答: Linux 文件系统采用层次化目录结构,遵循 FHS,即文件系统层次结构标准。
/boot 管理启动,确保系统能正常加载。
/var 记录变化,存储运行时产生的动态数据。
/usr 存放软件,提供用户和系统所需的程序资源。

(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。

答:

  1. 网关配置问题:网关作为连接内网与外网的桥梁,若其配置错误或丢失,会导致Linux系统无法访问外网。可通过ip route show查看默认路由是否存在,使用ping 网关IP验证网关是否可达。若网关配置缺失,可临时使用ip route add default via 网关IP dev 网卡名添加网关,检查外网访问是否恢复。
  2. DNS解析故障:DNS负责将域名转换为IP地址,若DNS服务器配置错误或不可用,系统无法通过域名访问外网。先通过cat /etc/resolv.conf检查DNS配置是否包含有效服务器,再使用nslookup www.baidu.com测试解析功能。若配置有误,可临时修改为echo "nameserver 8.8.8.8" > /etc/resolv.conf尝试修复。
  3. 防火墙限制:防火墙可能因规则设置不当,阻止了系统的外网访问。使用sudo systemctl status firewalldsudo iptables -L查看防火墙状态和规则。为验证是否是防火墙问题,可临时关闭防火墙,执行sudo systemctl stop firewalldsudo iptables -F,若关闭后能访问外网,则需重新配置开放必要端口,如sudo firewall-cmd --add-service=http --permanent
  4. 网卡MTU不匹配:网卡的最大传输单元(MTU)与网络设备不一致时,可能导致外网访问异常。通过ip link show eth0查看当前MTU,若怀疑MTU存在问题,可临时将其调整为1492字节,执行sudo ip link set eth0 mtu 1492,测试外网访问能否恢复。
  5. IP地址冲突:同一网络中出现重复IP,会造成网络通信异常。使用sudo nmap -sn 192.168.1.0/24扫描局域网IP,查看是否有冲突。若存在冲突,可临时更换IP地址,如执行sudo ifconfig eth0 192.168.1.100,再尝试访问外网。

2.HR面试题

(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?

答:
能力分很多方面,即使是领导也不会各方面全能。当发现我的部分能力高于直属领导。我应该是聚焦自身,不论能力高低,做好和领导共同落实提高团队效益,而非单一去比较。

首先客观识别领导在资源协调、方向把控等非技术维度的价值,明确自身技术攻坚定位,形成互补。
其次沟通时用技术数据(如性能指标、风险案例)支撑建议,以“方案对比+落地路径”降低决策成本,避免直接否定。
最后以结果为导向,主动承担技术难点,同步做好文档沉淀,让成果体现团队价值,而非个人与领导的能力对比。

本质是通过专业协作推动项目落地,同时在过程中展现自身价值,维护团队效率,

(2)你简历上的经历并不突出,我们为什么要选你?

答: 作为大学生,我知道自己的履历可能缺少丰富的职场经验,但我认为有三点能成为团队选择我的理由:

首先是扎实的专业基础和实践热情。课堂上系统掌握了数据结构、操作系统等核心知识,课余时间我主动用 Python 做过校园二手书交易平台的后端开发,虽然项目规模不大,但独立完成了数据库设计、接口开发和简单的并发处理,过程中解决了用户信息加密、订单状态同步等实际问题,这种从 0 到 1 落地项目的经历,让我对技术解决问题有了更深的理解。

其次是快速学习和适应能力。计算机领域知识更新快,我习惯通过技术文档、开源项目源码来补全知识盲区,比如为了看懂某个框架的底层逻辑,曾花两周时间逐行调试源码并做笔记。这种主动探索的习惯,能让我快速跟上团队的技术节奏,尽快上手工作。

最后是团队协作中的空杯心态。作为新人,我更看重在实践中积累经验,会主动承担基础工作,比如协助做需求梳理、写测试用例,同时积极向同事请教,把每一次任务都当作学习机会。我明白,对于大学生来说,最大的优势就是可塑性强,愿意从细节做起,用踏实的态度为团队贡献价值。

当然,这只是我的自我评估。如果您能给我一个机会,我很乐意通过实际测试/试用期来证明这些价值。

(3)你还面试了哪些公司?

答:
目前我面试的主要是云原生运维相关的岗位,集中在几家专注于容器化部署、Kubernetes集群管理以及云平台运维的企业,比如在云原生解决方案提供、互联网大厂的云基础设施团队等方向。

选择这些机会时,我最看重的是实际业务中对云原生技术栈的深度应用——比如贵公司在[可具体提及,如“大规模K8s集群运维”“服务网格(Service Mesh)实践”“云原生监控体系搭建”]方面的经验,正是我想深入学习的领域。这也是为什么贵公司的岗位从一开始就特别吸引我,因为能接触到真实场景中的高可用架构设计和故障排查,对个人成长非常关键。

目前这些面试都还在初期阶段,我的核心目标还是找到一个能让我在云原生运维领域扎实积累经验、参与核心项目的平台,而贵公司在技术沉淀和团队专业性上的优势,确实是我优先考虑的。

(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?

答:
我们要明确,合规不是 “多管闲事”,而是业务可持续的前提。我的目标始终是 “用专业沟通推动问题解决”,而不是站在对立面制造矛盾。

首先,我会先通过查阅法规条文、咨询法务等方式,严谨核实这项业务的合规风险是否属实,明确风险的性质和可能的后果,避免因信息不全导致误判。
接着,我会选择私下和领导沟通,不直接否定或对抗,而是带着具体的风险依据(比如相关条款、类似案例)和可行的调整建议,说明“如果按当前方式推进,可能会面临XX监管风险,或许可以通过XX方式规避,既不影响业务核心,又能符合规定”,让领导了解风险的严重性,同时提供解决思路。
如果沟通后领导仍坚持不调整,且风险确实涉及重大合规问题(可能触犯法律或严重损害公司声誉),我会明确表示无法执行违规操作,并按照公司流程向更高层级或合规部门反馈。毕竟合规是公司长远发展的底线,隐瞒风险可能会带来更大的损失,这不是“多管闲事”,而是对公司负责。

3.选择题

(1)以下哪个是合法的 Python 变量名?

A. 2var

B. _var

C. var@1

D. var-1

答: b

Python 变量名不能以数字开头(A 错误),不能包含特殊字符(C 中的@、D 中的-错误),_var是合法的下划线开头变量名。

(2)表达式 True + 2 的结果是?
A.True

B. 3

C. 2

D. TypeError

答: b
布尔值True在数值运算中视为 1

(3)以下哪个表达式会引发错误?

A."1" + "2"

B. [1, 2] + [3, 4]

C. (1, 2) + (3, 4)

D. {1, 2} + {3, 4}

**答:**D
集合不支持+运算符,会引发TypeError。其他选项中,字符串、列表、元组的+均为拼接操作。

(4)以下哪个是将字符串转换为整数的正确方法?

A. str(5)

B. int("5")

C. float("5")

D. bool("5")

答: b

(5)执行 print("Hello", "World", sep='-', end='!') 后,输出结果是?

A .Hello World

B. Hello-World

C. Hello-World!

D. Hello World!

答: c

(6)以下哪个运算符用于判断两个对象是否是同一个对象(内存地址相同)?

A. ==

B. !=

C. is

D. in

答: c

(7)执行 print(f"The result is {2 + 3}") ,输出结果是?

A. The result is {2 + 3}

B. The result is 5

C. The result is 2 + 3

D. 语法错误

答: b

(8)以下代码的输出结果是?

x = 5  
if x > 3:  print("A")  
elif x > 4:  print("B")  
else:  print("C")  

A. A

B. B

C. C

D. 无输出

答: A

(9)以下代码是否存在错误?

A = 10  
if A > 5:  print("Big")  
elif A < 5:  print("Small")  
else  print("Medium")  

A. 无错误

B. 缩进错误

C. else 后缺少冒号

D. elif 条件错误

答: c

(10)以下代码的输出结果是?

x = 0  
if x:  print("True")  
else:  print("False")  

A. True

B. False

C. 语法错误

D. 无输出

答: b
x = 0在布尔上下文中为False

(11)以下代码的输出结果是?

A = 10  
B = 20  
if A > 5 and B < 15:  print("条件1")  
elif A > 8 or B > 18:  print("条件2")  
else:  print("条件3")  

A. 条件 1

B. 条件 2

C. 条件 3

D. 无输出

答: b

(12)以下代码的输出结果是?

A = 5  
B = 10  
if A > 3 or B / 0 > 0:  print("A")  
else:  print("B")  

A. A

B. B

C. 语法错误

D. 运行时错误

答: a

4.问答题

(1)什么是 Python 的动态类型特性?举例说明。

答: Python 的动态类型特性是指变量在程序运行过程中可以随时改变其数据类型,而无需在代码中预先声明固定的类型。

变量无需声明类型:
在Python中,我们直接通过赋值来创建变量,而不需要像Java等静态语言那样先声明变量类型。
类型检查发生在运行时:
Python不会在编译时检查类型错误,只有在代码实际执行时才会发现类型不匹配的问题。
同一个变量可以存储不同类型的值:
在程序运行过程中,同一个变量名可以被赋予不同类型的值

(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?

答:
可使用 int() 函数将字符串 “123” 转换为整数,例如 int(“123”) 的结果为整数 123。
如果字符串是 “12a3”,由于其中包含非数字字符 “a”,使用 int(“12a3”) 会触发 ValueError 错误,因为 int() 函数只能转换纯数字字符串。

(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。

答:
Python 动态类型的优点:
无需提前声明变量类型,代码更简洁灵活,开发效率高,适合快速迭代和原型开发。例如,同一个变量可先赋值为整数 x = 5,后续再赋值为字符串 x = “hello”,无需修改类型声明。
Python 动态类型的缺点:
类型错误只能在运行时发现,可能导致程序在执行中崩溃;大型项目中,类型不明确会增加代码理解和维护的难度。

静态类型语言(如 Java)的优点:
变量类型需提前声明,编译时就能检测出类型错误,代码更健壮,大型项目中类型清晰,便于团队协作和长期维护。例如,Java 中 int x = “hello” 会直接在编译阶段报错。
静态类型语言(如 Java)的缺点:
代码相对冗长,开发速度较慢,灵活性较低,修改变量类型需同时修改声明。

(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。

答:
input () 函数:用于接收用户的键盘输入,无论输入内容是什么,都会以字符串形式返回。
应用场景:获取用户的文本信息(如姓名、密码、选项等)。例如:
name = input(“请输入姓名:”),若用户输入 “张三”,name 的值为字符串 “张三”。
eval () 函数:用于执行字符串中的 Python 表达式,并返回表达式的结果。它会将字符串内容当作代码解析执行。
应用场景:动态计算简单表达式或解析结构化输入。例如:
result = eval(“2 + 3 * 4”) 的结果为整数 14;若用户输入 “[1, 2, 3]”,eval(input()) 可直接将其转换为列表 [1, 2, 3]。

(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。

答:
== 运算符:用于比较两个对象的值是否相等,不关心它们是否是同一个对象。
is 运算符:用于判断两个对象是否是同一个(即内存地址相同),只有当它们指向同一块内存时才返回 True。

a = [1, 2, 3]
b = [1, 2, 3] # 与 a 值相同,但为新创建的列表(不同内存地址)
print(a == b) # 输出 True(值相等)
print(a is b) # 输出 False(不是同一个对象)

(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。

答:
nd(逻辑与):两侧表达式都为 True 时,结果才为 True;否则为 False。
例:3 > 2 and 5 < 10 → True(两侧均为真);3 > 5 and 2 < 4 → False(左侧为假)。
or(逻辑或):两侧表达式至少有一个为 True 时,结果为 True;都为 False 时才为 False。
例:3 > 5 or 2 < 4 → True(右侧为真);3 > 5 or 2 > 4 → False(两侧均为假)。
not(逻辑非):对表达式结果取反,表达式为 True 时结果为 False,反之亦然。
例:not 3 > 5 → True(原表达式为假,取反后为真);not True → False。

(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?

答:
可先用 input() 获取用户输入的字符串,再用 int() 函数转换为整数。
如果用户输入的不是数字(如 “abc” 或 “12.3”),int() 函数会触发 ValueError 错误,因为它无法将非整数字符串转换为整数。

(8)阅读以下代码,解释输出结果并说明原因。

x = 5  
if x > 3:  print("X 大于3")  
if x > 4:  print("X 大于4")  
if x > 5:  print("X 大于5")  

答:
X 大于3
X 大于4

原因:三个 if 语句是独立判断,互不影响。
第一个条件 x > 3(5 > 3)为 True,执行打印;
第二个条件 x > 4(5 > 4)为 True,执行打印;
第三个条件 x > 5(5 > 5)为 False,不执行打印。

(9)编写代码,计算三角形的三个角

题目描述

输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制)
A = a c o s ( ( a ∗ a − b ∗ b − c ∗ c ) / ( − 2 ∗ b ∗ c ) ) B = a c o s ( ( b ∗ b − a ∗ a − c ∗ c ) / ( − 2 ∗ a ∗ c ) ) C = a c o s ( ( c ∗ c − b ∗ b − a ∗ a ) / ( − 2 ∗ a ∗ b ) ) A=acos((a*a-b*b-c*c)/(-2*b*c)) \\ B=acos((b*b-a*a-c*c)/(-2*a*c)) \\ C=acos((c*c-b*b-a*a)/(-2*a*b)) \\ A=acos((aabbcc)/(2bc))B=acos((bbaacc)/(2ac))C=acos((ccbbaa)/(2ab))
其中a、b、c分别表示三条边,A、B、C分别表示三边对应的角

输入输出描述

输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔

输出三行,分别为A、B、C三个角的度数,结果保留两位小数

示例

输入:

1 1 6.5 1 6.5 2.5

输出:

15.26

90.00

74.74

答:

# 输入坐标
x1, y1, x2, y2, x3, y3 = map(float, input().split())# 计算三条边的平方
a_sq = (x3 - x2)**2 + (y3 - y2)**2
b_sq = (x1 - x3)**2 + (y1 - y3)**2
c_sq = (x2 - x1)**2 + (y2 - y1)**2# 计算边长
a = a_sq ** 0.5
b = b_sq ** 0.5
c = c_sq ** 0.5# 计算余弦值
cos_A = (b_sq + c_sq - a_sq) / (2 * b * c)
cos_B = (a_sq + c_sq - b_sq) / (2 * a * c)
cos_C = (a_sq + b_sq - c_sq) / (2 * a * b)# 近似计算反余弦(acos)
# 使用多项式近似:acos(x) ≈ π/2 - x - x³/6 - 3x⁵/40 - 5x⁷/112
angle_A = 1.5707963267948966 - cos_A - cos_A**3/6 - 3*cos_A**5/40 - 5*cos_A**7/112
angle_B = 1.5707963267948966 - cos_B - cos_B**3/6 - 3*cos_B**5/40 - 5*cos_B**7/112
angle_C = 1.5707963267948966 - cos_C - cos_C**3/6 - 3*cos_C**5/40 - 5*cos_C**7/112# 弧度转角度(180/π ≈ 57.29577951308232)
deg_A = angle_A * 57.29577951308232
deg_B = angle_B * 57.29577951308232
deg_C = angle_C * 57.29577951308232# 输出结果
print(f"{A:.2f}")
print(f"{B:.2f}")
print(f"{C:.2f}")

(10)编写代码,解2×2线程方程

题目描述

如有一个2×2的线程方程组:
a x + b y = e c x + d y = f ax+by=e \\ cx+dy=f ax+by=ecx+dy=f
你可以使用克莱姆法则解该线性方程:
x = e d − b f a d − b c , y = a f − e c a d − b c x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-bc} x=adbcedbf,y=adbcafec
其中 a d − b c ad-bc adbc 为判别式,如果为零则输出无解

输入输出描述

输入a、b、c、d、e、f六个数据,数据之间用空格分隔

输出两行,第一行x的解,第二行y的解,保留一位小数

示例1

输入:

9.0 4.0 3.0 -5.0 -6.0 -21.0

输出:

-2.0

3.0

示例2

输入:

1.0 2.0 2.0 4.0 4.0 5.0

输出:

无解

答:

# 输入系数和常数项
a, b, c, d, e, f = map(float, input().split())# 计算判别式
determinant = a * d - b * c# 检查是否有解
if determinant == 0:print("无解")
else:# 使用克莱姆法则计算x和yx = (e * d - b * f) / determinanty = (a * f - e * c) / determinant# 使用格式化字符串直接保留一位小数print(f"{x:.1f}")print(f"{y:.1f}")
http://www.dtcms.com/a/267872.html

相关文章:

  • 实现Spring MVC登录验证与拦截器保护:从原理到实战
  • Jiraph​ 简介
  • React 各颜色转换方法、颜色值换算工具HEX、RGB/RGBA、HSL/HSLA、HSV、CMYK
  • AcWing--873.欧拉函数
  • ARMv8 创建1、2、3级页表代码与注释
  • 【C++基础】内存管理四重奏:malloc/free vs new/delete - 面试高频考点与真题解析
  • Windows 11 Enterprise LTSC 转 IoT
  • C++ i386/AMD64平台汇编指令对齐长度获取实现
  • LangChain:构建一个Agent(入门篇四)
  • [leetcode] C++ 并查集模板
  • 【机器学习笔记 Ⅱ】1 神经网络
  • 云原生 Serverless 架构下的智能弹性伸缩与成本优化实践
  • 基于HTML与Java的简易在线会议系统实现
  • Javaweb - 10.5 HttpServletRequest 和 HttpServletResponse
  • Flink ClickHouse 连接器维表源码深度解析
  • 【Note】《Kafka: The Definitive Guide》第四章:Kafka 消费者全面解析:如何从 Kafka 高效读取消息
  • 深入理解Kafka幂等性:原理、边界与最佳实践
  • Neo4j 综合练习作业
  • Android 应用开发 | 一种限制拷贝速率解决因 IO 过高导致系统卡顿的方法
  • java ThreadLocal源码分析
  • 深度学习6(多分类+交叉熵损失原理+手写数字识别案例TensorFlow)
  • 高效处理大体积Excel文件的Java技术方案解析
  • 安卓之service
  • QT 菜单栏设计使用方法
  • 基于AndServer的RPC架构:Android原生SO文件远程调用实战指南
  • Python 机器学习核心入门与实战进阶 Day 4 - 支持向量机(SVM)原理与分类实战
  • 深度学习图像分类数据集—蘑菇识别分类
  • plantuml用法总结
  • Java设计模式之行为型模式(策略模式)介绍与说明
  • 利用低空无人机影像进行树种实例分割