● 以下关于子类和父类的叙述中,正确的是 (43) 。
(43)
A. 子类继承了父类的属性和方法
B. 父类继承了子类的属性和方法
C. 子类的行为和父类必须完全保持一致
D. 父类的行为必须和子类完全保持一致
● 以下关于子类和父类的叙述中,正确的是 (44) 。
(44)
A. 代码中使用父类对象的地方,都可以使用子类对象替换
B. 代码中使用子类对象的地方,都可以使用父类对象替换
C. 父类定义的对象与子类定义的对象在属性和方法上一定相同
D. 父类定义的对象与子类定义的对象在属性和方法上一定不同
面向对象程序设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的______。
A.多态性
B.封装性
C.继承性
D.重用性
以下关于子类和父类的叙述中,正确的是______。
A.子类继承了父类的属性和方法
B.父类继承了子类的属性和方法
C.子类的行为和父类必须完全保持一致
D.父类的行为必须利子类完全保持一致
A.
B.
C.
D.
A.子类继承父类的所有属性和方法
B.子类可以继承父类的私有的属性和方法
C.子类可以继承父类的公有的属性和方法
D.创建子类对象时,父类的构造方法都要被执行
北京同城必应科技有限公司5月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:谈谈你对面向对象的理解?可用的回答 : 在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。 在现实生活中的任何 物体都可以归为一类事物,而每一个个体都是一类事物的实例。 面向对象的编程是以对象为中心,以消息为驱 动,所以程序=对象+消息。 面向对象有三大特性,封装、继承和多态。 封装就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化, 提高了数据的隐秘性的同时,使代码模块化。这样做使得代码的复用性更高。 继承则是进一步将一类事物共有的属性和行为抽象成一个父类,而每一个子类是一个特殊的父类-有父类的行为和属性,也有自己特有的行为和属性。 这样做扩展了已存在的代码块,进一步提高了代码的复用性。 如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。 多态的一大作用就是为了解耦-为了解除父子类继承的耦合度。 如果说继承中父子类的关系式IS-A的关系,那么接口和实现类之之间的关系式 HAS-A。 简单来说,多态就是允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的。 总结一下,如果说封装和继承是面向对象的基础,那么多态则是面向对象最精髓的理论。掌握多态必先了解接口,只有充分理解接口才能更好的应用多态。 问题 Q2:参数如何通过值或引用传递?可用的回答 :Python中的所有内容都是一个对象,所有变量都包含对象的引用问题 Q3:简述 三次握手、四次挥手的流程?可用的回答 : 三次握手: 初始状态:客户端A和服务器B均处于CLOSED状态,然后服务器B创建socket,调用监听接口使得服务器处于LISTEN状态,等待客户端连接。(后续内容用A,B简称代替) 1、A首先向B发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的), 消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1, 然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后, B进 入SYN_RCVD状态,与连接消息一样,这条消息也不能携带数据,同时消耗一个序号。 3、A收到B的确认消息后,需要给B回复确认数据,这时TCP头部中的ACK标识位值为1, 确认序号是ack=y+1,自己的序号在连接请求的序号上加1,也就是seq=x+1, 此时A进入ESTABLISHED状态,当B收到A的确认回复后,B也进入ESTABLISHED状态, 至此TCP成功建立连接,A和B之间就可以通过这个连接互相发送数据了。 四次挥手: 初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接, 此时客户端A和服务器B是等价的,双方都可以发送断开请求,下面以客户端A主动发起断开请求为例。(后续内 容用A,B简称代替) 1、A首先向B发送断开连接消息,这时TCP头部中的FIN标识位值为1,序号是seq=m,m为A前面正常发送数据最后一个字节序号加1得到的, 消息发送后A进入FNI_WAIT_1状态,FIN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的断开连接请求需要发出确认消息,这时TCP头部中的ACK标识位值为1,确认号为 ack=m+1, 而自己的序号为seq=n,n为B前面正常发送数据最后一个字节序号加1得到的, 然后B进入 CLOSE_WAIT状态,此时就关闭了A到B的连接, A无法再给B发数据,但是B仍然可以给A发数据,同时B端通知上方应用层,处理完成后被动关闭连接。 然后A收到B的确认信息后,就进入了 FIN_WAIT_2状态。 3、B端应用层处理完数据后,通知关闭连接, B向A发送关闭连接的消息,这时TCP头部中的FIN和ACK标识位值均为1, 确认号ack=m+1,自己的序号为seq=k,消息发送后B进入LACK_ACK状态。 4、A收到B的断开连接的消息后,需要发送确认消息, 这是这时TCP头部中的ACK标识位值为1,确认号ack=k+1,序号为m+1(因为A向B发送断开连接的消息时消耗了一个消息号), 然后A进入TIME_WAIT 状态,若等待时间经过2MSL后,没有收到B的重传请求, 则表明B收到了自己的确认,A进入CLOSED状态, B收到A的确认消息后则直接进入CLOSED状态。至此TCP成功断开连接。 问题 Q4:请解释或描述一下Django的架构?可用的回答 : 对于Django框架遵循MVC设计,并且有一个专有名词:MVT M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架 V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎 问题 Q5:什么是PEP 8?可用的回答 :PEP 8是一个编码约定,关于如何编写Python代码更具可读性。问题 Q6:列表的扁平化和降维?比如有一个二维列表,降成普通的一维的。如:groups = huahua, xiaojian, musen, yuze, keyou得到结果 huahua, xiaojian, musen, yuze, keyou可用的回答 : 方法一:最简单的方式可以通过 for 循环的方式一一提取: names = for group in groups: for name in group: names.append(name) print(names) 方法二:但是在面试的时候可能会加一些限制
A.子类能够继承父类私有的属性;
B.子类可以重写父类的final方法;
C.子类能够继承不同包父类的protected属性;
D.子类能够继承不同包父类的缺省属性;
关于继承表述错误的是:()
以下关于子类和父类的叙述中,正确的是()。