【python】

1.技术面试题

(1)TCP与UDP的区别是什么?

答:
TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,主要区别在于连接方式和可靠性。TCP是面向连接的协议,传输数据前需建立连接,通过三次握手确保连接可靠,传输过程中有确认、重传和顺序控制机制,保证数据完整、按序到达,适用于网页浏览、文件传输等对可靠性要求高的场景。UDP是无连接的协议,无需建立连接即可发送数据,不保证数据可靠传输,可能丢包或乱序,但传输速度快、延迟低,适用于视频直播、语音通话等对实时性要求高的应用。

(2)DHCP和DNS的作用是什么?

答:
DHCP(Dynamic Host Configuration Protocol)
DHCP用于自动为网络中的设备分配IP地址及其他网络配置信息(如子网掩码、默认网关、DNS服务器等)。当设备连接到网络时,DHCP服务器会自动分配一个可用的IP地址,避免手动配置,提高管理效率,减少IP冲突。
DNS(Domain Name System)
DNS用于将人类易记的域名(如www.example.com)解析为计算机可识别的IP地址(如192.0.2.1)。当用户在浏览器中输入域名时,DNS服务器会查询对应的IP地址,帮助用户快速访问目标网站,简化网络访问过程

(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?

答:
Linux 文件系统采用树形目录结构,根目录为 /,所有文件和目录都挂载在根目录下。
/boot:存放系统启动所需的文件.。 /var:存放经常变化的文件 。 /usr:存放用户安装的软件和应用程序,包括系统用户共享的可执行文件、库文件、文档等。

(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。

答:

  1. DNS 解析故障
    可能原因:DNS 服务器配置错误或 DNS 服务异常。
    排查步骤:
    检查 /etc/resolv.conf 文件,确认 DNS 服务器地址是否正确。
    使用 nslookup 或 dig 命令测试域名解析是否正常。
    尝试使用公共 DNS进行测试。
  2. 默认网关配置错误
    可能原因:默认网关配置错误或网关设备故障。
    排查步骤:
    使用 ip route 或 route -n 命令查看默认网关是否正确。
    使用 ping 命令测试网关 IP 是否可达。
    检查网关设备是否正常运行。
  3. 防火墙或安全组限制
    可能原因:本地防火墙或云安全组规则阻止了外网访问。
    排查步骤:
    检查 iptables 或 firewalld 规则,确认是否有限制外网访问的规则。
    临时关闭防火墙进行测试。
  4. 网络接口配置错误
    可能原因:网络接口配置错误,如 IP 地址、子网掩码等。
    排查步骤:
    使用 ip addr 或 ifconfig 命令查看网络接口配置。
    检查网络接口是否启用,IP 地址和子网掩码是否正确。
    重启网络服务。
  5. 网络服务异常
    可能原因:网络服务(如 NetworkManager 或 network 服务)异常。
    排查步骤:
    检查网络服务状态和重启网络服务

2.HR面试题

(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?

答: 若成功入职后发现直属领导能力远不如我,我会以理性和尊重为前提处理这种关系。首先,我会提醒自己,领导能坐到这个位置,必然有其过人之处,可能是在行业资源积累、团队协调或是公司战略理解上有我不具备的优势,我会先放下偏见,主动去发现和学习这些长处。​
在工作中,我会坚守 “补位不越位” 的原则,聚焦团队目标而非个人得失。当有不同想法时,我不会直接否定领导的决策,而是通过准备详实的数据、具体的案例和可行的方案,在合适的时机以请教的口吻提出建议,让领导感受到我的诚意是为了工作更好地推进。​
如果遇到意见分歧,我会先执行领导决策中合理的部分,在执行过程中留意可能出现的问题,并收集相关信息。在项目复盘时,再结合实际情况,以 “如果下次遇到类似情况,或许可以尝试这样做” 的委婉方式提出优化思路。同时,我会主动承担更多具体工作,用实际成果证明自己的能力,让领导逐渐认可我的专业度,从而建立起相互信任的协作关系,共同为团队业绩努力。

(2)你简历上的经历并不突出,我们为什么要选你?

答: 虽然我的简历经历可能并不突出,但这并不代表我没有胜任岗位的能力。在过往的学习过程中,我积累了许多实用且高效的工作方法和经验。比如在学校参与一个比赛时,团队曾陷入流程混乱的困境,我深入调研,梳理出 12 个流程卡点,并提出了切实可行的优化方案,使项目效率提升了 30%。​
我具备很强的适应性和学习能力,能够快速熟悉新的工作环境和业务内容。在学习过程中,我用较短的时间就熟练掌握了新系统的操作方法,并主动帮助同学解决使用中遇到的问题,得到了老师和同学的一致好评。此外,我对待工作认真负责,始终以结果为导向,只要是我接手的任务,都会尽最大努力做到最好。我相信这些品质和能力能够让我在贵司的岗位上发光发热,为公司创造价值。

(3)你还面试了哪些公司?

答: 目前我还面试了三家公司,分别是同行业的 A 公司、B 公司以及一家跨领域的 C 公司。A 公司在行业内以创新能力著称,B 公司则在市场渠道方面有很大的优势,C 公司虽然行业不同,但岗位的工作内容与我目前所求职的岗位有一定的相似性。​
不过,经过对比,我发现贵司在多个方面都更符合我的职业期望。贵司在行业内的口碑和影响力是有目共睹的,尤其是在核心技术的研发和应用上,一直处于领先地位,这让我非常向往。而且贵司的企业文化注重员工的成长和发展,为员工提供了广阔的晋升空间和丰富的培训资源,这与我希望不断提升自己的职业规划不谋而合。另外,这个岗位的工作内容与我之前的工作经验和技能非常匹配,我有信心能够快速上手并做出成绩,所以我对贵司的这个岗位抱有极大的期待。

(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. 运行时错误

答: D

4.问答题

(1)什么是 Python 的动态类型特性?举例说明。

答: Python 是动态类型语言,变量的类型在运行时根据赋值自动确定,无需提前声明
x = 10 # x 是整数
x = “hello” # x 变为字符串

(2)如何将字符串 “123” 转换为整数?如果字符串为 “12a3” 会发生什么?

答: 使用 int() 函数可以将字符串转换为整数:int(“123”)
如果字符串中包含非数字字符(如 “12a3”),会抛出 ValueError 异常.

(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。

答:
动态类型:
优点 :编写灵活,开发效率高,适合快速开发和原型设计
缺点 : 运行时可能出错,调试困难,性能较低
静态类型:
优点:类型安全,编译时检查错误,运行效率高
缺点:代码冗长,开发效率低,灵活性差

(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。

答:
input() 用于获取用户输入,返回字符串类型。
eval() 用于执行字符串表达式,返回表达式的结果。
使用场景:
input() 用于交互式输入。
eval() 用于动态执行表达式。

(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。

答:
== 比较的是值是否相等。
is 比较的是内存地址是否相同(即是否是同一个对象)。
例:
x = 1000
y = 1000
print(x == y) #True,值相同
print(x is y) # False,内存地址不同

(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。

答:
and:两边都为真才为真。
or:至少一边为真即为真。
not:取反。

(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?

答:
使用 int() 函数将输入转换为整数
如果用户输入的不是数字,会抛出 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
第一个条件 x > 3 成立,输出 “X 大于3”
第二个条件 x > 4 成立,输出 “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((aabbcc)/(2bc))B=acos((bbaacc)/(2ac))C=acos((ccbbaa)/(2ab))
其中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 = math.acos((b**2 + c**2 - a**2) / (2 * b * c))
B = math.acos((a**2 + c**2 - b**2) / (2 * a * c))
C = math.acos((a**2 + b**2 - c**2) / (2 * a * b))

# 转换为角度并输出
print(f"{math.degrees(A):.2f}")
print(f"{math.degrees(B):.2f}")
print(f"{math.degrees(C):.2f}")

(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=adbcedbf,y=adbcafec
其中 ad−bcad-bcadbc 为判别式,如果为零则输出无解

输入输出描述

输入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())
det = a * d - b * c
if det == 0:
    print("无解")
else:
    # 计算 x 和 y
    x = (e * d - b * f) / det
    y = (a * f - e * c) / det
    print(f"{x:.1f}")
    print(f"{y:.1f}")

你可能感兴趣的:(python,面试,职场和发展)