(持续更新)ai 工程师(nlp)面试问题+答案

本文详细介绍了Python基础,包括浅拷贝和深拷贝的概念,解释了Python比C慢的原因,如解释型语言、动态类型、内存管理和GIL。此外,还提供了优化Python速度的方法,如使用内置函数、生成器和并行处理。接着讨论了Python中的装饰器和闭包,以及继承、Linux常见指令和权限设置。在AI部分,提到了激活函数、模型构建、归一化处理和数据库选择。最后,涵盖了SQL语句的使用,如联合查询和数据结构中的红黑树。
摘要由CSDN通过智能技术生成

python基础

  1. 浅拷贝和深拷贝
  • 浅拷贝:copy()
    浅拷贝意味着创建一个新的对象,但是这个对象包含的元素仍然是原始对象中元素的引用。也就是说,如果原始对象中的元素是可变的(比如列表、字典等),那么在拷贝对象中修改这些元素会影响到原始对象。

  • 深拷贝:deepcopy()
    深拷贝会创建一个新的对象,并且递归地复制原始对象中的所有对象,因此新对象和原始对象是完全独立的。修改新对象中的元素不会影响原始对象。

  1. 为什么常说python代码比c慢
    -解释型语言:Python是一种解释型语言,这意味着Python代码在运行时会被解释器逐行解释执行,而C是一种编译型语言,它的代码在执行前会被编译成机器码。编译型语言通常执行速度更快,因为机器码直接由硬件执行,无需额外的解释过程。
    -动态类型:Python是一种动态类型语言,这意味着变量的类型在运行时确定,而C是静态类型语言,变量类型在编译时就已经确定。动态类型检查会增加运行时的开销,从而影响性能。
  • 内存管理:Python使用自动内存管理和垃圾回收机制,这虽然简化了开发过程,但也引入了额外的性能开销。C语言中,程序员需要手动管理内存,这可以更精确地控制内存使用,从而提高效率。
  • 抽象层次:Python提供了高级的数据结构和抽象,如列表、字典、集合等,这些抽象在内部可能需要复杂的数据结构和算法来实现,而这些实现在C中可能更直接和高效。
  • 全局解释器锁(GIL):Python的全局解释器锁(GIL)是一个互斥锁,确保在任何时刻只有一个线程执行Python字节码。这限制了Python程序在多线程环境下的性能,因为即使在多核处理器上,GIL也会导致线程无法并行执行。
  1. 怎么提高python速度
    这些方法中的一些,如使用内置函数、列表推导式、生成器和set类型,是Python语言特有的特性或语法。而其他一些,如使用JIT编译器、Cython、特定的库和并行处理框架,则是在Python中特别有效或常用的方法,它们可能不仅限于Python,但在Python中得到了广泛的应用和优化。
    使用内置函数:Python的内置函数是用C语言写的,因此它们执行速度很快,这是Python特有的优势。
    利用列表推导式:列表推导式是Python特有的语法,它提供了一种简洁的方式来创建列表,并且通常比等价的for循环快。
    使用生成器:生成器是Python的一个特性,它们是迭代器的一种简单实现方式,可以在迭代大型数据集时节省内存。
    使用多线程和多进程:Python的threadingmultiprocessing模块提供了创建线程和进程的方法,利用多核CPU的能力来提高性能。
    ** 使用numpypandas**:这些库提供了对大型数据集进行高效操作的接口,它们是用C语言编写的,可以提供比纯Python更快的性能。
    使用JIT编译器PyPy是一个Python解释器,它使用即时编译(JIT)技术来提高Python代码的执行速度。
    Cython:Cython是一个编译时的Python到C的转换器,它可以将Python代码转换成C代码,从而提高执行速度。
    使用更快的库:Python社区提供了许多针对特定任务优化的库,如numba,它可以将Python和NumPy代码转换成优化的机器代码。
    使用set而不是list:在Python中,set类型提供了快速的成员检查,这在某些情况下比使用list更高效。
    使用并行处理框架:Python的joblibconcurrent.futures模块提供了并行执行任务的方法,这可以利用多核处理器来加速计算。

  2. python装饰器
    Python中的装饰器是一种设计模式,用于修改或增强函数或方法的行为,而不需要改变其本身的代码。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个函数,通常通过包装(wrapping)原函数来实现。

  3. python 闭包
    在Python中,闭包(Closure)是一个重要的概念,它指的是一个函数能够记住其创建时的作用域,即使该作用域的执行已经结束。这意味着闭包可以访问并操作外部函数的变量,即使外部函数已经返回。

def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

# 创建一个闭包
add_five = outer_function(5)

# 使用闭包
print(add_five(3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值