首页 > 代码库 > java面试题-java基础

java面试题-java基础

1.1java与其他语言相比,有什么优点和缺点?

  首先,java与c、c++相比,java是一种完全的面对对象的语言,虽然他的底层(运行时库)使用c语言开发的,可是并不依赖于c,因为java的运行是在运行时库的支持下进行的,所以所以运行效率可以更接近底层的c、c++来说效率会有所影响,不过java的类库采用很好的设计理念,非常好用,页非常实用,已经成为业界的一种标准的开发语言,他的跨平台的特性收到开发者的青睐,只需要开发一次就能在所有安装了java运行时库的环境中运行。

  其次,java和c#相比,c#是微软开发的一种编程语言,语法类似java,几乎就是java的翻版,运行原理和java也相似,也是通过运行时库的支持运行,不过支持的平台有限,java几乎被所有的平台支持,二c#目前只能被windows和linu西支持,windows下的支持当然是微软自己开发的,二linux下的支持则是由mono支持,实际上,mono也是吧c#应用转化为java应用而已,所以本质上,c#仍然只是被微软自己的操作系统支持。应用平台受限,是最大的缺点。

1.2请回答几个名词的意思,jvm,jdk,jre,javase,javaee,javame,gc

  jvm:java虚拟机,java virtual machine的缩写,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现,java虚拟机有自己完善的硬体架构,如处理器,堆栈,寄存器等,还具有相应的指令系统,jvm屏蔽于具体操作系统平台相关的信息,是的java程序只生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。

  jdk:java开发工具包,java development kit的缩写。jdk是整个java的核心,包括了java运行环境。java工具和java核心类库。

  jre:java运行环境,java runtime environment的缩写,运行java程序必须的环境集合,包含jvm标准实现和java和兴类库。

  javase:java standardedition,标准版,是我们常用的一个版本,从jdk1.5开始改名为javase,主要用于桌面应用软件的编程;

  javaee;java enterprise edition,企业版,javaee是将ee的一个新名称,主要用于分布式网络程序的开发。

  me:java micro editon。机顶盒,移动电话和pda之类嵌入式消费电子设备提供的java语言平台,包括虚拟机和一系列标准化的javaapi。

  gc:垃圾回收,garbage collection 的缩写。当java虚拟机发现内存紧张时,会自动清理无用对象,(没有应用到的对象)占用的内存空间。

1.3jvm能有几个实例

  每个java程序对应一个jvm实例,当一个java程序运行时就创建一个jvm实例,因此jvm实例的个数取决于同事执行的程序的个数。

1.4java跨平台是如何实现的。

  java是利用jvm实现的。java源代码,经过java编译器变异成java字节码。class,执行java字节码,javaz字节经过jvm解释为具体平台的具体指令并执行,不同平台有不同的jvm,主流平台都提供了jvm,所以java字节码可以再主流平台上能够解释执行。也就是说java字节码是跨平台的。

1.5 简述tcp,udp协议的区别

  tcp:面向连接 可靠 传输大量的数据 速度慢   udp:面向非连接 不可靠 少量的数据 快

1.6 类的命名规则,方法的名米规则,变量的命名,包,常量的命名规范,

  在java中,首先符合java标识符的命名规则:

  1 可以以字母,数字,下划线,和$组成

  2 首字母不能以数字开头  3 中文可以作为变量名,但是不用  4 java区分大小写   5  不能使用java保留的关键字

  其次,类命名:首字母大写,如何多个字母合成,每个单词首字母都要大写

  方法命名:首字母小写,中间的每个单词首字母都要大写;

  变量的:于方法的一样;

  包的:java包的名字都是小写单词组成;一般以互联网上的域名作为包的唯一前缀。

  常量:基本数据类型的常量名犬大写,如果多个单词构成,可以用写划线隔开;

1.7 java共有几种注释的方法

  三种   单行注释  多行注释  文档注释

1.8  如何增加代码的清晰度和可观;

  代码添加注释  命名规范  缩进排版规范  添加异常处理 使用测试类和测试方法

1.9  void 和 null,有你什么区别;

  void用于无返回值的方法中    null表示对象,变量没有被实例化,没有志向具体的内存地址

1.10 java结构化程序设计有哪三种基本流程,分别对应那些语句

  顺序,选择,循环,其中,顺序表示程序中的个操作是安装出现的先后顺序执行的,选择对应if witch,循环对应java语言中的for  dowhile 以及while

1.11 &he &&区别

  &运算时吧逻辑表达式全部计算完,&&运算具有短路计算功能,所谓短路计算,是指系统从左向右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况下,则计算过程终止

1.12  java中八大数据类型和字节长度

  byte  一字节 八位 存储一个字节数据  short 2字节 16位  兼容性考虑 一般不用   int 4字节  32位 存储整数  long 8字节 64位  存储长整数  float 四字节 32位 存储浮点数

  double 8字节 64位 存储双精度浮点数  char  2字节 16位 存储一个字符  boolean 一字节  8位  存储逻辑变量 true false

1.13  jvm加载class文件的原理机制

  jvm中类的加载是由classloader和他的子类来实现,java classloader是一个重要java 运行时系统组件,他负责在运行时查找和装入类文件中的类

1.15 什么是进程

  进程是操作系统结构的基础,是一个计算机中正在运行的程序实例,可分配给处理器并由处理器执行的一个实体,由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

1.16 什么是垃圾回收,什么时候出发,如何降低垃圾回收出发频率,他能保证程序有足够的可用内存;

  1 垃圾回收gc是java语言的一个重要特性,作用是释放不在被使用的内存

  2 垃圾回收由系统进行管理,在系统认为需要的时候自动启动一个线程来惊醒处理;

  3 尽量减少垃圾内存  也及时新建对象的数量  可以降低垃圾回收的频率

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

1.17 java内存泄漏

  两种情况  1  堆中分配的内存,在没有将其释放的时候,就把所有能访问这块内存的方式都删掉  2  在内存对象已经不需要的时候 ,还保留这块内存和他的访问方式

1.18  java源文件中是否可以包括多个类,有什么限制

  一个java源文件可以包含多个类,有一个public的话  必须和这个名字相同,没有public的话  用什么都可以的  最好一个java源文件包含一个java类

1.18  列出自己常用的jdk包

  1.java。lang   这个包包含了jdk提供的基础类。如String扥都在这里面  这个包是唯一一个不用导入就可以使用的包

  2.java.io  包含了于 输入输出相关的类  如文件操作等

  3  java。net  包含了与网络相关的类,比如url  urlconnection等

  4  javautil  这个是系统辅助类  特别是集合类  collection  list  map

  5  java sql  数据库操作 的类  connection  statement resultset

1.19  简单说明什么是递归  什么情况下会使用  并使用java实现

  1 递归作为一种算法在程序设计语言中的广泛应用,是函数  过程  子程序在运行过程中直接或间接调用自身 二产生的重入现象

  2  递归算法一般用于解决三类问题

  数据的定义按递归定义的    问题揭发按递归算法实现的   数据的结构形式按递归定义的

1.20  java中的排序

  插入排序  交换排序  选择排序  归并排序  分配排序

java面试题-java基础