博客
关于我
Java面试基础(一)JDK、JVM、规范、内存泄露
阅读量:113 次
发布时间:2019-02-27

本文共 2161 字,大约阅读时间需要 7 分钟。

一、 你认为JAVA语言与其他语言相比,有什么缺点和优点?

        答:  可以与C和C++对比,还有C#。

       1) java与c语言和c++相比

          java是一种面向对象的语言,虽然它的底层(运行时库)是由C语言开发的,可不完全依赖于C。因为JAVA运行时是依赖于JAVA的运行时库的支持下进行的,所以从运行效率来讲,java的效率比更接近底层的C和C++要差点。不过JAVA的设计理念是非常好的,程序只需要开发一次,即可在跨平台的JAVA虚拟机上运行。

      2) java 与c#相比

       C#也是面向对象的,这一点和JAVA相似,但是C#目前只支持windows和linux平台,而且linux支持则有mono支持,mono实际上也是把C#转化为JAVA的应用而已,本质上只被windows操作系统支持,应用平台的限制太大。java几乎所有平台能够被支持。

 

 

二、 请解释JVM、JRE、JDK?

   答:  JVM:   Java虚拟机。是一个虚构出来的计算机,它有自己的处理器、堆栈、寄存器,能够使Java程序以字节码的形式在上面运行,通过JVM可以让Java程序在不同平台上运行。

        JRE: Java的运行环境,包括JVM标准实现以及核心类库。

        JDK:  Java开发工具集,包含JRE、Java工具以及基础类库。

 

 

三、JVM能有几个实例?

      答:  JVM可以有多个实例。一个Java程序对应一个JVM实例,因此JVM的实例个数取决于Java程序运行的个数。

 

 

四、Java跨平台是如何实现的?

    答 :  Java跨平台是通过JVM实现的。  Java源代码通过Java编译器将.java文件编译成.class文件,执行Java字节码。Java字节码通过JVM解释为具体平台的指令,并执行,不同的平台有不同的JVM,而一些的主流的平台都提供了JVM,所以Java字节码能够在主流平台上解释执行。所以说Jave的跨平台是通过JVM实现的。

 

 

五、 阐述一下Java中的变量的命名规则、包的命名规则、类的命名规则、方法的命名规则以及常量的命名规范?

  答: 在Java中,类的命名、方法的命名、变量的命名、包名的命名以及常量的命名首先必须符合Java标识符的命名规则, 规则如下:

1)可以以字母、 数字、“_”和“$”符组成;

2)首字符不能以数字开头 ;

3) 中文可以作为变量名,但不提倡使用;

4 ) Java 大小写敏感,命名变量时需要注意;

5)不能使用Java保留字( - -些Java语言规定好的,有特殊含义的字符),如: int、f、 for、 break等。

其次,类的命名、方法的命名、变量的命名、包名的命名以及常量的命名要符合如下规范:

1 )类命名规范:首字母大写,如果由多个单词合成一个类名,要求每个单词的首字母也要大写,如: HelloWorld.

2)方法命名规范: 首字母小写,中间的每个单词的首字母都要大写,如: getName。

3)变量的命名规范:变量的命名规范和方法一样,首字母小写,中间的每个单词的首字母都要大写,如: name.

4 )包的命名规范: Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java 包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。例如:“com.sun.swt" ,一般公司命名会以“com.公司名项目名.模块名“开头,所以会长一点点 ,如com.hand.hcf.app.expense

5)常 量的命名规范:基本数据类型的常量名为全大写,如果是由多个单词构成,可以用下划线隔开,如: WEEK_ OF_ MONTH。

 

 

六、如何增加代码的清晰度和可观性?

答:

增加代码的清晰度和可观性常用的方式如下:

1)给代码添加注释。

2)类名包名等命名规范化。

3)缩进排版规范。

4)添加异常的处理。

5)使用测试类和测试方法。

 

七、 什么是垃圾回收?什么时候触发垃圾回收?如何降低回收的频率?它能够保证足够的可用内存嘛?

答: 

    1.垃圾回收是java虚拟机的一个特性,主要的作用是用来回收系统中没有的内存。

    2. 当有没有任何引用指向某对象时,该对象就会被垃圾回收器回收,另外系统会在需要的时候启动一个线程来进行垃圾回收。

    3. 尽量减少新建对象的数量。

    4. 垃圾回收机制无法保证有足够的内存。

 

八、 Java中会存在内存泄露嘛?请简单描述?

   答: 以下2种情况会存在内存泄露: 

       内存泄露主要含2种情况:  第一种情况是堆中分配的内存,在没有将其释放掉的时候,就删除了所有访问这块内存的方式(引用)。第二种是内存对象已经不需要的时候,仍然保留对该对象的引用。  例:

List list =new ArrayList(10);for(int i=0;i<100;i++){ Object o=new Object(); list.add(o);   o=null;}

   对象o已经不需要了,但是list仍然引用它,垃圾回收器就不能回收它,所以会存在内存泄露。

 

转载地址:http://dggf.baihongyu.com/

你可能感兴趣的文章
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>