复盘:C++和java中,面向对象和面向过程的区别
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
面试官:请你说说复盘:C++和java中,面向对象和面向过程的区别
区别正如下图:面向过程,就是按照顺序一步步搞事情
面向对象,不是按步骤,而是按照模块化的对象搞事情
对象:现实中任何事物都可以称之为对象,有自己的独特的特点。
现实世界中的事物映射到代码中,就是一个对象
好操作
面向对象和面向过程的区别:
1、思路不同
2、特点不同
3、优势不同
面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了;
而面向对象是将构成问题的**事物,分解成若干个对象,**建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。
面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么。
面向对象思想偏向于了解一个人,这个人的性格、特长是怎么样的,有没有遗传到什么能力,有没有家族病史,有没有特殊能力。
面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。
面向过程的优点:流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。
效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。
**缺点:**需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。
面向对象优点:易维护、易扩展、易复用,有封装、继承、多态的特性、更容易设计出耦合的系统。
缺点:性能比面向过程低。
扩展提问:如何理解面向对象的三个特性?
1.封装性
就是把属性和方法都放在一个类里面,
而且还可以通过访问类的权限属性给区分开,更加安全,
不想要释放的功能,直接搞成私有机制。
2.继承性
就是把之前已经实现好的代码或者方法
通过继承的方法拿过来使用,能节省大量的代码量,符合代码设计里面的继承优秀代码特性。
3.多态性
由于可以继承多个类,能够组合成多种特性,
但多态的关键是覆盖,就是同一个方法可以用不同的方式去实现,展现出多态性。
总结
提示:重要经验:
1)面向过程的操作就是顺序操作,性能快,但是难以复用,不好维护
2)面向对象虽然性能不快,但是是按照模块属性操作,可复用性搞,继承性强,方便维护,易于扩展
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。