1.技术面试题
(1)TCP与UDP的区别是什么?
**答:**TCP的名称叫传输控制协议,它需要进行面向链接,也就是我们熟知的“三次握手”和“四次挥手”,它的传输具有较高的可靠性,通过确认机制,重传机制,流量控制保证传输数据安全到达别人手中,但它效率比较底下一般用于文件传输或邮件的发送。
UDP名称叫用户数据报协议,它不需要进行连接,只管发送数据。因此它的可靠性比起TCP来说会差很多,不过它的开销很小传输速度很快一般用于娱乐领域较多。
(2)DHCP和DNS的作用是什么?
答: DHCP名称为动态主机配置协议,它的主要作用为自动为网络中的设备分配ip地址及其他网络配置信息。
DNS名称为域名系统,它的作用是将易记的域名如(www.baidu.com)转换为计算机能识别的ip地址,便于人们记忆。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答: Linux文件系统的目录结构是树状结构,以一个大的文件下划出多个子文件。/boot目录主要存放关于系统启动的文件负责引导操作系统,从而开启整个系统的。 /var目录用于存放经常变化的文件,如日志,系统的一般性消息,邮件的队列文件等,负责文件的收发。 /usr目录用于存放系统安装的软件和共享的文件,用于软件的集中保存。
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
答: 故障1:DNS配置问题,排查:查看DNS配置文件,检查是否存在有效的DNS服务器,同时还可以测试其他域名是否能正常通讯。 故障2:网关配置错误,排查:检查网关配置,并使用ping命令去查找具体是哪里出现问题以便做出修改。 故障3:防火墙限制,排查:查看防火墙的状态保证端口正确,或者临时关闭防火墙再进行测试。故障4:路由问题,排查:ping多个外网,若网管可达但目标失败问题可能出现在网关之后的网络上。 故障5:接口或路由表配置错误,排查:使用指令查看所有网络接口及分配的ip地址,其次核对个接口的优先级确保没有出现差错。
2.HR面试题
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答: 在我看来,与领导共事本质上是一起联手为贵公司谋取更大的利益,我会以自身能力为根基,以主动和热情为纽带,从团队目标为共同利益,在尊重组织秩序的前提下推动事务的进展,因为成熟的职场人能在任何变量当中获取到更高的成长机会。
(2)你简历上的经历并不突出,我们为什么要选你?
答: 我虽然在简历上的经历并不突出,但我会主动请教自己没面对过的陌生领域,争取在一周内独立跟上工作进度,且我认为以自身的抗压能力和与部门协作能力与岗位需求相适配,如果能获得这次机会,我会用结果证明自己的价值。
(3)你还面试了哪些公司?
**答:**目前为止我面试的几家公司都集中在咱们行业的相关领域内,岗位方向与贵公司的要求比较相符合,能够让我发挥出专业特长。但相比较岗位方向,贵公司在团队协作氛围上特别符合我对理想工作的期望,也是我目前最看重的机会。
(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?
答: 首先我会去核实是否真的存在风险,然后我会选取恰当的时机私底下与领导进行沟通并提出可能存在的风险点以及实行后可能带来的后果,并且在最后再请教领导是否有更优解,让领导感受到我维护公司利益的初衷,若沟通无果,且业务确实存在合规风险时,我会按照公司制度流程向更高领导人反映,确保风险得到重视,避免埋下更大的隐患。
3.选择题
(1)以下哪个是合法的 Python 变量名?
A. 2var
B. _var
C. var@1
D. var-1
**答:**选B 解析:A 数字不能作为变量名的开头, C 存在特殊符号@, D 存在特殊符号-。
(2)表达式 True + 2
的结果是?
A.True
B. 3
C. 2
D. TypeError
答: B 解析:True在运算当中等于1,及式子可看成1+2及为3.
(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 解析:int为python的内置函数,可以将字符串变成整数,默认以10进制,最大为36进制,最小为2进制。
(5)执行 print("Hello", "World", sep='-', end='!')
后,输出结果是?
A .Hello World
B. Hello-World
C. Hello-World!
D. Hello World!
答: C 解析:sep为间隔符,end字符串结尾。
(6)以下哪个运算符用于判断两个对象是否是同一个对象(内存地址相同)?
A. ==
B. !=
C. is
D. in
**答:**C 解析:A(等于) 检查 x 和 y 的值是否相等,返回布尔值 True 或 False, B(不等于) 检查 x 和 y 的值是否不相等,返回布尔值 True 或 False
C(身份运算符)判断两个对象是否内存地址相同, D(成员运算符)检查x是否为y的成员。
(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 解析:式子中有个f,表示字符串格式化输出,可将变量放入到占位符中,但变量需要放在{}里。
(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
条件错误
答: D
(10)以下代码的输出结果是?
x = 0
if x:
print("True")
else:
print("False")
A. True
B. False
C. 语法错误
D. 无输出
**答:**B 解析:布尔型(bool)中True表示数字1,False表示数字0
(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 解析:and条件是要双方都满足,而or是有一方满足就行。
(12)以下代码的输出结果是?
A = 5
B = 10
if A > 3 or B / 0 > 0:
print("A")
else:
print("B")
A. A
B. B
C. 语法错误
D. 运行时错误
答: A 解析:or指双方有一方满足条件后就可输出
4.问答题
(1)什么是 Python 的动态类型特性?举例说明。
答: Python 的动态类型特性是指在编程时,我们不用提前声明变量的类型,系统会在程序运行期间自动确定变量类型,如a=10为整数类型,而a="10"则是字符串。
(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?
答: 用int函数来将字符串转换成整数,如x=“123” print(int(x)),若用同样的方法来转换"12a3"则会报错,因为int默认为以十进制转换。
**(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答: 动态类型优点:1.代码简洁灵活 2.快速迭代开发 缺点:1.运行时类型错误 2.代码可读性降低
静态类型优点:1.编译时类型安全 2.代码可读性高 缺点:1.开发效率较低 2.灵活性不足 3.代码量大
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答: input是让你可以在程序中输入东西的函数,且以字符串的形式返回,一般用于获取用户的文本输入。eval是执行eval()中传入的代码字符串,一般用于动态执行代码。
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
**答:**区别: ==比较两个数的值是否相等,is是比较两个东西的内存地址是否相等。当两者的值相等但对象却不同时它们得出得结果就不同。
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答: and为两个条件都需达成,or为两个条件选一个达成。not这是将单个条件取反。
(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 解析:由于代码是逐级运行的,当第一个条件符合时程序会直接输出结果,不会再往下运行。
(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 = math.sqrt((x2 - x3) ** 2 + (y2 - y3) ** 2)
b = math.sqrt((x1 - x3) ** 2 + (y1 - y3) ** 2)
c = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
# 使用余弦定理计算三个角的弧度
A_rad = math.acos((a**2 - b**2 - c**2) / (-2 * b * c))
B_rad = math.acos((b**2 - a**2 - c**2) / (-2 * a * c))
C_rad = math.acos((c**2 - b**2 - a**2) / (-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 * c
# 判断解的情况
if discriminant == 0:
print("无解")
else:
# 计算并输出解
x = (e * d - b * f) / discriminant
y = (a * f - e * c) / discriminant
print("{0:.1f}".format(x))
print("{0:.1f}".format(y))