2024年Python 2024年面试题总结,2024年最新网易严选面试经验

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】


代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某 个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切 片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶 心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。


**5)给定两个列表,怎么找出他们相同的元素和不同的元素**



list1 = [1,2,3]
list2 = [3,4,5]
set1 = set(list1)
set2 = set(list2)
print(set1 & set2)
print(set1 ^ set2)


**6)Python元组和列表的区别**  
 答:列表可变,元组不可变。


如果只能回答上面的答案在大厂面试中一定会挂,下面进行详细解答:


元组(tuple)不可变是指它的内存地址不可变,如果元组内的元素是可变类型的值(例如:dict),那其中的元素是可以改变的。例如:



a = (1, {‘key’: 1})
a[1][‘key’] = 2
print(‘改变之后的a的值’, a)


输出结果



改变之后的a的值 (1, {‘key’: 2})


除此之外,元组占用的内存空间更小:



a = [1, 2, 3, 4, 5, 6]
print(‘列表的空间大小为:’, a.sizeof())
b = (1, 2, 3, 4, 5, 6)
print(‘元组的空间大小为:’, b.sizeof())


输出结果



列表的空间大小为: 136
元组的空间大小为: 72


元组可以作为字典的key,而列表不能:


列表作为字典的key时会报错!



a = {[‘a’]:1}


输出结果



TypeError: unhashable type: ‘list’


元组作为字典的key时则不会报错



a = {(‘a’,):1}


另外,元组的元素必须用逗号分隔,哪怕只有一个元素:


(‘a’,)  
 元组和列表的区别总结如下:


元组内存地址不可变,列表内存地址可变;  
 元组占用空间比列表更少;  
 元组是不可变参数,所以可以作为字段的key,而列表(可变参数)不能;  
 元组的元素必须用逗号分隔,哪怕只有一个元素;  
 **7)如何在一个函数内部修改全局变量**  
 可以使用global修改:



a = 1

def test():
globals()[‘a’] = 2

print(‘原来的a值:’, a)
test()
print(‘修改后的a值:’, a)


输出结果



原来的a值: 1
修改后的a值: 2


函数也可以改成这样:



def test():
global a
a=2


**8)解释一下Python的GIL**  
 GlL是 python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占 python解释器(加了一把锁即GIL),使该进程內的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。多进程中因为每个进程都能被系统分配资源,相当于每个进程有了ー个 python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。


**9)Python列表去重**  
 通过集合的方式去重:



a = [1, 2, 2, 3, 3, 6]
a = set(a) # 先转为集合进行去重
a = list(a) # 然后再转换为列表
print(‘去重后的列表’, a)


手写去重代码:



a = [1, 2, 2, 4, 4, 6, 7]
b = []
for i in a:
if i not in b:
b.append(i)

print(‘去重后的列表’, b)


**10)列出 python中可变数据类型和不可变数据类型,并简述原理**  
 不可变数据类型:数值型(int)、字符串型(str)和元组(tuple)不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址):



a = 3
b = 3
print(‘a的内存地址为’, id(a))
print(‘b的内存地址为’, id(b))


输出结果



a的内存地址为 1658574891376
b的内存地址为 1658574891376


可变数据类型:列表(list)和字典(dict),允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象:



a = [1,2]
b = [1,2]
print(‘a的内存地址为’, id(a))
print(‘b的内存地址为’, id(b))


输出结果



a的内存地址为 2122512488768
b的内存地址为 2122512662720
6)python2和 python3区别
Python3使用 print必须要以小括号包裹打印内容,而在Python2既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容:
print(“hello world”) #pyton3和python2都可
print “hello world” #python2
python2 range(1,10)返回列表, python3中返回迭代器,节约内存;
python2中使用asci编码, python中使用utf-8编码;
python2中 unicode表示字符串序列,str表示字节序列python3中st表示字符串序列,byte表示字节序列 ;
python2中为正常显示中文,引入 coding声明, python3中不需要;
python2中是 raw input0函数, python3中是 Input0函数;


**11)python中内置的数据结构有几种**  
 整型 int、 长整型 long、浮点型 float、 复数 complex  
 字符串 str、 列表 list、 元祖 tuple  
 字典 dict 、 集合 set  
 Python3 中没有 long,只有无限精度的 int  
 **12)下面代码的输出结果将是什么**



a = [1,2]
print(a[3:])


代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。


\**13)Python代码中\_args, *\_kwargs 含义及用法?**  
 args: arguments 的缩写,表示位置参数


kwargs: keyword arguments 的缩写,表示关键字参数


**14)请列出 5 个 python 标准库?**  
 os:提供了不少与操作系统相关联的函数  
 sys: 通常用于命令行参数  
 re: 正则匹配  
 math: 数学运算  
 datetime:处理日期时间  
 **15)Python的可变数据类型和不可变数据类型分别有?**  
 可变数据类型:列表、字典、集合


不可变数据类型:数字、字符串、元组


**16)Python 中魔法方法和其用途?**  
 **init**:对象初始化方法


**new**:创建对象时候执行的方法,单列模式会用到


**str**:当使用print输出对象的时候,只要自己定义了\_\_str\_\_(self)方法,那么就会打印从在这个方法中return的数据


**del**:删除对象执行的方法


**17)Python 中os和sys模块的作用分别是?**  
 os模块:负责程序与操作系统的交互,提供了访问操作系统底层的接口。sys模块:负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。


**18)简述Python引用计数机制?**  
 python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题。

#### 总结

=============================================================

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础



![](https://img-blog.csdnimg.cn/img_convert/3e0d5b0f6a97b823cc1ef22ff1a18191.png)

第二阶段:移动端开发技术



![](https://img-blog.csdnimg.cn/img_convert/fc21db0a800494796dc6408ce1486031.png)



第三阶段:前端常用框架



![](https://img-blog.csdnimg.cn/img_convert/644efd4ddd0f8d43535f1982ec0da6e4.png)



*   推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。



*   大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。



  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值