关于python的一些面试题

1.技术面试题

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

答: 在工作机制上TCP采用三次握手四次挥手的机制保障信息传递的稳定性,更适合文件的传输和下载。而UDP采用的是直接传输和直接接受的机制提高信息传递的高效性,更适合点对点的实时交流的环境。

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

答: DHCP相当于网络中的智能管家,他会自动将局域网内的设备进行配置包括但不限于:IP地址、子网掩码、DNS服务器地址。而DNS相当于网络中的电话簿,他会将一串串难以记住的IP地址缓存为方便记忆的网址,当你需要访问时,可以直接使用网址也可以按照IP地址给你他所对应的网址

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

答: Linux文件系统的目录结构是以根目录“ / ”为起点的树结构,我们可以将/目录看作一个国家。其中/boot 是存放系统启动的核心文件,即国家的政府机构, /var是存放需要经常变化的文件,相当于国家的临时居住所, /usr 是存放用户安装的软件和系统工具,相当于国家的皇城

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

答: 首先检查网关的配置是否错误或丢失,检查DNS服务器、第二检查防火墙的配置情况,可能处于静止访问外网。第三检查网络接口等物理层设施否正常运行。第四检查外网是否故障,利用ping测试是否能联通、第五检查网络服务是否异常

2.HR面试题

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

答: 能成为我的领导一定是能有强过我的地方,能力只是一个人价值的一小部分,领导位置的关键在于协调我们一起为公司创造价值,我会主动承担起决策问题的责任,在领导的带领下持续为公司创造价值。

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

答: 既然我已经加入了面试换届说明我身上一定还是有一些吸引公司的地方,简历只是过去的总结,工作是当下的进行,如果公司愿意给我一次机会,我会给自己的岗位创造该有的价值

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

**答:**除开咱们公司以外,我同样还面试其他几家规格相当的公司,但我认为咱们公司的业务发展和理念,更加符合我的职业规划,很期待加入公司一起共事。

(4)如果你发现公司某项业务存在合规风险,但领导暗示‘别多管闲事’,你会怎么做?

**答:**首先我会再次核对这项业务的合规风险的大小,估算他可能产生的价值以及造成的亏损,将估算出来的结果进行整理,找到合适的契机再次汇报给领导,尽可能给领导劝说领导要保持公司的长远利益,如果领导决定继续执行,我将按照公司的规章制度向上级汇报,保证公司的长远利益。

3.选择题

(1)以下哪个是合法的 Python 变量名?

A. 2var

B. _var

C. var@1

D. var-1

答: B
解析:Python 变量名规则:由字母、数字、下划线组成,且不能以数字开头。

(2)表达式 True + 2 的结果是?
A.True

B. 3

C. 2

D. TypeError

答: B
解析:在 Python 中,布尔类型bool是int类型的子类,这就使得布尔值True和False可以分别当作数值1和0来使用。
即:“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() 函数用于将符合条件的字符串转为整数;str() 是转字符串,float() 转浮点数,bool() 转布尔值,不符合 “转为整数” 需求 。

(5)执行 print("Hello", "World", sep='-', end='!') 后,输出结果是?

A .Hello World

B. Hello-World

C. Hello-World!

D. Hello World!

答: C
解析:前面两个代表打印两个字符串,以“-”作为字符串之间的间隔,并以“!”作为print语句的结尾字符

(6)以下哪个运算符用于判断两个对象是否是同一个对象(内存地址相同)?

A. ==

B. !=

C. is

D. in

答: C
解析:is 用于判断两个对象是否内存地址相同(同一对象);== 判值相等,!= 判值不等,in 判元素是否在容器内 。

(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. 语法错误

**答:**C

(8)以下代码的输出结果是?

x = 5  
if x > 3:  
    print("A")  
elif x > 4:  
    print("B")  
else:  
    print("C")  

A. A

B. B

C. C

D. 无输出

答: A
解析:在判断 X > 3 时已经输出结果A了就不会进行接下来的操作判断。

(9)以下代码是否存在错误?

A = 10  
if A > 5:  
    print("Big")  
elif A < 5:  
    print("Small")  
else  
    print("Medium")  

A. 无错误

B. 缩进错误

C. else 后缺少冒号

D. elif 条件错误

答: C
解析:Python 中 else 后要跟冒号 :

(10)以下代码的输出结果是?

x = 0  
if x:  
    print("True")  
else:  
    print("False")  

A. True

B. False

C. 语法错误

D. 无输出

**答:**B
解析:在 Python 中,if x: 是条件判断语句,用于检查变量 x 是否为 “真”(即真值测试)。Python 将以下值视为假值(False):
基本数据类型:None、False、0(整数 / 浮点数 / 复数的零值)。
空容器:空字符串 ‘’、空列表 []、空元组 ()、空字典 {}、空集合 set()。
非假值均被视为真值(True),包括但不限于:
非零数值(如 1、-5、3.14)。
非空字符串(如 “0”、“False”)。
非空容器(如 [0]、(None,))。
自定义对象(默认视为 True,除非重写 bool() 或 len() 方法)。

(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
解析:代码的语法没有错误,但是B不能被0除。

4.问答题

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

答: 允许变量在运行时绑定到不同类型的对象,而无需在代码中预先声明类型。这意味着同一变量名可以在程序执行过程中引用不同类型的数据。
动态类型的特点
无需声明类型:变量在赋值时自动获得类型。

# 变量 x 初始赋值为整数 
x = 10 print(type(x))  # 输出:  
# 同一变量 x 被赋值为字符串 
x = "Hello" print(type(x))  # 输出:  
# 同一变量 x 被赋值为列表 
x = [1, 2, 3] print(type(x))  # 输出: 类型可变性:同一变量可以被赋值为不同类型的对象。

运行时类型检查:类型错误在执行到错误代码时才会被触发,而非编译时。

灵活数据结构:动态类型允许容器存储不同类型的对象。

a = [1, "two", True ,[3,4]]  #int str bool list四种类型的可以放一起,但如Java之类的静态则需要自己手动转类型输出 

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

答: 使用int()函数,如果直接使用int函数转化“12a3”的话会报错。只能转化为十进制以上的整数形式(base值大于10),
即:int(“12a3”,base=x)(36>x>10)
注: base 的取值范围为 2 到 36

拓展:
Python 设计 int() 时,允许使用 0-9 和 a-z 表示数值,字母 a-z 对应 10-35(数字10个,字母26个)。例如:
base=16:使用 0-9 和 a-f(如 “FF” 表示 255)。
base=36:使用 0-9 和 a-z(如 “zz” 表示 36²-1=1295)。

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

答:

动态类型(Python):

优点:

1.代码灵活性高:无需声明变量类型(变量的类型由赋值操作动态决定,且会根据最新赋值自动更新)

x = 10        # x 现在是整数类型(int)
x = "Hello"   # x 现在是字符串类型(str)
x = [1, 2]    # x 现在是列表类型(list)

2.开发效率高:无需提前设计复杂类型系统,支持交互式编程。

3.适合动态数据结构:处理 JSON、XML 等结构不固定的数据时更自然。

例子:

data = {"name": "Alice", "age": 30}  # 动态结构

缺点

1.运行时类型错误:类型不匹配问题(如 1 + "a")在运行时才会暴露,增加调试成本。

2.可读性与可维护性挑战:缺乏类型声明,代码意图可能不够清晰,尤其在大型项目中。

3.性能开销:运行时类型检查和方法解析会引入额外开销,影响执行效率。

4.重构风险高:修改代码可能导致隐藏的类型错误,需依赖全面测试。

静态类型语言(如 Java、C++)

优点

1.编译时类型检查:提前发现类型错误,减少运行时崩溃风险。
示例(Java):

int x = 10;
// x = "Hello";  // 编译错误:无法将字符串赋值给 int 类型

2.代码可读性与可维护性:类型声明作为文档,明确变量和函数的使用方式,便于团队协作。

3.性能优化:编译器可基于类型信息进行深度优化(如内联函数、内存布局优化)。

4.IDE智能支持:类型信息帮助 IDE 提供更准确的代码补全、重构建议。

缺点

1.开发效率较低:需要编写更多类型声明代码,初期编码速度较慢。

2.类型系统复杂度:复杂泛型、继承关系等设计可能增加学习成本。
示例(Java 泛型):

List<List<Integer>> matrix = new ArrayList<>();  // 多层泛型声明

3.灵活性不足:处理动态结构(如 JSON)时需要额外的类型转换或序列化工具。

4.过度设计风险:为满足类型约束可能引入不必要的抽象层。

总结:

动态在编写时可以不刻意去定义类型,提高编写效率,但在后期检错、运行会更低效。

静态在编写时需要刻意定义类型,降低编写效率,但在后期检错、运行会更高效。

维度 静态 动态
开发效率
灵活性
代码复杂度
性能
适合场景 脚本 安全型应用
查错时机 运行时 编译时

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

答: 前者是读取用户的输入原始字符串,返回值为"str";后者是执行字符串形式的Python表达式并返回结果,最终返回值的类型为表达式的计算结果。

例子:使用input()函数和eval()函数实现计算机功能

shu = input("请输入数学表达式:")  #输入3*2
result = evaul(shu)             #直接表达为shu(3*2)的结果计算出来输出即为6

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

答: "=="运算符是比较两个值(内容)是否相等,"is"运算符是比较内存地址是否相同。

列子:

# 例1:值相等但内存地址不同
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # 输出: True(值相等)
print(a is b)  # 输出: False(内存地址不同)
# 例2:值和内存地址都相等
c = a
print(c == a)  # 输出: True
print(c is a)  # 输出: True(c 和 a 指向同一对象)
# 例3:小整数的优化(Python 对小整数范围 [-5, 256] 做了缓存,有一一对应的位置)
d = 100
e = 100
print(d is e)  # 输出: True(100 在缓存范围内)
f = 1000
g = 1000
print(f == g)  # 输出: True
print(f is g)  # 输出: False(1000 超出范围)

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

答: and:与运算 有0则0 无0则1 ,or:或运算 有1则1 无1则0

​ not:非运算,1 -> 0 0 -> 1 ( 注:1代表真0代表假)

例子:

a = 3
print(a > 2 and a < 4)   # 输出: False(and:全真为真)
print(a > 2 or a > 4)    # 输出: True(or:有真为真)
print(not True)          # 输出: False(not:取反)

(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

解析:首先判定第一个if语句符合条件,打印输出”X 大于3“并默认换行结尾,再次判定第二个if,符合条件打印输出“X 大于4”,最后判定最后一个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((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 = ((y2-y1) ** 2 + (x2-x1) ** 2) ** 0.5
b = ((y2-y3) ** 2 + (x2-x3) ** 2) ** 0.5
c= ((y1-y3) ** 2 + (x1-x3) ** 2) ** 0.5
print("边长分别是:", a, b, c)
#利用"math.acos"函数求出弧度值
A1 = math.acos((c * c + b * b - a * a) / (2 * b * c))
B1 = math.acos((c * c + a * a - b * b) / (2 * a * c))
C1 = math.acos((a * a + b * b - c * c) / (2 * a * b))
#利用"math.degress"函数弧度值转化为角度
A = math.degrees(A1)
B = math.degrees(B1)
C = math.degrees(C1)
print(f"角 A 的度数:{A:.2f}")
print(f"角 B 的度数:{B:.2f}")
print(f"角 C 的度数:{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 为判别式,如果z为零则输出无解

输入输出描述

输入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 = (e * d - b * f) / (a * d - b * c)
y = (a * f - e * c) / (a * d - b * c)
z = a * d - b * c
if z == 0:
    print("无解")
else:
    print(f"{x:.1f}")    #":.1f"表示保留一位小数
    print(f"{y:.1f}")#在此写入你的代码

你可能感兴趣的:(关于python的一些面试题)