Python延申内容(一)
1.技术面试题
(1)TCP与UDP的区别是什么?
答:
TCP(传输控制协议):面向连接、可靠传输(数据完整有序)、流量控制、拥塞控制,适用于文件传输、网页浏览等场景。
UDP(用户数据报协议):无连接、不可靠传输(可能丢包乱序)、低延迟,适用于视频流、在线游戏等实时应用。
(2)DHCP和DNS的作用是什么?
答:
DHCP:自动分配IP地址、子网掩码、网关等网络参数,简化设备入网配置。
DNS:可以将域名解析为IP地址,实现网络资源定位。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答:
/boot:存放系统启动文件(如内核、引导程序)。
/var:存储动态数据(日志、邮件、缓存)。
/usr:存放用户应用程序和只读数据(如软件库、文档)
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
答:
默认网关失效:ip route | grep default
检查网关配置,ping 网关IP
测试连通性。
DNS解析失败:nslookup google.com
验证DNS服务。
防火墙拦截:iptables -L
检查OUTPUT链规则。
路由表错误:route -n
查看路由条目。
外网接口故障:ifconfig eth0
检查外网网卡状态及IP。
2.HR面试题
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答:
我会首先调整心态,认识到管理能力与技术专长是不同维度的竞争力。在实际工作中,我会尊重组织架构的权威性,主动理解领导的管理视角和工作重点。通过定期的工作汇报和私下沟通,我会尝试将技术建议转化为对业务目标有直接帮助的方案。
(2)你简历上的经历并不突出,我们为什么要选你?
答:
我的价值在于将普通经历转化为实际成果的能力。在之前的项目中,我善于发现流程中的优化点,比如将常规测试流程自动化后为团队节省40%的时间。面对技术挑战时,我展现出快速学习能力,曾用三天时间掌握新技术解决团队卡顿两周的瓶颈问题。更重要的是,我具备将技术能力转化为业务价值的意识,在XX项目中通过界面优化使客户转化率提升23%。作为团队协作者,我在项目危机时主动协调多方资源确保交付。这些能力保证我能快速适应环境,在普通岗位上创造超预期价值。
(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 的动态类型特性?举例说明。
**答:**变量类型在运行时确定,无需显式声明
a = 10 # a为整数
a = "文本" # a变为字符串(静态类型语言会报错)
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答: 转换:int("123")
→ 整数123
会发生异常:int("12a3")
抛出ValueError
(含非数字字符)
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答: python是动态的,开发速度较快,代码比较简洁,但是解释执行较慢
Java是静态的,需要编译声明,编译优化快,但是类型声明冗长
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答:input():返回用户输入的原始字符串,如age = input("年龄:")
→ age
为字符串"18"
。
eval():执行字符串中的Python表达式,如result = eval("2+3 * 4")
→ result=14
。
(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 and False → False |
or | 一真即真 | True or False → True |
not | 取反 | not True → False |
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答: 用 int(input()) 转换,如 num = int(input(“输入数字:”)) ;若输入非数字,会抛出 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条件判断当满足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((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、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.degrees(math.acos((b**2 + c**2 - a**2) / (2 * b * c)))
B = math.degrees(math.acos((a**2 + c**2 - b**2) / (2 * a * c)))
C = math.degrees(math.acos((a**2 + b**2 - c**2) / (2 * a * b)))
print(f"{A:.2f}")
print(f"{B:.2f}")
print(f"{C:.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=ad−bced−bf,y=ad−bcaf−ec
其中 ad−bcad-bcad−bc 为判别式,如果为零则输出无解
输入输出描述
输入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())
flag=a*d-b*c
if flag==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}")