Python作业1

1.技术面试题

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

答: TCP 是传输控制协议,是面向连接的传输层协议,它在通信前需通过三次握手建立连接,结束时通过四次挥手释放连接,适用于对数据准确性要求高的场景。数据传输方式:基于字节流,数据被视为连续的字节序列,会根据网络状况调整发送速率,并协调双方传输节奏。
UDP 是用户数据报协议,是无连接的传输层协议,不建立连接,直接发送数据,不可靠但传输速度快,适用于对实时性要求高、对数据丢失不敏感的场景。数据传输方式:基于数据报,每个数据包独立发送,大小固定,发送端不管接收端是否准备好,直接发送。

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

答: DHCP是动态主机配置协议,其作用是自动为网络设备分配 IP 地址等网络参数,避免手动配置的繁琐和错误。常见场景:家庭路由器默认开启DHCP,手机、电脑连接Wi-Fi时自动获取IP,无需手动配置。
DNS是域名系统,其作用是将域名和 IP 地址相互映射,方便用户通过域名访问网站,而不是记忆复杂的 IP 地址。常见场景:在浏览器输入域名后,DNS会自动解析出对应IP,使设备能正确连接到目标服务器。

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

答: /Boot 目录系统启动的关键目录,存放着系统启动内核与引导文件所需要的文件。
/var目录存放缓存文件、日志文件等经常变化的数据。
/usr目录存放系统应用程序及数据,是用户信息的主要存储地。

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

答: 1:DNS 配置错误。检查 /etc/resolv.conf 文件中的 DNS 服务器地址是否正确,通过修改为正确 DNS 地址后测试能否访问外网。
2:路由配置问题。排查步骤:查看路由表信息,确认是否有正确的默认路由及外网路由条目,若有缺失则添加相应路由。
3:防火墙限制。排查步骤:检查防火墙,看是否限制了外网访问的流量,可通过临时关闭防火墙测试访问情况,若可以访问则需调整防火墙规则。
4:网关配置错误。排查步骤:确认网关地址是否正确设置,可使用 ping 命令测试网关是否可达,若不可达则检查网络接口配置文件修改网关地址。
5:网络接口故障。排查步骤:查看网卡状态,检查是否有硬件故障或驱动问题,可尝试重新插拔网卡、更新驱动等操作。

2.HR面试题

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

答: 我会首先尊重领导的决定,相信其有独到的管理经验和视野。领导并非是全能的,并不需要各方面都强于他人,我的存在就是为了填补领导的短板。领导带领我们正确的完成任务,我会在工作中积极主动沟通,主动分享自己的想法和见解,为团队项目贡献力量。

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

答: 虽然我的简历经历看似不突出,但我具备扎实的专业基础和较强的学习能力,能够快速掌握新知识和技能。我对待工作认真负责、积极主动,注重团队协作,能为团队带来新的活力和思路。且我有较强的适应能力,能快速融入新的工作环境并发挥价值,相信这些优势能让我在岗位上有所作为。

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

答: 我确实也在关注其他几家同行业的优秀公司,并且有投递简历和参加面试。但我对贵公司一直非常向往,贵公司的业务发展方向、企业文化等都深深吸引着我,我相信在这里我能有更好的发展空间和成长机会,可以在贵公司展现自己的能力。

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

答: 我认为发现合规风险是极为重要的。即使领导有暗示,我的第一反应是评估风险严重性,然后与领导进行私下沟通,清晰阐述风险后果并寻求合规解决方案。 沟通无效时,我会利用公司内部受保护的合规举报渠道进行报告。 我认为维护合规是保护公司、团队和个人的根本。

3.选择题

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

A. 2var

B. _var

C. var@1

D. var-1

答: B

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

B. 3

C. 2

D. TypeError

答: B

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

A."1" + "2"

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

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

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

答: D

(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

(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 的动态类型特性是指变量类型在运行时动态确定,且同一变量可在程序运行过程中引用不同类型的对象。
变量无需声明类型:创建变量时只需直接赋值,变量的类型由所赋值的类型决定。
同一个变量可以被重新赋值为不同类型的对象:即变量可以在程序运行过程中改变其类型。

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

答: 使用 int() 函数转换:int(“123”) 会返回整数 123。
如果字符串是 “12a3”,会抛出 ValueError 异常,因为字符串包含非数字字符。

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

答: Python动态类型
优点:代码简洁灵活,无需声名类型;变量可以自由切换类型。
缺点:类型错误在运行时才能暴露;编程过程中难以提供完整类型提示。

Java静态类型:
优点:编译时捕获类型错误;性能通常更高。
缺点:代码需要显示声名类型,类型系统复杂。

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

答: input() 函数:用于接收用户的键盘输入,输入内容是什么,都会以字符串形式返回。
input()应用场景:获取用户名、密码等文本数据。
eval()函数:用于执行字符串的Python表达式,并表达式,并返回表达式的结果。它将字符串内容当作代码解析执行。
eval():计算数学表达式,但需注意安全风险。

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

答: ==:比较值是否相等。
is:比较对象内存地址是否相同(是否同一个对象)。

a = [1, 2]
b = [1, 2]
c = a
print(a == b) # True(值相同)
print(a is b) # False(不同对象)
print(a is c) # True(同一对象)

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

答:
and:当且仅当两个操作数都为 True 时,结果才是 True;只要有一个操作数为 False,结果就是 False。可以概括为 “全真则真,一假则假”。

or:只要两个操作数中有一个为 True,结果就为 True;只有当两个操作数都为 False 时,结果才是 False。可以概括为 “一真则真,全假则假”。

not:对单个布尔值进行取反操作,即把 True 变为 False,把 False 变为 True。

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

答: 用 int() 转换:num = int(input(“输入数字:”))。
如果输入非数字(如 “abc”),会抛出 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
原因:
x > 3 为 True(5>3),执行第一个 print。x > 4 为 True(5>4),执行第二个 print。
x > 5 为 False(5不大于5),跳过第三个 print。
所有 if 语句独立判断,无互斥关系。

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

题目描述

输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制)
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((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

答:

import math
x1, y1, x2, y2, x3, y3 = map(float, input().split(" "))
a = ((x2 - x3) ** 2 + (y2 - y3) ** 2) **0.5
b = ((x1 - x3) ** 2 + (y1 - y3) ** 2) **0.5
c = ((x1 - x2) ** 2 + (y1 - y2) ** 2) **0.5
A = math.acos((a * a - b * b - c * c) / (-2 * b * c))
B = math.acos((b * b - a * a - c * c) / (-2 * a * c))
C = math.acos((c * c - b * b - a * a) / (-2 * a * b))
A_deg = math.degrees(A)
B_deg = math.degrees(B)
C_deg = math.degrees(C)
print(f"{A_deg:.2f}")
print(f"{B_deg:.2f}")
print(f"{C_deg:.2f}")

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

题目描述

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

输入输出描述

输入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(" "))
if (a * d - b * c) == 0:
    print("无解")
else:
    x = (e * d - b * f) / (a * d - b * c)
    y = (a * f - e * c) / (a * d - b * c)
    print(f"{x:.1f}")
    print(f"{y:.1f}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值