2017年6月7日,天气晴转阴。心情还不错。

上周六参加了自己的第一场笔试,感觉很糟糕,主要是对基础知识掌握不扎实,现在把笔试中的部分问题总结归纳如下,便于以后查看。

1.GC是什么?为什么要GC?

GC(GarbageCollection)是垃圾回收机制。在Java中开发人员无法使用指针来自由的管理内存,GC是JVM对内存(实际上就是对象)进行管理的方式。java虚拟机可以自动判断出并收集到垃圾,但一般不会立即释放它们的内存空间,也可以在程序中使用System.gc()来强制垃圾回收,但是要注意的是,系统并不保证会立即进行释放内存。GC使得Java开发人员摆脱了繁琐的内存管理工作,让程序的开发更有效率。

GC基本原理:

Java的内存管理实际上就是对象的管理,其中包括对象的分配和释。

对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为"不可达的"。GC将负责回收所有"不可达"对象的内存空间。

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证 GC能够在不同平台实现,Java对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法,这给Java程序员的开发带来行多不确定性。

2.接口和抽象类的区别?

接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人、女人,这两个类(如果是类的话),他们的抽象类是人。说明:他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它。所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

(1)抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

(2)抽象类要被子类继承,接口要被子类实现。

(3)接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。

(4)接口里定义的变量只能是公共的静态常量,抽象类中的变量是普通变量。

(5)抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

(6)抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果。

(7)抽象类里可以没有抽象方法。

(8)如果一个类里有抽象方法,那么这个类只能是抽象类。

(9)抽象方法要被实现,所以不能是静态的,也不能是私有的。

(10)接口可继承接口,并可多继承接口,但类只能单根继承。

(11)抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。

(12)抽象类可以有具体的方法和属性, 接口只能有抽象方法和不可变常量。

(13)抽象类主要用来抽象类别,接口主要用来抽象功能。

(14)抽象类中,如果方法不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

3.为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以称之为半自动ORM映射工具。

小米Java笔试_JAVA后端笔试试题(一)相关推荐

  1. java面向对象笔试_Java面向对象笔试题.doc

    Java面向对象笔试题 <Java面向对象>内部测试-笔试试卷 1.下列对Java中的继承描述错误的说法是(). 子类至少有一个基类 子类可作为另一个子类的基类 子类可以通过this关键字 ...

  2. java常见笔试_Java 常见笔试题(2)

    Java 笔试题 (测试题目答题时间60分钟,请独立完成) 一. 选择题 单选题(10) 1. 给出以下代码,请问该程序的运行结果是什么?() class Example { public stati ...

  3. java基础笔试_java基础笔试题

    Java基础知识测试 共40道选择题,每题2.5分.多选题有错则全错,全对才满分. 单选题: 1. 下列哪个声明是错误的?(b) A. int i=10; B. float f=1.1; C. dou ...

  4. java练习_Java基础笔试练习(一)

    Java基础笔试练习(一) 1. 若在某一个类定义中定义有如下的方法: abstract void performDial( ); 该方法属于() ? A.本地方法 B.最终方法 C.静态方法 D.抽 ...

  5. 面试题java存储过程_java中级面试题的考点

    在我们对java有一定的基础学习后,能力再往上升一些就是中级.对于初级和中级来说,后者除了对于基础java内容把握能力强外,在一些知识点的比较分析和原理解剖上有所理解能力.本篇就java中级面试题进行 ...

  6. websocket java 测试_Java后端WebSocket的Tomcat实现

    1 package me.gacl.websocket; 2 3 import java.io.IOException; 4 import java.util.concurrent.CopyOnWri ...

  7. ie 访问 java接口_Java基础面试题 库(1~10)

    1.下列哪个说法是正确的() A    ConcurrentHashMap使用synchronized关键字保证线程安全 B    HashMap实现了Collction接口 C    Array.a ...

  8. 2019小米java面试题,2020年小米java面试题分享

    下面要给大家带来的是2020年的小米java面试题分享,主要包括了一面二面的面试题,以及面试者的一些相关回答,一起来了解一下吧. 面试题(一面) 1.谈一下数据库索引 数据库索引是为了让查询数据效率更 ...

  9. 【机密】数字IC后端笔试面试题库(附知识星球活动)

    [机密]数字IC后端笔试面试题库(附知识星球活动) 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 最近很多公司的校招都陆续开始了,不知道今年应届生的小伙伴 ...

最新文章

  1. c语言文件 加载内存吗,把文件中的数据加载到内存进行查找C语言实现.docx
  2. LCD Backlight circuit
  3. 一些.net持久化框架的例子
  4. html日期写入数据库,javascript – 在HTML5 Web SQL数据库中对日期时间进行排序
  5. qstring转qchar_Qt 对QString操作
  6. Git使用中的一些奇技淫巧
  7. PC智能自媒体高效运营管理工具
  8. 吊炸天!一行命令快速部署大规模K8S集群!!!
  9. 数据结构专题(一):1.2.求元素个数,取元素与定位
  10. 如何用python完成基本统计信息计算_如何用python计算基本统计值?
  11. android 模拟 ns手柄,Joy-Con Droid可将Android智能机变身为任天堂Switch的手柄
  12. 门诊电子处方软件免费版本2.3
  13. mysql execute stmt_mysql_stmt_execute()--MySql数据库
  14. Win10[应用商店]损坏,修复方法之一
  15. 大学生职业规划8000字_大一职业规划书8000字
  16. R语言基础数据分析—单因素方差分析
  17. thingsboard
  18. Flutter-常见问题
  19. 教大家如何用一行代码打造下载神器!下载全网视频、音频、图像!太牛了!
  20. ApacheCN 翻译活动进度公告 2019.4.15

热门文章

  1. Percona Xtrabackup安装
  2. Nexperia |超低电容 ESD 保护二极管保护汽车数据接口基础半导体器件
  3. 鸿蒙os系统测试版照片,鸿蒙OS正式发布:荣耀智慧屏首发,一起来体验鸿蒙OS吧...
  4. Hystrix实现熔断降级
  5. Spring框架究竟是什么
  6. word文档找不到smartart_教大家word中smartart在哪找
  7. 正益工作能担起PaaS+SaaS的未来探索吗?
  8. 其他:Pycharm 常用快捷键
  9. 读《CSS禅意花园》 有感
  10. 元宇宙价值、风险与展望