相关概念

面向对象的三个特征

封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象.

多态的好处

允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:

可替换性:多态对已存在代码具有可替换性.

可扩充性:增加新的子类不影响已经存在的类结构.

接口性:多态是超累通过方法签名,想子类提供一个公共接口,由子类来完善或者重写它来实现的.

灵活性:

简化性:

代码中如何实现多态

实现多态主要有以下三种方式: 1. 接口实现 2. 继承父类重写方法 3. 同一类中进行方法重载

虚拟机是如何实现多态的

动态绑定技术(dynamic binding),执行期间判断所引用对象的实际类型,根据实际类型调用对应的方法.

接口的意义

接口的意义用三个词就可以概括:规范,扩展,回调.

抽象类的意义

抽象类的意义可以用三句话来概括:

为其他子类提供一个公共的类型

封装子类中重复定义的内容

定义抽象方法,子类虽然有不同的实现,但是定义时一致的 ## 接口和抽象类的区别

比较抽象类接口

默认方法抽象类可以有默认的方法实现,java 8之前,接口中不存在方法的实现.

实现方式子类使用extends关键字来继承抽象类.如果子类不是抽象类,子类需要提供抽象类中所声明方法的实现.子类使用implements来实现接口,需要提供接口中所有声明的实现.

构造器抽象类中可以有构造器,接口中不能

和正常类区别抽象类不能被实例化接口则是完全不同的类型

访问修饰符抽象方法可以有public,protected和default等修饰接口默认是public,不能使用其他修饰符

多继承一个子类只能存在一个父类一个子类可以存在多个接口

添加新方法想抽象类中添加新方法,可以提供默认的实现,因此可以不修改子类现有的代码如果往接口中添加新方法,则子类中需要实现该方法.

父类的静态方法能否被子类重写

不能.子类继承父类后,有相同的静态方法和非静态,这是非静态方法覆盖父类中的方法(即方法重写),父类的该静态方法被隐藏(如果对象是父类则调用该隐藏的方法),另外子类可集成父类的静态与非静态方法,至于方法重载我觉得它其中一要素就是在同一类中,不能说父类中的什么方法与子类里的什么方法是方法重载的体现.

什么是不可变对象

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。

能否创建一个包含可变对象的不可变对象?

当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用.

java 创建对象的几种方式

采用new

通过反射

采用clone

通过序列化机制

前2者都需要显式地调用构造方法. 造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用.

switch中能否使用string做参数

在idk 1.7之前,switch只能支持byte,short,char,int或者其对应的封装类以及Enum类型。从idk 1.7之后switch开始支持String.

Object中有哪些公共方法?

equals()

clone()

getClass()

notify(),notifyAll(),wait()

java当中的四种引用

强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上:

强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象

软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。

弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象

虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。

好了同学们,我能介绍的也都全部介绍完给你们了,如果下获得更多JAVA教学资源,可以选择来我们这里共同交流,群:240448376,很多大神在这里切磋学习,不懂可以直接问,晚上还有大牛免费直播教学。

注:加群要求

1、具有一定工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加,有些应届生和实习生也可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

PS:现在主要讲解的内容是(反射原理、枚举原理与应用、注解原理、常用设计模式、正规表达式高级应用、JAVA操作Office原理详解、JAVA图像处理技术,等多个知识点的详解和实战)

6.小号或者小白之类加群一律不给过,谢谢。

最后,每一位读到这里的网友,感谢你们能耐心地看完。觉得对你有帮助可以给个喜欢!希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步

转载于:https://blog.51cto.com/13259313/1961512

JAVA面试必备的知识宝典(一)相关推荐

  1. Java面试必备技能

    前言 又到了一年一度的面试高峰期,想当年这会,博主也是疯狂的投简历,可能是运气比较好,一面即过,哈哈哈哈,在这里,给大家总结一下,面试互联网公司必会的一些技能,这里只针对刚毕业的小伙伴,高手勿喷. J ...

  2. java面试必备小知识_Java面试应该准备的知识点系列一

    当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿到一个理想的offer,除了运气,基本功也要足够的扎实,希望下面的面试经验能给你们能够提供一些帮助. 项目经验 面试官在一开始 ...

  3. Java面试必备的集合源码详解,砥砺前行!

    一面(一个小时左右) 算法:写冒泡排序,问如何优化,简单讲了快排和堆排序的原理 数据库:解释左连接 数据库第一第二第三范式,数据库死锁 linux:怎么查看内存:怎么查看进程,ps命令一般在什么情况下 ...

  4. 悄悄告诉你Java面试必备技能是什么?

    面试之前,大家是不是都要去刷一波面试题,就像大学期末考试前3天开始猛背书.有很多人就是在网上搜到什么就看什么,就像你期末考试,却不知道考试重点什么,临时抱佛脚,它想有用,但你能记住多少呢?最后还是成为 ...

  5. JAVA基础总结----JAVA面试必备

    java语法基础:   1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名 ...

  6. 史上最全Java面试题,Java面试必备

    我自己前前后后加起来总共应该参加了不下四五十次的面试,另外参考网上的一些面试题,整理了这个面试题库,希望可以帮助到大家. 篇幅有限,我在上千道面试题中从各技术方向选出15道,分享给大家 可以关注公众号 ...

  7. Java 面试必备 | 7 个实验带你精通 JVM 性能调优!

    近些年来,无论是使用规模.开发者人数,还是技术生态成熟度.工具的丰富程度,Java 都是后端语言中当之无愧的王者,工资自然也是不菲

  8. Java面试必备240个知识点

    Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理和访问机制,避免大部分内存泄漏和指 ...

  9. Java面试必备八股文

    文章目录 一.Java基础篇 1.1)Java有哪几种数据类型 1.2)JVM.JRE和JDK的关系 1.3)Switch支持的数据类型? 1.4)为什么float=3.4报错 1.5)final 有 ...

最新文章

  1. 【译】表变量和临时表的比较(转)
  2. 计算器,利用灰度图的顶帽扣出数字
  3. IT规划的企业应用实践(10)研究的范围和限制
  4. 解密优酷智能生产技术,看 AI 赋能内容数字化
  5. 使用 bash 脚本把 AWS EC2 数据备份到 S3
  6. 正式请求:Could you...? May I...? _52
  7. 【恋上数据结构】归并排序 + LeetCode真题
  8. IE8浏览器跨域接口访问异常的解决办法
  9. XDF怎么转换成PDF
  10. 空间线与空间平面之间的夹角关系
  11. 利用R语言实现反正弦转换(arcsine-transformed)
  12. win10系统bug:开机自动打开空白word文档
  13. 基于java的自驾游自助游旅游网站
  14. mongodb数据库添加用户名密码以及忘记密码重置操作
  15. 如何实现直播秒开技术?
  16. python logging配置时间或大小轮转
  17. vb.net操作数据库之ACCESS(1)
  18. PHP微勤,家E课 黄微勤 小学一年级作文二年级作文【写句子】百度...
  19. 赛门铁克拆分后蜕变:未来不只是“防病毒”
  20. 基于蒙特卡罗树搜索的智能行程规划系统设计(二)一个简单的DEMO

热门文章

  1. GDCM:gdcm::Reader的测试程序
  2. VTK:图片之ImageLaplacian
  3. VTK:图片之ImageMedian3D
  4. OpenCV calcOpticalFlowPyrLK用法的实例(附完整代码)
  5. QT集成QML和JavaScript
  6. C++求tree树的高度(附完整源码)
  7. QT的QDnsLookup类的使用
  8. C++11智能指针shared_ptr、weak_ptr、unique_ptr用法
  9. c语言用hash方式数组去重,js数组去重的hash方法
  10. pcb 布线电容 影响延时_信号在PCB走线中传输时延