面试题0009

1.面向对象的三大特性及解释

封装,多态,继承
  • 封装
    封装用于阐述对象所包含的内容,即存储的属性和可调用的方法。封装,
    是只需要知道所操作对象的接口,而不必去关心它的具体实现。
  • 继承
    鸟类也属于动物类,当已经定义了一个动物类时,可以对动物类进行扩展,通过继承的方式可以定义出一个鸟类。鸟类,可以继承动物类的所有属性和方法,只需要实现鸟类的那部分特殊属性和方法,就能达到重用代码、减少冗余的目的。对于动物类来讲,鸟类是其子类;对于鸟类来讲,动物类是其父类。继承,就是——是一个(is-a)。
  • 多态
    鸟类继承自动物类,这意味着两者都实现了“eat”等方法。当我们不知道一
    个对象是一个动物类对象,还是一个鸟类对象时,也依然可以直接调用“eat”方法。多态,就是不同对象通过相同方法调用实现各自行为的能力

2.面向对象继承时要注意什么?

继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类
继承分单继承和多继承 多继承需要注意继承的顺序,而且子类继承父类后如果方法命名与父类相同 则会覆盖
但在python3中。可以使用super函数来调用父类方法

3.面向对象有哪些特殊方法?

str/getattr/setattr/getatttribute等

4.如何理解元类?

元类就是负责帮你创建类的类

5.什么是ORM?作用是什么?

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

6.事物隔离的四个级别是什么?

未提交读、已提交读、可重复读、可串行化
  • Read uncommitted(未提交读):读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
  • Read committed:读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。(可以解决脏读问题,但是不可重复读出现了一个事务范围内两个相同的查询却返回了不同数据,这就是不可重复读。)
  • Repeatable read:事务开启,不允许其他事务的UPDATE修改操作。不可重复读对应的是修改,即UPDATE操作。但是可能还会有幻读问题。因为幻读问题对应的是插入INSERT操作,而不是UPDATE操作。
  • Serializable 序列化:Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。

7.MySql锁有几种?死锁是怎么产生的?

MySQL有三种锁的级别:页级、表级、行级。

使用mysql数据库,在并发加锁的时候不注意,如锁A和锁B,出现锁A等待锁B,锁B又等待锁A的情况,这个时候会引发死锁。

8.描述yield的作用

  1. 保存当前运行状态(断点),然后暂停执行,即将函数挂起
  2. 将yeild关键字后面表达式的值作为返回值返回,此时可以理解为起到了return的作用,当使用next()、send()函数让函数从断点处继续执行,即唤醒函数。

9.有没有一个工具可以帮助查找Python的bug和进行静态的代码分析?

PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
Pylint是另外一个工具可以进行codingstandard检查

10.分别说说cmp,map,filter的作用?

# cmp:compare比较

cmp(a,b) # a<b 返回-1 a>b 返回1 a=b返回0

 
# map:映射

map(function, iterable) # 将function作用于iterable,每个元素,将对应输出结果保存为一个list

# 例:

def plus_one(x):

return x+1

map(plus_one,[1,2,3,4]) ===>[2,3,4,5]

 
# filter:过滤器

filter(function, iterable) # 将 function依次作用于iterable的每个元素,如果返回值为true, 保留元素,否则从iterable里面删除

# 例:

def bigger_than_three(x):

return (x>3)

filter(bigger_than_three,[1,2,3,4,5]) ===>[4,5]

11.类方法和静态方法有什么区别?

静态方法就是普通的函数,调用时跟具体实例没有联系,不需要使用cls和self参数.
类方法是调用时需要使用类的相关成员的方法,需要使用cls参数,不需要self参数.

猜你喜欢

转载自blog.csdn.net/weixin_33777877/article/details/87581524
今日推荐