1.技术面试题
(1)TCP与UDP的区别是什么?
答: TCP建立通信前有三次握手,结束通信后有四次挥手,数据传输的可靠性高但效率较低;UDP不需要三次握手就可传输数据,数据传输完成后也不需要四次挥手,数据传输的可靠性低但效率高
(2)DHCP和DNS的作用是什么?
答: DHCP的作用是自动为处于网络中的设备自动分配ip地址,避免手动分配所出现的问题;DNS的作用是将利于人类记忆的网站域名转换为计算机可识别的IP地址
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答: linux采用的是层级式目录结构,所有的文件和目录都挂在根目录/下,各个目录有各不相同的功能
/boot目录的作用是启动相关文件(内核,引导加载程序)
/var的作用是管理可变数据(日志、缓存、邮件队列)
/usr的作用是管理用户程序和文件(只读或很少修改)
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
**答:**1.网关配置错误:默认网关设置错误、网关设备故障或网关不可达
排查方法: 1.检查默认网关配置 ip route show
2.ping 网关测试连通性 ping -c 网关
若ping不通,检查网关设备接口是否正常工作(比如说路由器接口有没有松动,设备是否断电)
2.DNS 解析故障:DNS 服务器配置错误、DNS 服务器不可用或域名被污染。
排查方法:
1.检查 DNS 配置文件: cat /etc/resolv.conf
2.测试 DNS 服务器连通性:ping -c DNS服务器IP
3.用ip访问外网:ping -c 8.8.8.8
若ip能访问,说明不是DNS的问题
3.网络接口或驱动问题:网卡物理连接松动、驱动损坏或网卡硬件故障。
排查方法:
1.检查网卡状态:ip link show
2.确认物理接口是否接入状态良好(有没有松动等问题),网卡指示灯是否闪烁
3.重启网络服务或网卡:
sudo systemctl restart network-manager(重启网络服务)
sudo systemctl restart network(重启网卡)
4.更新网卡驱动:sudo apt update && sudo apt upgrade
4.IP 地址冲突或 DHCP 问题:IP 地址与内网其他设备冲突、DHCP 租约过期或分配失败
检查方法:
1.检查 IP 地址和 MAC 地址:ip addr show
2.释放并重新获取 IP(DHCP 场景):
sudo dhclient -r(释放当前ip)
sudo dhclient(重新获取ip)
5.手动配置 IP 测试
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
5.防火墙或安全组限制:系统防火墙(如 iptables、firewalld)或外部安全组阻止外网访问
检查方法:
1.检查系统防火墙状态:sudo ufw status
2.临时关闭防火墙测试:sudo ufw disabl
若关闭后能访问外网,说明防火墙规则有误,需放行相关端口(如 TCP/UDP 53 用于 DNS)
3.检查云服务器安全组规则:若在云环境中,登录控制台检查安全组是否允许出站流量
2.HR面试题
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答: 我认为尽管在工作能力上领导不如我,领导依然有他的过人之处.在工作中,我会积极与领导沟通,服从领导的指示,将工作和团队放在首位,为公司尽上自己的力量
(2)你简历上的经历并不突出,我们为什么要选你?
**答:**虽然我的经历并没有那么出彩,但是我对于贵公司的这份职业有着很高的期冀与热情.假若我能拿到贵公司的offer,我会在工作的过程中虚心向同事学习, 服从上级领导的安排,努力成为对团队,对公司有贡献的员工
(3)你还面试了哪些公司?
答: 在面试贵公司之前,我还面试了xx公司和xx公司等,但上述公司的薪资待遇等不是让我很满意,而此次贵公司的面试使我得到了一个满意的答案
(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的动态类型特性指的是变量类型在运行时自动确定,无需提前声明,且同一变量可以在不同时刻指向不同类型的对象。
举例:
x=10086 (此时的x是整数)
x=“hello” (此时的x是字符串)
x=[1,3,5,7,9] (此时的x是列表)
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答: 可以使用int这个函数将字符串转化为整数,如果字符串了多了一个a,那会转换失败
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答:
动态类型语言:
优点:开发效率高,灵活性强,代码简洁
缺点:代码可维护性低,容错率低,发现问题难以解决
静态类型语言:
优点:可提前发现错误,代码可维护性高,性能更高
缺点:开发效率低,灵活性差,学习过程难
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答:
两个函数的区别在于input函数只负责接收输入内容,不负责解析输入的python语法,eval函数会解析并执行输入的python的语法函数
举例:
input(“1+2+3”) 输出结果为1+2+3
eval(“1+2+3”) 输出结果为6
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
答:
两个运算符的区别在于比较对象的不同,==运算符比的是值是否相等,is运算符比的是是否为同一对象
举例:
a=[1,2,3]
b=[1,2,3]
print(a==b) 结果为true print(a is b) 结果为false
a=[1,2,3]
b=a
print(a==b) 结果为false print(a is b) 结果为true
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答: and的运算规则
1.当所有操作数的 “真值” 均为 True 时,返回最后一个操作数的真值;
2.只要有一个操作数的 “真值” 为 False,返回第一个为 False 的操作数的真值;
print(5 and 10) # 10(5和10均为真,返回最后一个值)
print(0 and 10) # 0(0为假,返回第一个假值)
print(“hello” and “”) # “”(""为假,返回第一个假值)
or的运算规则:
只要有一个操作数的 “真值” 为 True,返回第一个为 True 的操作数的真值;
所有操作数的 “真值” 均为 False 时,返回最后一个操作数的真值;
print(0 or 10) # 10(0为假,10为真,返回第一个真值)
print(“hello” or 10) # “hello”(第一个为真,直接返回,不计算第二个)
print(“” or []) # [](全假,返回最后一个假值)
not的运算规则:
对单个操作数的 “真值” 取反,返回 True 或 False;
若操作数为 “真”(非零、非空等),返回 False;若为 “假”(0、空、None 等),返回 True。
print(not 0) # True(0为假,取反为真)
print(not 5) # False(5为真,取反为假)
print(not “”) # True(空字符串为假,取反为真)
print(not [1, 2]) # False(非空列表为真,取反为假)
print(not None) # True(None为假,取反为真)
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答: input函数将用户输入的数字(字符串)转换为整数的方法:
user_input = input(“数字”)
num = int(user_input)
print(f"输入的数字是:{num},类型为:{type(num)}")
如果用户输入的不是数字,会发生报错
(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,符合第一个条件 x>3,执行并进入下一个条件
第二个条件为x>4,符合,执行并进入下一个条件
第三个条件为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=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# 输入坐标:1 2 3 3 2 1
x1, y1, x2, y2, x3, y3 = map(float, input().split())# 计算三条边的长度
a = math.hypot(x2 - x3, y2 - y3) # 边 a 对应顶点 (1, 2) 的对边
b = math.hypot(x1 - x3, y1 - y3) # 边 b 对应顶点 (3, 3) 的对边
c = math.hypot(x1 - x2, y1 - y2) # 边 c 对应顶点 (2, 1) 的对边# 计算三个角的弧度值
A_rad = math.acos((a*a - b*b - c*c) / (-2 * b * c))
B_rad = math.acos((b*b - a*a - c*c) / (-2 * a * c))
C_rad = math.acos((c*c - b*b - a*a) / (-2 * a * b))# 将弧度转换为角度
A_deg = math.degrees(A_rad)
B_deg = math.degrees(B_rad)
C_deg = math.degrees(C_rad)# 输出结果,保留两位小数
print("{0:.2f}".format(A_deg))
print("{0:.2f}".format(B_deg))
print("{0:.2f}".format(C_deg))**(10)编写代码,解2×2线程方程****题目描述**如有一个2×2的线程方程组:
$$
ax+by=e \\
cx+dy=f
$$
你可以使用克莱姆法则解该线性方程:
$$
x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-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
>
> 输出:
>
> 无解**答:**```python
#在此写入你的代码
# 读取输入的六个数据
a, b, c, d, e, f = map(float, input().split())# 计算判别式
discriminant = a * d - b * cif discriminant == 0:print("无解")
else:# 计算x和y的值x = (e * d - b * f) / discriminanty = (a * f - e * c) / discriminant# 保留一位小数输出print("{0:.1f}".format(x))print("{0:.1f}".format(y))