python面试基础

1、is 和==的区别

  • is
    比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。
  • ==
    比较的是两个对象的内容是否相等,即内存地址可以不一样,内容一样就可以了。

2、python判断None用is

  • None在Python里是个单例对象,一个变量如果是None,它一定和None指向同一个内存地址。

3、python 闭包

  • 这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。
  • 闭包中的引用的自由变量只和具体的闭包有关联,闭包的每个实例引用的自由变量互不干扰。
  • 一个闭包实例对其自由变量的修改会被传递到下一次该闭包实例的调用。
  • 如果想要在内函数中修改外函数的值,需要使用 nonlocal 关键字声明变量

4、python多线程应用场景

  • 多线程对于IO操作有用

5、linux配置ip

  • vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 填写ip地址、子网掩码、网关

6、虚拟机配置网络

  • 桥接:桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。
  • NAT:NAT模式中,就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是在vmware提供的一个虚拟网络。

7、python怎么创建虚拟环境?

8、内存管理

  • 垃圾回收
  • 引用计数
  • 内存池机制
  • 当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查那些引用计数为0的对象,然后清除其在内存的空间。当然除了引用计数为0的会被清除,还有一种情况也会被垃圾收集器清掉:当两个对象相互引用时,他们本身其他的引用已经为0了。
  • 垃圾回收机制还有一个循环垃圾回收器, 确保释放循环引用对象(a引用b, b引用a, 导致其引用计数永远不为0)。

9、python协程

  • Gevent是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet,它是以C扩展模块形式接入Python的轻量级协程。Greenlet全部运行在主程序操作系统进程的内部,但他们被协作式地调度。

10、动态导入模块

在这里插入图片描述

11、yield

blog.csdnimg.cn/20201103220334629.png#pic_center)

12、python GIL

  • CPython的GIL本意是用来保护所有全局的解释器和环境状态变量的,如果去掉GIL,就需要更多的更细粒度的锁对解释器的众多全局状态进行保护。或者采用Lock-Free算法。无论采用哪一种,要做到多线程安全都会比维系一个GIL要难得多。另外改动的还是CPython的代码树及其各种第三方扩展也在依赖GIL。
  • 进一步说,有人做过测试将GIL去掉,加入更细粒度的锁。但是实践检测对单线程来说,性能更低。只有利用的物理cpu到一定数目后,性能才会比GIL版本好。且现在绝大部分的python程序都是单线程的。

13、pyc,pyo

  • py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库
  • python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,文档上说只要调用了import model那么model.py就会先编译成pyc然后加载。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python基础面试中,常见的一些问题包括:Python解释器、列表去重和变量身份标识。当面试官问到Python解释器问题时,你可以通过反问来展示自己对不同Python解释器版本的了解。例如,你可以问面试官是否指的是官方的CPython解释器。在列表去重问题中,可以使用以下代码来实现列表去重功能: ```python def dedup(items): no_dup_items = [] seen = set() for item in items: if item not in seen: no_dup_items.append(item) seen.add(item) return no_dup_items ``` 这段代码会遍历给定的列表,并将不重复的元素添加到`no_dup_items`列表中。 此外,还有一些可能会涉及到Python解释器的问题。例如,下面的代码段展示了一个关于变量身份标识的问题: ```python a, b, c, d = 1, 1, 1000, 1000 print(a is b, c is d) def foo(): e = 1000 f = 1000 print(e is f, e is d) g = 1 print(g is a) foo() ``` 这个问题旨在考察面试者对官方的Python解释器的了解程度。对于这段代码,结果会输出`True False True`。这是因为在CPython解释器中,小整数[-5, 256]会被缓存,而大整数不会被缓存。 以上就是一些Python基础面试题的示例答案。在面试准备中,建议你研究一些常见的Python面试题和相关的资料,以便更好地应对面试的考察。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python面试基础篇 - 50道经典面试题(附答案及多种解答)](https://blog.csdn.net/m0_68507761/article/details/125336802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值