Python 【技术面试题和HR面试题】➕ 动态类型、运算符、输入处理及算法编程问答

发布于:2025-07-12 ⋅ 阅读:(16) ⋅ 点赞:(0)

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 -nip route 查看路由表,确认是否存在正确的默认网关(指向外网出口的网关地址)。
  • 解决:若网关缺失或错误,用 route add default gw <正确网关IP> 临时添加。

DNS 服务器配置异常

  • 排查:查看 /etc/resolv.conf 中是否配置了有效的 DNS 服务器(如运营商或公共 DNS),若为空或错误则无法解析域名。
  • 解决:临时添加 nameserver 8.8.8.8(公共 DNS)到该文件测试。

防火墙规则阻止外网访问

  • 排查:通过 iptables -Lfirewalld-cmd --list-all 检查是否有规则禁止出站连接(如拒绝访问外网端口或 IP 段)。
  • 解决:临时关闭防火墙(systemctl stop firewalldiptables -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 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
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) /i
     y=(a * f - e * c) /i
     e = a * x + b * y
     f = c * x + d* y
     print (f"{x:.1f}")
     print (f"{y:.1f}")

网站公告

今日签到

点亮在社区的每一天
去签到