1.技术面试题 (1)TCP与UDP的区别是什么?
答: TCP(传输控制协议)和 UDP(用户数据报协议)是 TCP/IP 协议族中两种核心的传输层协议,它们在数据传输方式、可靠性、适用场景等方面存在显著差异。①数据传输方式:TCP:面向连接的协议。 数据传输前必须通过 “三次握手” 建立连接,传输结束后需通过 “四次挥手” 释放连接,类似打电话的流程(先拨号确认双方接通,再通话,最后挂电话)。 UDP:无连接协议。 发送方无需与接收方建立连接,直接发送数据报,接收方也无需提前确认,类似写信(直接投递,不确认对方是否准备好接收)。②可靠性:TCP:提供可靠传输。 通过多种机制确保数据准确、完整、有序到达: 确认机制:接收方收到数据后会返回 ACK 确认,若发送方超时未收到 ACK,则重传数据。 序列号与重排序:每个数据段都有编号,接收方可按序号重组数据,解决乱序问题。 流量控制:通过滑动窗口机制,控制发送方速率,避免接收方缓冲区溢出。 拥塞控制:当网络拥堵时,降低发送速率,减少数据丢失。 UDP:不保证可靠性。 数据报发送后不确认是否到达,可能丢失、重复或乱序,也没有流量控制和拥塞控制机制。③数据传输效率:TCP:效率较低。 由于连接建立 / 释放、确认、重传等机制,TCP 的头部开销更大(固定 20 字节,可扩展至 60 字节),传输延迟更高,适合对效率要求不极致但需可靠性的场景。 UDP:效率较高。 头部开销小(固定 8 字节),无需额外机制,传输速度快、延迟低,适合对实时性要求高的场景,但可能牺牲可靠性。④数据边界:TCP:面向字节流,无数据边界。发送方将数据视为连续的字节流,接收方通过缓冲区累积数据,不区分单次发送的 “数据包”,需应用层自行处理数据分割(例如 HTTP 通过 Content-Length 标识数据长度)。UDP:面向数据报,保留数据边界。发送方每次发送一个完整的数据报,接收方一次接收一个完整的数据报,无需应用层额外处理边界(例如 DNS 查询通常用 UDP,一次请求对应一次响应)。
(2)DHCP和DNS的作用是什么?
答: DHCP 的核心作用是自动为网络中的设备分配 IP 地址及其他网络配置信息,避免了手动设置的繁琐和错误,是大规模网络中不可或缺的服务。DNS 的核心作用是将人类易记的域名(如www.baidu.com)解析为计算机可识别的 IP 地址(如 180.101.50.242),解决了 “IP 地址难记” 的问题,是互联网访问的 “翻译官”。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答: /boot:系统启动文件目录;/var:可变数据目录;/usr:用户软件资源目录
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
答: ①网关配置错误排查:ip route show 检查默认网关是否存在 / 正确,缺失则临时添加 ip route add default via 网关IP dev 网卡名 测试。 ②DNS 解析故障 排查:nslookup 域名 测试解析,失败则检查 /etc/resolv.conf,临时替换为公共 DNS(如 8.8.8.8)。 ③防火墙限制排查:systemctl status firewalld/iptables 查看状态,临时关闭防火墙(stop)测试是否恢复。④ MTU 值过大排查:ip link show 网卡名 查 MTU,若大于 1500,临时改小(如 1400)测试。 ⑤网关设备故障排查:用其他内网设备测试外网,若均失败,检查路由器 / 网关是否正常联网。
2.HR面试题 (1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答: 我面对直属领导能力不如自己的情况,我会尊重他并观察其在资源协调、管理等方面的优势,工作中以补位不越位的方式主动提供专业支持,通过清晰同步进展、明确分工强化协同,聚焦共同目标推进工作。同时,将此视为锻炼沟通与适应能力的机会,踏实做好当下事,以成果为导向维系协作,这既是对团队负责,也是职业成长的一部分。
(2)你简历上的经历并不突出,我们为什么要选你?
答:虽然我的简历经历可能不够亮眼,但我认为自己有几个特质能为团队创造价值:首先,我对这个岗位的核心需求有清晰理解,比如 ,过去通过积累了扎实的基础能力,能快速上手基础工作。其次,我有很强的学习主动性 —— 遇到不懂的问题会立刻钻研,这能弥补经验不足,跟上团队节奏。更重要的是,我愿意从细节做起,把每一件小事做好。对我而言,比起 “突出的经历”,把当下的工作做出结果更重要。如果能加入团队,我会用踏实的态度和快速成长的行动,证明自己值得被选择。
(3)你还面试了哪些公司?
答:我目前确实在同步接触几家公司,主要集中互联网,岗位方向也和贵公司这个职位类似,都是围绕运维岗位核心技能展开的。不过相比之下,贵公司在各方面的特点,更符合我对职业发展的期待,所以我非常重视这次机会,也希望能有机会加入团队,和大家一起做事。
(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?
答:我会先冷静核实风险细节,确保判断基于具体法规条款或案例,避免误判。然后找合适时机单独和领导沟通,用数据说明风险的具体影响(比如可能的处罚、声誉损失),同时提出替代方案:“领导,我查了相关规定,目前的流程可能有合规漏洞,您看能不能调整某个环节,既规避风险又不耽误业务推进?” 若领导仍坚持,我会强调合规对公司长远的重要性,若涉及重大风险,会按公司制度向合规部门或更高层级反馈——不是质疑领导,而是作为团队一员,有责任守护公司的底线,这也是对团队和业务负责。
3.选择题 (1)以下哪个是合法的 Python 变量名?
A. 2var
B. _var
C. var@1
D. var-1
答: B,合法的 Python 变量名规则:由字母、数字、下划线组成,且首字符非数字; 不是 Python 关键字; 建议遵循小写 + 下划线的命名风格。
(2)表达式 True + 2 的结果是? A.True
B. 3
C. 2
D. TypeError
答:D
(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
答:D
(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 的动态类型特性指的是在定义变量时无需声明其数据类型,解释器会在运行时自动确定变量类型。而且,同一变量名可以在程序的不同位置被赋予不同类型的值。
例如:
a = 10 # 整数类型 a = "hello" # 字符串类型
(2)如何将字符串 "123" 转换为整数?如果字符串为 "12a3" 会发生什么?
答:
a="123" b=int(a)
如果字符串为 "12a3" 会b报错
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答: 动态类型语言的优点是代码编写为简洁,开发速度快,还能实现一些灵活的编程技巧;缺点是在运行时才会进行类型检查,可能会隐藏一些类型相关的错误。
静态类型语言的优点是在编译阶段就能发现类型错误,代码的可读性和可维护性较好,适合开发大型项目;缺点是需要编写更多的类型声明代码,开发效率相对较低。
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答: input () 函数的作用是获取用户输入的内容,并将其作为字符串返回;eval () 函数则会把输入的字符串当作 Python 表达式来执行,返回表达式的计算结果。
name=input("请输入你的名字:")#用于获取用户输入,获取为字符串 age=eval("10+8")#输出为结果18 print(age)#18
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
答: 比较==运算符是比较两个数值是否相等,is 运算符:检查 x 和 y 是否引用同一个对象(内存地址相同),而非值相等。
如果a与b比较大小,a与b的内存地址相等[-5-25],则两则输出都为true,反之,比较==运算符为true,is运算符为false
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答:
运算符 | 逻辑名称 | 示例 | 运算规则 |
---|---|---|---|
and | 逻辑与 | x and y | 当 x 和 y 都为 True 时返回 True,否则返回 False。 |
or | 逻辑或 | x or y | 当 x 或 y 中有一个为 True 时返回 True,仅当两者都为 False 时返回 False。 |
not | 逻辑非 | not x | 如果 x 为 True,则返回 False;如果 x 为 False,则返回 True。 |
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答:
a=int(input("请输入一个数字"))
如果用户输入不是数字则会报错
(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=5满足第一个if判断条件,则输出X 大于3 ,X=5满足第二个if判断条件,则输出X 大于4 ,X=5不满足第三个if判断条件,则不输出X 大于3
(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、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(x1,y1),B(x2,y2),C(x3,y3) a=( (x2 - x3) ** 2 + (y2 - y3) ** 2 ) ** 0.5 b=( (x1 - x3) ** 2 + (y1 - y3) ** 2 ) ** 0.5 c=( (x2 - x1) ** 2 + (y2 - y1) ** 2 ) ** 0.5 A=math.degrees(math.acos((a * a - b * b - c * c) / (-2 * b * c))) B=math.degrees(math.acos((b * b - a * a - c * c) / (-2 * a * c))) C=math.degrees(math.acos((c * c - b * b - a * a) / (-2 * a * b))) print(f"A={A:.2f}°") print(f"B={B:.2f}°") print(f"C={C:.2f}°")
在此写入你的代码
(10)编写代码,解2×2线程方
题目描述
如有一个2×2的线程方程组: ax+by=ecx+dy=f 你可以使用克莱姆法则解该线性方程: x=ed−bfad−bc,y=af−ecad−bc 其中 ad−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(" ")) #ax+by=ecx+dy=f 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={x:.1f}") print(f"y={y:.1f}")