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((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.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=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(" "))
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}")

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



