1.技术面试题
(1)TCP与UDP的区别是什么?
**答:**TCP通过“确认包”等来进行通信的链接和断开,而UDP则不需要提前建立连接,直接发送数据包 。所以可靠性TCP要优于UDP。从数据传输方式来看TCP传输数据无边界还要接收方自行处理,而DUP每个数据包独立,方便接收。相比传输效率,TCP效率低,开销大,UDP效率高延迟低。还有就是TCP占用的资源大于UDP。
(2)DHCP和DNS的作用是什么?
**答:**DHCP(动态主机配置协议):自动分配IP地址及相关的网络配置参数 ,方便用户快速上网,以及方便企业动态管理IP。DNS(域名系统):通过解析用户可读的域名翻译出计算机可识别的IP地址,让用户访问所需网站更加方便,即使服务器IP更换也不影响用户使用。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答:/boot目录中存放着系统启动所需的核心文件。/var目录 存放日志文件(/log)缓存文件(/cache)临时文件(/tmp)等一些动态变化的数据。/usr目录中存放着库文件(/lib)应用程序(/bin,/sbin)文档(/share/doc)源代码(/src)适合作为挂载分区使用。
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
**答:**一、网关配置错误—排查步骤:检查网关配置,验证网关可行性
,通过修改/etc/netplan/*.yaml来配置新的网关。二、DNS配置错误—排查步骤:检查DNS配置,验证DNS服务器可达性,手动指定DNS测试,测试域名解析,通过 nmcli 修改。三、防火墙限制——排查步骤:检查防火墙状态临时关闭防火墙测试。四、外网接口故障—排查步骤:检查路由器管理界面,尝试重启路由器和调制解调器,登录网关执行ping8.8.8.8命令,验证是否外网连通。五、IP地址冲突—排查步骤:使用arp-scan扫描网段、确认IP唯一性。
2.HR面试题
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答: 分析:直属领导能力不如我,却可以当上领导说明其人际关系好,人脉资源更丰富,反而要更加接触。
回答:无论领导能力如何,我都会介于相应的尊重,我也始终认为在某些地方我的能力应该高于领导,才能为公司和领导创造更好的价值。
(2)你简历上的经历并不突出,我们为什么要选你?
答: 分析:面试官想看看我除简历上的,其他方面的能力
回答可以将我在大学和其他时候可以体现出我的与人交往能力和处理问题的能力的事情说一说。
(3)你还面试了哪些公司?
答: 分析:想看看我对未来方向的规划
回答:将自己面试的其他公司时所想从事的邻域,想面试官表达自己有坚定的目标,以及自己扎实的能力。
(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?
**答:**先了解清楚业务风险是因为领导的个人利益还是公司利益,若为个人利益则收集证据保证公司利益。若为公司利益则确保自己没有被牵扯其中。
3.选择题
(1)以下哪个是合法的 Python 变量名?
A. 2var
B. _var
C. var@1
D. var-1
答: D
(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")
答: A
(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. 无输出
答: C
(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的动态类型特征?举例说明。
答: 在定义变量时无需预先声明其数据类型,“想存啥存啥”
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答:
int ("123")
报错
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答: python开发速度快,代码更简洁,且灵活度高,适合写脚本。
java开发周期长,但代码更加可靠,性能更高。
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答: input():等待用户输入数据,并一字符串的形式返回。
eval():将传入的代码字符串当作代码来运行
num = int(input(""))
num += 1
print(num)
eval("print(num)")
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
答: ==是检查x与y的值是否相等 is则是是否引用同一个对象
当引用对象为300的整数时x==y结果为True,x is y则结果为false。
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答: not>and>or
x and y 当x和y同时为True时返回True,否则返回false
x or y 当x或y有一个为True时返回True,否则放回false
not 当x为True,则返回 False;如果 x 为 False,则返回 True
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答: 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条件所以都会执行对应的语句块
(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 = ((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
cos_A = (b ** 2 + c ** 2 - a ** 2) / (2 * b * c)
cos_B = (a ** 2 + c ** 2 - b ** 2) / (2 * a * c)
cos_C = (a ** 2 + b ** 2 - c ** 2) / (2 * a * b)
num12 = math.acos(cos_A)
num13 = math.degrees(num12)
print(f"A(角度) = {num13}")
num22 = math.acos(cos_B)
num23 = math.degrees(num22)
print(f"B(角度) = {num23}")
num32 = math.acos(cos_C)
num33 = math.degrees(num32)
print(f"C(角度) = {num33}")
(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(" "))
x = 0
y = 0
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}")