1.技术面试题
(1)TCP与UDP的区别是什么?
**答 TCP是在传输层面向连接的可靠协议。在完成传输层的基本工作的同时,还需要保证数据的完整性,三次握手四次挥手建立端到端的虚拟链路。特点是:1、面向连接 2、可靠传输 3、控流等。
UDP是传输层上非面向连接的不可靠协议,仅完成传输层的基本工作。特点是 1、简单 2、无连接 3、低开销 4、尽力传输等。
(2)DHCP和DNS的作用是什么?
答:DHCP 全称是动态主机配置协议(Dynamic Host Configuration Protocol),是一种网络协议,主要作用是自动为网络中的设备分配IP地址及其他网络配置信息
作用:
1、 自动分配IP地址,避免手动设置的繁琐和IP冲突问题。
2、统一管理网络中的IP资源,提高网络配置效率。
3、当设备离开网络后,自动回收IP地址,供其他设备使用。
DNS 即 Domain Name System,中文名为域名系统,是互联网的一项关键基础服务,用于将人类易读的域名,转换为计算机能够理解和使用的 IP 地址
作用:
-
地址翻译:将易记的域名转换为计算机能识别的 IP 地址,方便用户访问网络资源。
-
负载均衡:依据用户位置、网络状况等,把请求分配到不同服务器,提升访问效率和服务质量。
-
服务定位:帮助网络应用定位对应的服务器,如邮件系统通过 DNS 找到邮件服务器。
(3)简述 Linux 文件系统的目录结构,其中/boot、/var、/usr目录的作用分别是什么?
答:
-
/boot 目录:存放与系统启动相关的文件,包括内核文件(如 vmlinuz)以及启动引导加载程序(如 GRUB )的配置文件和镜像文件等。当计算机启动时,引导加载程序会从该目录读取必要的文件来启动操作系统内核。如果 /boot 目录损坏,系统可能无法正常启动,一般不要乱动!!!
-
/var 目录:用于存放运行时会改变的数据,是一个动态数据目录。比如,/var/log 目录存储系统日志文件,通过这些日志可以了解系统的运行状态、故障信息等。
-
/usr 目录:用于存放用户应用程序和共享文件,类似于 Windows 系统中的 Program Files 目录。它包含了大量的系统自带软件、库文件以及用户安装的非系统关键应用程序。其中,/usr/bin 目录存放用户可执行程序,/usr/share 目录保存共享数据,如帮助文档、图标等。
(4)Linux系统突然无法访问外网,但内网通信正常。请列出至少 5 个可能的故障点及排查步骤。
答:1. 网络接口状态异常
-
排查步骤
-
使用
ifconfig
检查网卡是否正常工作。 -
用
ping 127.0.0.1
测试本地回环接口。 -
若网卡 DOWN,尝试重启网络服务(
systemctl restart NetworkManager
)。
-
2. 网关配置错误或不可达
-
排查步骤
-
检查默认网关设置:
ip route show
或route -n
。 -
测试网关连通性:使用 ping 命令
-
若不通,检查路由器状态或修改网关配置(
ip route add default via <gateway_ip>
)。
3. DNS 解析故障
-
排查步骤
-
尝试直接 ping IP 地址(如
ping 8.8.8.8
),若成功则为 DNS 问题。 -
临时修改 DNS 服务器测试:
nameserver 8.8.8.8
。
-
4. 防火墙规则限制
-
排查步骤
-
检查防火墙状态:
systemctl status firewalld/iptables
。 -
临时关闭防火墙测试:
systemctl stop firewalld
(注意安全风险)。 -
若关闭后正常,调整防火墙规则允许外网访问(如开放 80/443 端口)。
-
5. DHCP 租约过期或 IP 冲突
-
排查步骤
-
释放并重新获取 IP 地址
-
检查局域网内是否有 IP 地址冲突(使用
arp-scan
工具)
-
-
2.HR面试题
(1)假如你成功入职,却发现直属领导能力远不如你,你会如何与他共事?
答:思考:当发现直属领导能力远不如自己时,需要跳出“能力高低”的单一评判框架,领导问这个问题,核心是看三点:
-
你是否懂职场规则,尊重其权责;
-
你能否控制情绪,用协作而非对抗解决问题;
-
你是否以结果为重,能补位不越位。
本质是在测你的职场成熟度和团队适配性。
回答:我理解职场中每个人的角色价值不同,领导在资源协调、方向把控上有我需要学习的地方。如果真遇到这种情况,我会聚焦目标,多做专业细节的落地,提前给您提供清晰的方案和建议,帮您减轻决策压力;同时多向您请教跨部门协作、把握。
(2)你简历上的经历并不突出,我们为什么要选你?
答:思考:
-
你对自身价值的认知是否清晰——能否跳出“经历不突出”的表面劣势,找到与岗位匹配的独特优势(如技能、态度、潜力等)。
-
你对岗位的理解是否到位——是否能证明自己的特质(哪怕是“学习能力强”“抗压性高”)正是团队当前需要的,而非泛泛而谈。
背后藏着的潜台词是:“我们看到了你的短板,现在需要你给一个‘说服我们忽略短板、选择你’的理由”,考验的是你的应变能力和自我推销的精准度。
回答:我理解简历上的经历可能不算亮眼,但我一直很关注咱们这个岗位的需求——比如您提到的XX技能(结合岗位要求说1-2个),其实我在过往项目里通过XX方式(举具体小事例,哪怕是实习/兼职)积累了实操经验,虽然规模不大,但能快速上手;另外,我特别在意团队协作中的执行力,比如之前XX事(简单说一个体现责任心/学习快的例子),这也是我觉得能跟上团队节奏的地方。
(3)你还面试了哪些公司?
答: 思考:hr问这个问题一方面判断你的求职目标是否明确,另一方面 评估你的市场认可度及预判你入职的可能性。
回答:面试了两家同行业的头部公司,岗位和现在聊的 [岗位名称] 类似,主要是想多了解不同团队的业务侧重点。不过贵公司在 [公司优势,如某业务赛道 / 企业文化] 上的特点,其实更符合我职业规划的方向,所以也很期待能有进一步合作的可能。
(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?
答: 思考:hr问这个问题主要考察三个维度;
-
底线意识:是否有合规红线不可碰的原则性;
-
沟通智慧:能否在坚持原则的同时,避免激化矛盾(如硬刚领导);
-
责任担当:是否能主动推动问题解决,而非被动服从或逃避
回答:坚持合规底线,先私下向领导客观说明风险并附依据,同时提出替代方案;若领导仍坚持,视风险等级,按公司流程反馈给合规部门或上级,必要时坚守法规底线等内容,
3.选择题
(1)以下哪个是合法的 Python 变量名?
A. 2var
B. _var
C. var@1
D. var-1
答:c
(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}
*答:B*
(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
答: D
(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 的动态类型特性指:变量的类型无需预先声明,且可在运行中动态改变(变量本身不绑定类型,仅指向不同类型的对象)
例如:
a=1 #变量的初始化为整数
print(type(a))
a="Hello" #在此无需声明,直接将”Hello“字符串赋值给a
print(type(a))
(2)如何将字符串 "123" 转换为整数?如果字符串为 "12a3" 会发生什么?
**答: 将字符串 "123" 转换为整数可使用int()函数,例如:num = int(”123“).
如果字符串为 "12a3" 会报错例如:
Traceback (most recent call last): File "D:\Python\hahaha.py", line 1, in <module> num = int("123ah") ^^^^^^^^^^^^ ValueError: invalid literal for int() with base 10: '123ah'
(3)比较 Python 中的动态类型与静态类型语言(如 Java)的优缺点。
答: 动态类型(Python)
优点:开发快(无需声明类型)、代码简洁灵活。
缺点:类型错误晚发现(运行时暴露)、大型项目维护难。
静态类型(Java)
优点:类型错误早发现(编译期)、大型项目易维护、性能略优。
缺点:代码冗长(需显式声明类型)、开发效率较低。
(4)简述 input() 函数和 eval() 函数的区别,并举例说明它们的应用场景。
答:input()也是Python内置函数,作用是暂停程序的运行,等待用户输入一行数据,然后将用户输入的内容以字符串的形式返回。
eval函数是内置函数,表示执行eval()中传入的代码字符串
两者的 区别:input()
获取用户从控制台输入的字符串;eval()
计算并返回字符串中 Python 表达式的值。
input于eval的应用场景:
-
input()
:用于获取用户输入,如登录时获取用户名、密码,格式验证需额外代码。示例:username = input("请输入用户名:")
。 -
eval()
:适合计算已知、安全的表达式,如处理简单数学公式。示例:result = eval("3 + 5 * 2")
。
(5)比较 == 运算符和 is 运算符的区别,并举例说明在什么情况下结果会不同。
答:
==:比较对象的值是否相等(内容相同即可)
is
:比较对象是否指向同一内存地址(必须是同一个对象)
结果不同的情况例如:
a=[1,2,3]
b=[1,2,3]
print(a==b)
print(a is b)
输出的结果为:
True False
出现不同的原因是因为只要两个对象值相同但地址内存不同,==和is的结果就会有所不同。
(6)逻辑运算符 and、or、not 的运算规则是什么?请分别举例说明。
答: and:意思是逻辑于,例如x and y,意思是说当x和y都为True是返回True,否则返回False。
or:意思是逻辑或,例如x or y,意思是说当x或y中有一个为True是返回True,仅当两个都为False是返回False。
not:意思是逻辑非,例如not x,意思是说如果x为True,则返回False;如果x为False,则返回True。
(7)当使用 input() 函数获取用户输入的数字时,如何将其转换为整数类型?如果用户输入的不是数字,会发生什么?
答:当使用 input() 函数获取用户输入的数字时在input()前加一个int可以将其转化为整形类型。例如:x=int(input())意思是当用户输入一个数字是,计算机会将其转化为整数然后赋值给x。如果用户输入的不是一个数字的话,会报错。例如:
哈哈 Traceback (most recent call last): File "D:\Python\hahaha.py", line 11, in <module> x=int(input()) ^^^^^^^^^^^^ ValueError: invalid literal for int() with base 10: '哈哈'
*(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,所以执行输出语句print。而后进入第二个if中进行判断,得到x>4,又执行print。到第三个if,由于x=5,所以不执行输出语句print。
(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, x2, x3,y1, y2, 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*b*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=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
输出:
无解
答:
#import math 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}")