【Java八股-第八期】面向对象OO - Java基础

提纲:

🔥基础八股知识

  • 面向对象 & 面向过程

  • 封装

  • 继承

  • 多态

  • 强制类型转换 & 泛型

  • 抽象类 & 接口

🎈面试八股真题

  • 1、面向对象和面向过程的区别

  • 2、泛型常用特点

  • 3、Java 创建对象有几种方式

  • 4、获取一个类Class对象的方式有哪些
  • 5、抽象类和接口的区别

一、基础八股知识点

1. 面向对象 & 面向过程

  • 面向过程:面向过程的编程思想中,过程/方法是程序的核心和主体,例如把大象放进冰箱里,程序的主体就是 打开冰箱/放进大象/关上冰箱 三个方法,大象、冰箱都是方法种的一个参数

  • 面向对象:面向对象的编程思想中,对象是程序的核心和主体,把大象放进冰箱,我们需要冰箱类,冰箱类的属性可以有品牌、容量等,并且需要实例化一个冰箱,同时需要大象类,大象的属性可以有性别、年龄、体重等,在执行程序时,我们通过调用冰箱的 打开冰箱门/放入物品/关上冰箱门 来执行程序,也就是说程序执行过程中的所有数据和方法,都是对象的属性和动作

  • 个人理解:面向过程适合抽象的数值计算,与具体的事物无关;面向对象适合涉及到具体事物的程序,将事物的属性与动作封装为类,再通过为属性赋值获取具体的实例对象,从而提高代码的复用、扩展,也能更好的体现对象间的关系

2.封装

  • 将对象的属性与对这些属性的操作进行隐藏,对外仅提供一些基本的方法,以此对对象的属性进行精确的控制,防止外部随意修改,并且通过封装方法,提高代码的复用性,降低耦合

3.继承

  • 子类通过继承父类,可以获得父类所有成员,子类通过对父类成员的继承或是重写,来提高代码的复用,通过抽取相似类的共同属性与方法,成为一个共同的父类,从而提高代码的复用

4.多态

  • 多态的前提是子类继承父类,使用父类的引用指向子类的实例时就是多态,在编译时,调用父类引用的方法的指令是 invokevirtual,表示虚方法的调用,在运行时会根据实例对象的 vtable 虚方法表,查找到真正执行的方法的具体地址进行调用,vtable 在类加载的链接阶段就根据方法的重写规则生成好了

5.强制类型转换 & 泛型

  • 强制转型:Object a = new Integer(10); Integer b = (Integer) a; 即子类引用指向父类引用时,就需要进行强制转型

  • 泛型

    • 相对于强制转型,使用泛型更加优雅,并且假设 Object a = new Object(); Integer b = (Integer) a; 则会抛出运行时异常 ClassCast,而使用泛型,会在编译期进行检测

  • 泛型擦除

    • Java 的泛型是伪泛型,在编译时,会进行泛型擦除,默认会将对象的类型变为 Object来处理,在执行例如 int a = list.get(i) 时,会由编译器自行完成强制类型转换

6.抽象类 & 接口

  • 抽象类用来定义有共同属性和行为的类的模板,侧重于抽象类的类型,表示类的特征;接口用来定义要具备某个功能所需要实现的方法,侧重于抽象类的功能,表示类能做什么

二、面试八股真题🎈🎈🎈

1、面向对象和面向过程的区别

  • 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发

  • 是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

代码鹿のJAVA八股面试题总结 文章被收录于专栏

【📫专栏目录在最底部📫】 - 本专栏适合于JAVA已经入门的学生或人士,有一定的编程基础。 - 本专栏特点: 本专刊囊括了JAVA、Spring、计算机网路、操作系统、计算机网络、MySQL、算法与数据结构、中间件等一系列知识点,总结出了高频面试考点(附有答案),事半功倍,为大家春秋招助力。 - 本专栏内容分为五章

全部评论

相关推荐

咦哟,从去年八月份开始长跑,两处实习转正都失败了,风雨飘摇,终于拿到offer了更新一下面试记录:秋招:多部门反复面试然后挂掉然后复活,具体问了啥已经忘了,只是被反复煎炸,直至焦香😋春招:base北京抖音hr打来电话说再次复活,准备面试,gogogo北京抖音一面:六道笔试题:1.promise顺序2.定义域问题3.flat展开4.并发请求5.岛屿数量算法(力扣)深度,广度都写6.忘记了,好像也是算法,难度中等其他问题多是框架底层设计,实习项目重难点~~~秒过😇北京抖音二面:三道笔试题:(为什么只有三道是因为第三道没做出来,卡住了)1.中等难度算法(忘记啥题了,应该是个数组的)2.认识js的继承本质(手写继承模式,深入js的面相对象开发)3.手写vue的响应式(卡在了watch,导致挂掉)---后知后觉是我的注册副作用函数写得有问题,有点紧张了其他题目多是项目拷打,项目亮点,对实习项目的贡献~~~第二天,挂,but立马复活转战深圳客服当天约面深圳客服一面:六道笔试题,由于面过太多次字节,面试官叫我直接写,不用讲,快些写完😋,具体都是些继承,深拷贝(注意对数组对象分开处理,深层次对象,循环引用),加中等难度算法题~~~秒过深圳客服二面:口诉八股大战:大概囊括网络,浏览器渲染原理,动画优化,时间循环,任务队列等等(你能想到的简单八股通通拉出来鞭尸😋)算法题:笔试题6道:1:找出数组内重复的数,arr[0]-arr[n]内的数大小为[1-n],例如[1,2,2,3,3]返回[2,3],要求o(n),且不使用任何额外空间(做到了o(n),空间方面欠佳,给面试官说进入下一题,做不来了)2:原滋原味的继承(所以继承真滴很重要)3:力扣股票购买时机难度中等其他滴也忘记了,因为拿到offer后鼠鼠一下子就落地了,脑子自动过滤掉可能会攻击鼠鼠的记忆😷~~~秒过深圳客服三面:项目大战参与战斗的人员有:成员1:表单封装及其底层原理,使用成本的优化,声明式表单成员2:公司内部库生命周期管理成员3:第三方库和内部库冲突如何源码断点调试并打补丁解决成员4:埋点的艺术成员5:线上项目捷报频传如何查出内鬼成员6:大文件分片的风流趣事成员7:设计模式对对碰成员8:我构建hooks应对经理的新增的小需求的故事可能项目回答的比较流利,笔试题3道,都很简单,相信大家应该都可以手拿把掐😇~~~过过过无hr面后续煎熬等待几天直接hr打电话发offer了,希望大家也可以拿到自己心仪的offer
法力无边年:牛哇,你真是准备得充分,我对你没有嫉妒,都是实打实付出
查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务