1.技术面试题
(1)TCP与UDP的区别是什么?
答:
①连接性:TCP 面向连接,3次握手及4次挥手,建立端到端的虚链路像;UDP 无连接,直接发送,无需预先建立连接 。
②传输速度:TCP 因要保障可靠等,流程多,速度慢;UDP 简单直接,速度快 。
③传输可靠性:TCP 有确认 排序 重传 流控(窗口滑动机制),可靠传输;UDP 不管数据是否到达、有无差错,可靠性低 。
④首部开销:TCP 首部 20 字节(还有可选部分,通常 20 );UDP 首部 8 字节,TCP 开销更大 。
(2)DHCP和DNS的作用是什么?
答:
①**DHCP的作用:**DHCP 主要负责为网络中的设备自动分配网络配置参数。在一个局域网内,当新设备,接入网络时,无需手动去设置复杂的 IP 地址、子网掩码、默认网关以及 DNS 服务器地址等信息,DHCP 服务器会自动为其分配。还能让设备能快速、便捷地获取到可用的网络参数,正常接入网络,同时还通过租约机制对 IP 地址进行动态管理,提升 IP 地址的利用率。
②**DNS的作用:**DNS 主要功能是进行域名解析 将人们易于记忆的域名转换为计算机可识别和处理的 IP 地址; 还能实现负载均衡,将用户对网站的访问请求合理分配到不同的服务器上,避免单个服务器负载过重,保障网站的正常访问和服务质量。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答:
①**/boot
**:存放系统启动必需的核心文件,包括 Linux 内核、初始化内存盘、启动引导程序(如 GRUB)的配置文件等,是系统正常启动的基础。
②**/var
**:用于存储动态变化的文件,内容会随系统运行不断更新,比如日志文件(/var/log
)、邮件数据、缓存文件以及服务运行时产生的临时数据等。
③**/usr
**:存放系统级的应用程序、库文件、文档等,包含非启动必需的用户命令、系统管理命令、应用依赖的库文件以及共享数据(如手册页)等,是系统中较庞大的目录之一。
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
答:
①默认网关配置错误
- 排查:通过
route -n
或ip route
查看路由表,确认是否存在正确的默认网关(指向外网出口的网关地址)。 - 解决:若网关缺失或错误,用
route add default gw <正确网关IP>
临时添加。
②DNS 服务器配置异常
- 排查:查看
/etc/resolv.conf
中是否配置了有效的 DNS 服务器(如运营商或公共 DNS),若为空或错误则无法解析域名。 - 解决:临时添加
nameserver 8.8.8.8
(公共 DNS)到该文件测试。
③防火墙规则阻止外网访问
- 排查:通过
iptables -L
或firewalld-cmd --list-all
检查是否有规则禁止出站连接(如拒绝访问外网端口或 IP 段)。 - 解决:临时关闭防火墙(
systemctl stop firewalld
或iptables -F
)验证是否为规则问题。
④外网线路或上游设备故障
- 排查:尝试
ping <网关IP>
确认与网关连通性,若不通可能是线路或网关设备(如路由器)故障。 - 解决:检查网线连接、重启上游路由器,或联系网络管理员确认外网链路状态。
⑤IP 地址或子网掩码配置错误
- 排查:通过
ip addr
查看本机 IP 是否在正确网段(与网关同网段),子网掩码是否匹配(如常见的 255.255.255.0)。 - 解决:若手动配置错误,重新设置正确的 IP 和子网掩码;若为 DHCP 分配,用
dhclient -r && dhclient
重新获取。
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
答: 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
答: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. 运行时错误
答:D
4.问答题
(1)什么是 Python 的动态类型特性?举例说明。
答: 不用提前规定变量是啥类型,赋值成啥它就是啥类型,而且还能随时变。
eg:
a=5#整数
a="你好"#字符串
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答:
int("123")
若用int("12a3")
会出现报错,报错的内容为ValueError: invalid literal for int() with base 10: ‘12a3’
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答:
Python:编码灵活,开发快;隐患多,问题在运行时才暴露,容易翻车
Java:代码的结构清晰,类型明确;代码麻烦,迭代慢,开发速度慢
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答:区别:
input():获取用户输入的原始字符串,不管内容。直接存为字符串类型。
eval():把传入的字符串当作 Python 代码执行,可计算表达式、还原数据结构(如列表、字典等 )。
应用场景:
input( ):做一个简单的自我介绍程序,让用户输入自己的年龄数值,age_str=input("请输入你的年龄:")
,运行以后用户输入18,那么age_str存的就是18
eval( ):想让用户输入年龄子字符串直接参与数学计算,eval(input("请输入你的年龄:") )
,用户输入18,age就变成整数18.
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
答:
区别:==运算符是检查两者的值是否相等,is运算符是检查两者引用的是否为同一对象,而非值相同。
eg:
a=200
b=200
print(a==b)#True
a=200
b=200
print(a is b)#False
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答:
运算规则
and:有假则假 print(5>3 and 4>5)#Flase
or:有真则真 print(5>3 or 4>5)#True
not:真假相反 print(not 3 > 2)#Flase
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答: 用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
原因
x = 5
,第一个if x > 3
,5 大于 3,条件成立,执行print("X大于3")
。
第二个if x > 4
,5 大于 4,条件成立,执行print("X大于4")
。
第三个if x > 5
,5 不大于 5,条件不成立,不执行print("X大于5")
。
(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 mathx1,y1,x2,y2,x3,y3=map(float,input().split(" "))
a=((x1-x2)**2+(y1-y2)**2)**0.5
b=((x1-x3)**2+(y1-y3)**2)**0.5
c=((x2-x3)**2+(y2-y3)**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:.2f}")
print(f"{B:.2f}")
print(f"{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())
i = a*d- b*c
if i==0:print("无解")
else:x = (e * d- b * f) /iy=(a * f - e * c) /ie = a * x + b * yf = c * x + d* yprint (f"{x:.1f}")print (f"{y:.1f}")