https://gitee.com/teacher-heng/20250704Python/blob/m
Python学习
(1)TCP与UDP的区别是什么?
答:TCP与UDP的区别连接方式
TCP是面向连接的协议,通信前需通过三次握手建立连接,确保双方准备好传输数据。UDP是无连接的协议,直接发送数据无需建立连接,减少了开销但缺乏可靠性保障。
可靠性
TCP提供可靠传输,通过确认应答、重传机制、流量控制和拥塞控制确保数据完整有序到达。UDP不保证可靠性,数据可能丢失或乱序,适合对实时性要求高的场景。
传输效率
TCP因连接管理和可靠性机制,传输效率较低,延迟较高。UDP无需复杂控制,传输效率高,延迟低,适合视频会议、在线游戏等实时应用。
数据边界
TCP是字节流协议,数据无明确边界,可能合并或拆分发送。UDP保留数据边界,每个数据包独立发送和接收。
头部开销
TCP头部较大(至少20字节),包含序列号、确认号等字段。UDP头部固定8字节,开销更小。
应用场景
TCP适用于文件传输、网页浏览等需要可靠性的场景。UDP适用于实时音视频、DNS查询等对速度敏感的场景。
流量控制
TCP通过滑动窗口机制动态调整发送速率,避免拥塞。UDP无流量控制,可能因发送过快导致网络拥堵。
拥塞控制
TCP采用慢启动、拥塞避免等算法适应网络状况。UDP不处理拥塞,可能加剧网络问题。
(2)DHCP和DNS的作用是什么?
答:DHCP的作用
DHCP(动态主机配置协议)用于自动分配IP地址、子网掩码、默认网关等网络配置信息给局域网中的设备。它简化了网络管理,避免了手动配置IP地址的繁琐和潜在冲突。设备接入网络时,DHCP服务器会动态分配一个可用的IP地址,并在租约到期后回收或续约。
DNS的作用
DNS(域名系统)将人类可读的域名(如www.example.com)转换为机器可识别的IP地址(如192.0.2.1)。它充当互联网的“电话簿”,通过分层解析机制实现高效查询,使用户无需记忆复杂的数字地址即可访问网站或服务。DNS还支持负载均衡和邮件路由等功能。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答:Linux 文件系统采用层级式目录结构,所有目录从根目录(/)开始,形成一个树状结构。以下是关键目录及其作用:
/boot
存放系统启动时所需的文件,包括内核镜像(vmlinuz)、初始化内存盘(initramfs)以及引导加载程序(如 GRUB)的配置文件。该目录通常单独分区,以避免系统启动问题。
/var
存储动态变化的文件,如日志(/var/log)、缓存(/var/cache)、邮件队列(/var/mail)以及数据库文件等。此目录内容经常被系统或应用程序修改,通常需要较大的磁盘空间。
/usr
包含系统用户共享的只读数据,如应用程序、库文件(/usr/lib)、文档(/usr/share/doc)和命令行工具(/usr/bin)。现代 Linux 系统中,/usr 被视为核心系统的一部分,类似于 Windows 的 Program Files。
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答:保持专业与尊重
无论直属领导的能力如何,都应保持职业素养和尊重的态度。避免公开质疑或贬低领导的能力,维护团队和谐。通过行动展示专业能力,而非言语上的对抗。
主动沟通与协作
主动与领导沟通,了解其工作风格和期望。提出建设性意见时,以合作而非批评的方式表达。例如,可以说“我有一个想法,或许能帮助团队提升效率”,而非直接指出领导的不足。
发挥自身优势
在职责范围内尽可能发挥自身优势,用结果证明能力。主动承担重要任务,展示解决问题的能力。通过实际贡献赢得领导和团队的信任,而非依赖职位高低。
寻求学习机会
将这种情况视为学习机会,提升自身的管理和沟通能力。观察领导如何处理人际关系或资源协调,即使业务能力不足,也可能有其他值得学习的长处。
建立向上管理
适当向上管理,帮助领导成功。提供清晰的数据或方案,减少其决策压力。在领导需要支持时主动协助,既能展现价值,也能减少因能力差距带来的摩擦。
保持耐心与长期视角
职业发展是长期过程,短期内可能无法改变领导的能力。保持耐心,专注于自身成长。如果长期无法适应,再考虑内部调岗或外部机会,而非急于冲突。
(2)你简历上的经历并不突出,我们为什么要选你?
答:突出个人潜力与适配性
即使简历经历看起来不够突出,关键在于展示个人潜力与岗位的高度适配性。通过具体案例说明快速学习能力,例如在短时间内掌握新技能并应用于实际项目。强调对行业和岗位的理解,展现对职业发展的清晰规划。
强调软技能与团队贡献
软技能如沟通能力、团队协作和问题解决能力往往是简历中难以量化但至关重要的部分。举例说明在团队项目中如何协调矛盾或推动任务完成,突出这些能力如何为团队带来价值。展示积极的工作态度和适应能力,证明能快速融入团队文化。
展示成果与数据化证明
用数据或具体成果补充看似平淡的经历。例如优化某个流程后节省的时间比例,或独立完成的任务如何超出预期。量化成果能让经历更具说服力,同时体现结果导向的思维方式。
(3)你还面试了哪些公司?
答:行业龙头企业
初创企业与新兴公司
本地与跨国公司
(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?
答:评估风险性质与程度
确认合规风险的具体类型(法律、财务、行业规范等)及其潜在影响。轻微疏漏与重大违法行为的处理方式不同,需通过查阅法规、内部制度或咨询法务部门明确风险等级。
保留书面证据
记录发现风险的过程、相关数据及领导沟通的细节(如邮件、会议纪要),避免仅依赖口头沟通。电子记录需备份至个人无法删除的存储空间,确保未来追溯时有据可查。
内部渠道反馈
通过公司合规举报系统或审计部门匿名提交问题,若公司无正式渠道,可向更高层级管理层或合规委员会发送加密邮件,强调风险客观事实而非个人判断。
外部举报准备
若内部反馈无效且风险可能引发严重法律后果(如欺诈、环境危害),联系外部监管机构或律师。需确保符合当地举报人保护法要求,部分国家允许匿名举报并禁止雇主报复。
个人职业保护
评估继续履职的潜在法律连带责任,必要时寻求新工作机会。离职前避免销毁任何与风险相关的文件,同时避免签署可能限制未来举报权利的保密协议。
心理与法律支持
如遭遇职场压力或报复,联系劳工权益组织或心理咨询服务。重大案件可申请法律援助,确保个人权益不受侵害。
(1)以下哪个是合法的 Python 变量名?
_var
(2)表达式 True + 2 的结果是?
答:2
(3)以下哪个表达式会引发错误?
答:{1, 2} + {3, 4}
(4)以下哪个是将字符串转换为整数的正确方法?
答:int(“5”)
(5)执行 print(“Hello”, “World”, sep=‘-’, end=‘!’) 后,输出结果是?
答: Hello-World!
(6)以下哪个运算符用于判断两个对象是否是同一个对象(内存地址相同)?
答:is
(7)执行 print(f"The result is {2 + 3}") ,输出结果是?
答:The result is 5
(8)以下代码的输出结果是?
答:A
(9)以下代码是否存在错误?
答:else 后缺少冒号
(10)以下代码的输出结果是?
答:True
(11)以下代码的输出结果是?
答:条件 2
(12)以下代码的输出结果是?
答:A
(1)什么是 Python 的动态类型特性?举例说明。
答:Python 的动态类型特性
动态类型是 Python 的核心特性之一,指变量在运行时才确定其类型,且类型可以随时改变。与静态类型语言(如 C++、Java)不同,Python 不需要在声明变量时指定类型,解释器会在运行时自动推断。
动态类型的表现
变量无需声明类型
Python 变量直接赋值即可使用,类型由赋值的值决定
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答:直接使用int()函数,该函数会解析字符串中的数字字符,并返回对应的整数值;使用int()函数会引发ValueError异常,因为函数无法解析非数字字符。
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点?
答:动态类型(Python)的优缺点
优点
**灵活性高:**变量类型在运行时确定,无需显式声明类型,代码更简洁。
开发速度快:减少类型声明和编译步骤,适合快速原型开发和脚本编写。
易于重构:修改代码时无需同步调整类型声明,适合需求频繁变动的场景。
缺点
**运行时错误风险:**类型错误可能在执行时才发现,增加调试成本。
性能较低:类型检查在运行时进行,执行效率通常低于静态类型语言。
工具支持弱:IDE 难以提供精准的类型提示和自动补全,代码可维护性较差。
静态类型(Java)的优缺点
优点
编译时类型检查:错误在编译阶段暴露,提高代码健壮性。
性能优化:编译器可基于类型信息优化代码,执行效率更高。
工具支持强:IDE 能精准推断类型,提供更好的代码补全和重构支持。
缺点
代码冗余:需显式声明类型,增加代码量,开发速度相对较慢。
灵活性低:类型系统可能限制某些动态特性(如运行时修改对象结构)。
学习曲线陡峭:复杂的类型系统(如泛型)对初学者不友好。
适用场景对比
Python:适合小型项目、数据分析、快速迭代场景。
Java:适合大型长期维护项目、高性能后端服务。
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答:input() 函数
用于从标准输入(如键盘)读取用户输入的字符串,返回值为字符串类型。
不自动解析输入内容,需手动转换数据类型(如 int(input()))。
适用于需要直接获取用户原始输入的场景。
eval() 函数
用于执行字符串形式的 Python 表达式,返回表达式计算后的结果。
自动解析字符串内容并执行,如 eval(“1+1”) 返回 2。
存在安全风险,可能执行恶意代码(如 eval(“import(‘os’).system(‘rm -rf /’)”))。
适用于动态执行数学表达式或简单代码的场景。
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同
答:运算符与 is 运算符的区别
== 运算符
用于比较两个对象的值是否相等。它会检查两个对象的内容是否相同,而不关心它们是否是同一个对象。
is 运算符
用于比较两个对象的身份标识是否相同,即它们是否指向内存中的同一个对象。它检查的是对象的地址是否一致。
不同情况的示例
整数比较(小整数池现象)
在 Python 中,小整数(通常为 -5 到 256)会被缓存,因此相同的值可能会指向同一个对象
总结
使用 == 比较对象的值是否等价。
使用 is 比较对象是否是同一个实例(如 None、True、False 或显式单例)。
对于可变对象或非缓存对象,is 的结果通常为 False,即使值相同。
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答:and(与运算)
规则:当且仅当所有操作数均为 True 时,结果为 True;否则为 False。
or(或运算)
规则:只要有一个操作数为 True,结果即为 True;全为 False 时结果为 False。
not(非运算)
规则:对操作数的布尔值取反,True 变 False,False 变 True。
短路特性
and:若第一个操作数为 False,直接返回 False,不再计算第二个操作数。
or:若第一个操作数为 True,直接返回 True,不再计算第二个操作数。
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答:使用 int() 函数转换输入
通过 input() 获取的输入默认是字符串类型,可以使用 int() 函数将其转换为整数类型
处理非数字输入的情况
如果用户输入的内容无法转换为整数(如字母或符号),会触发 ValueError 异常。
异常处理避免程序崩溃
为了避免程序因无效输入而崩溃,可以使用 try-except 块捕获异常
检查输入是否为数字
在转换前,可以通过字符串的 isdigit() 方法检查输入是否仅包含数字字符:
(8)阅读以下代码,解释输出结果并说明原因。
答:因为 5 确实大于 3,所以条件成立,会执行其缩进下的语句 print(“X 大于3”),会输出 “X 大于3”;由于 5 大于 4,条件成立,会执行其缩进下的语句 print(“X 大于4”),会输出 “X 大于4”;Python 中 if 条件判断语句后需要有 :(冒号),这里缺少了冒号;因为 5 不大于 5,条件不成立,语句 print(“X 大于5”) 不会被执行。
(9)编写代码,计算三角形的三个角
答:import math
输入三个顶点的坐标
x1, y1, x2, y2, x3, y3 = map(float, input().split())
计算三条边的长度
a = math.sqrt((x2 - x3) ** 2 + (y2 - y3) ** 2)
b = math.sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2)
c = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
计算三个角(弧度制)
A = math.acos((a ** 2 - b ** 2 - c ** 2) / (-2 * b * c))
B = math.acos((b ** 2 - a ** 2 - c ** 2) / (-2 * a * c))
C = math.acos((c ** 2 - a ** 2 - b ** 2) / (-2 * a * b))
将弧度转换为角度,并保留两位小数
A_deg = math.degrees(A)
B_deg = math.degrees(B)
C_deg = math.degrees©
输出结果
print(f"{A_deg:.2f}“)
print(f”{B_deg:.2f}“)
print(f”{C_deg:.2f}")
(10)编写代码,解2×2线程方程
答:import sys
def solve_linear_equation():
a, b, c, d, e, f = map(float, sys.stdin.readline().split())
discriminant = a * d - b * c
if discriminant == 0:
print("无解")
else:
x = (e * d - b * f) / discriminant
y = (a * f - e * c) / discriminant
print(f"{x:.1f}")
print(f"{y:.1f}")
solve_linear_equation()
9240

被折叠的 条评论
为什么被折叠?



