每日面试题

一、简答题(25题)
1.为什么学习 Python

2.单例模式与工厂模式

3.Python的可变和不可变数据类型?

4.简述继承

5.区分下break,continue和pass?

6.char 和 varchar 的区别

7.Python有哪些应用?

8.什么是正则的贪婪匹配

9.请说下Python有哪些特点

10.新式类和旧式类

11.面向对象中new__ 和__init 区别

  1. Flask 和 Django 的异同

13.Python 面向对象中的继承有什么特点

14.可变类型与不可变类型

15.你对Python类中的self有什么了解?

16.Python 如何收集垃圾(无用的对象)?

17.Python中append和extend的区别?

18.什么是异步非阻塞

19.python新式类和经典类的区别

20.Python中的局部变量和全局变量是什么?

21.Python中append,insert和extend的区别?

22.python深拷贝和浅拷贝的区别

23.with 方法打开文件的作用

24.Python中==和is的区别

25.解释型和编译型语言的区别

参考答案

1.Python 语言简单易懂,上手容易,随着 AI 风潮,越来越火
2.单例模式:主要目的是确保某一个类只有一个实例存在 工厂模式:包涵一个超类,这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建
3.不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型; 可变数据类型:数据别创建之后,数据的值可以发生变化,有列表、字典、集合类型。 
4.一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法) 继承使我们可以重用代码,并且还可以更方便地创建和维护代码 Python 支持以下类型的继承: 单继承- 一个子类类继承自单个基类 多重继承- 一个子类继承自多个基类 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类 分层继承- 多个子类继承自同一个基类 混合继承- 两种或两种以上继承类型的组合
5.break:跳出循环,不执行下一个循环。同时break后面的代码也不会执行。 pass:pass后面的代码还是会继续执行,也就是当前的循环还在继续。 continue:continue后面的代码不会执行,而是直接进入下一个循环。
6.char:存储定长数据很方便,CHAR 字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义 char(10) varchar:存储变长数据,但存储效率没有 CHAR 高,必须在括号里定义长度,可以有默认值
7.1. Web开发 2. 桌面GUI开发 3. 人工智能和机器学习 4. 软件开发 5. 业务应用程序开发 6. 基于控制台的应用程序 7. 软件测试 8. Web自动化 9. 基于音频或视频的应用程序 10. 图像处理应用程序 
8.Python 中默认是贪婪匹配模式 贪婪模式:正则表达式一般趋向于最大长度匹配 非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配
9.Python是一种解释型语言,这意味着开发过程中没有了编译这个环节。 面向对象:Python支持面向对象的风格或代码封装在对象的编程技术。 动态类型语言:在Python中,你不需要预先声明变量的类型,当你赋值给变量时,解释器会自动知道其类型。 跨平台语言:Python可以在大多数的操作系统上运行,包括但不限于Windows、Linux、Unix等。
10.a. 在 python 里凡是继承了 object 的类,都是新式类 b. Python3 里只有新式类 c. Python2 里面继承 object 的是新式类,没有写父类的是经典类 d. 经典类目前在 Python 里基本没有应用
11.new是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例对象,是个静态方法。 init是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。 1、new至少要有一个参数 cls,代表当前类,此参数在实例化时由 Python 解释器自动识别。 2、new__必须要有返回值,返回实例化出来的实例,这点在自己实现_new_时要特别注意,可以 return 父类(通过 super(当前类名, cls))_new_出来的实例,或者直接是 object 的__new出来的实例。 3、init__有一个参数 self,就是这个_new_返回的实例,_init_在_new_的基础上可以完成一些其它初始化的动作,__init不需要返回值。 4、如果new__创建的是当前类的实例,会自动调用_init_函数,通过 return 语句里面调用的_new_函数的第一个参数是 cls 来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的_init_函数,也不会调用其他类的__init函数。
12.Flask 是 “microframework”,主要用来编写小型应用程序,不过随着 Python 的普及,很多大型程序也在使用 Flask。同时,在 Flask 中,我们必须使用外部库 Django 适用于大型应用程序。它提供了灵活性,以及完整的程序框架和快速的项目生成方法。可以选择不同的数据库,URL结构,模板样式等
13.a. 同时支持单继承与多继承,当只有一个父类时为单继承,当存在多个父类时为多继承 b. 子类会继承父类所有的属性和方法,子类也可以覆盖父类同名的变量和方法 c. 在继承中基类的构造(init())方法不会被自动调用,它需要在其派生类的构造中专门调用 d. 在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别于在类中调用普通函数时并不需要带上 self 参数
14.可变数据类型:list、dict、set 不可变数据类型:int/float、str、tuple
15.self表示类的实例。 通过使用self关键字,我们可以在Python中访问类的属性和方法。 注意,在类的函数当中,必须使用self,因为类中没有用于声明变量的显式语法。
16.Python 使用一种称为引用计数的方法来决定何时需要在内存中收集对象。 简单来说,Python 会计算每个对象的引用计数,当一个对象没有引用时,会自动收集。
17.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加 
18.同步异步指的是调用者与被调用者之间的关系 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回,一旦调用返回,就得到了返回值 异步的概念和同步相对,调用在发出之后,这个调用就直接返回了,所以没有返回结果。当该异步功能完成后,被调用者可以通过状态、通知或回调来通知调用者 阻塞非阻塞是线程或进程之间的关系 阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。调用线程只有在得到结果之后才会返回。函数只有在得到结果之后才会将阻塞的线程激活 非阻塞和阻塞的概念相对应,非阻塞调用指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程
19.在python里凡是继承了object的类,都是新式类 Python3里只有新式类 Python2里面继承object的是新式类,没有写父类的是经典类 经典类目前在Python里基本没有应用 保持class与type的统一对新式类的实例执行a.class与type(a)的结果是一致的,对于旧式类来说就不一样了。 对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度优先搜索。
20.全局变量:在函数外或全局空间中声明的变量称为全局变量。这些变量可以由程序中的任何函数访问。 局部变量:在函数内声明的任何变量都称为局部变量。此变量存在于局部空间中,而不是全局空间中。
21.append:在列表末尾添加新元素。 insert:在列表的特定位置添加元素。 extend:合并两个列表。
22.Python中的深拷贝和浅拷贝是指在拷贝对象时,是否会同时拷贝该对象内部的所有元素。 浅拷贝是指拷贝一个对象,只拷贝对象的引用,而不是对象本身。也就是说,当拷贝完成后,原始对象和拷贝对象会共享同一个内存地址。当修改其中一个对象时,另一个对象也会受到影响。 深拷贝是指拷贝一个对象,并且递归地拷贝该对象内部的所有元素。也就是说,当拷贝完成后,原始对象和拷贝对象不会共享同一个内存地址。当修改其中一个对象时,另一个对象不会受到影响。 例如,假设有一个列表a=[1,2,[3,4]],进行浅拷贝b=a.copy(),则修改b[2][0]=5,会同时修改a[2][0]的值。而进行深拷贝c=copy.deepcopy(a),则修改c[2][0]=5,不会影响a[2][0]的值
23.开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的 f.open 写法,我们需要 try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行 finally f.close() 关闭文件,with 方法帮我们实现了 finally 中 f.close
24.is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。
25.编译型语言:把做好的源程序全部编译成二进制的可运行程序。然后,可直接运行这个程序。如:C,C++ 解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!如:Python, (Java 有些特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值