面试笔试题3

1.jdk和jre的区别?
jdk是java开发工具包,里面包含了jre和java基础类库以及java开发工具。
而jre是java运行环境,里面包括了jvm虚拟机
2.==和equals的区别是什么?

  1. ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同
  2. ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
  3. ==指引用是否相同, equals()指的是值是否相同

3.final在java中有什么作用?

  1. final修饰一个类时,表明这个类不能被继承
  2. final修饰的方法不能被重写
  3. final修饰的变量不能被改变

4.java中的Math.round(-1.5)等于多少?
Math.round(1.5)的返回值是2,Math.round(-1.5)的返回值是-1。四舍五入的原理是在参数上加0.5然后做向下取整。
5.String属于基础数据类型吗?
不是,是被final修饰的java类。
6.Java中操作字符串都有哪些类?他们之间有什么区别?
String、Stringbuffer、Stringbuild;
区别:string类型的字符串在内容在增加的过程中是重新开辟一个新的堆内存空间,所以说String字符串的改变其实是创建了多个对象,也就是改变堆内存空间地址的指向。
而Stringbuffer和Stringbuilder则不会创建新的对象。且Stringbuffer线程安全,但是效率稍低,而Stringbuilder线程不安全,效率较高。但是推荐使用Stringbuffer
7.String str = “i”; 与 String str = new String(“i”); 一样吗?
为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“i”)方式,则会被分到堆内存中。
8.如何将字符串反转?
利用 StringBuffer 或 StringBuilder 的 reverse 成员方法
将String打散为char数组,循环拼接。
9.简述泛型的上界和下界?
上界 <? extend Fruit> 上界的list只能get,不能add(确切地说不能add出除null之外的对象,包括Object)
下界 <? super Apple> 只能add,不能get
10.String类的常用方法都有哪些?
Strring.length() 获取索引
String.indexof()返回的是首次搜索字符出现的索引;
String.lastindexof()返回的是搜索字符最后出现的索引;
String.charAt()可以获取指定索引处的字符,返回的字符的索引
11.普通类和抽象类有哪些区别?
普通类中不可含有抽象方法,可以被实例化;
抽象类,则抽象类中所有的方法自动被认为是抽象方法,没有实现过程,不可被实例化;抽象类的子类,除非也是抽象类,否则必须实现该抽象类声明的方法
12.Java中IO流分为几种?
(1)按照数据的流向:
输入流、输出流
(2)按照流数据的格式:
字符流、字节流
(3)按照流数据的包装过程:
节点流(低级流)、处理流(高级流)
13.Java容器都有哪些?
List,Map,Set ,baiCollection ,List ,LinkedList ,ArrayList ,Vector ,Stack ,Set , Map ,Hashtable ,HashMap ,WeakHashMap
LinkedList :其数据结构采用的是链表,此种结构的优势是删除和添加的效率很高,但随机访问元素时效率较ArrayList类低。
ArrayList:其数据结构采用的是线性表,此种结构的优势是访问和查询十分方便,但添加和删除的时候效率很低。
HashSet: Set类不允许其中存在重复的元素(集),无法添加一个重复的元素(Set中已经存在)。HashSet利用Hash函数进行了查询效率上的优化,其contain()方法经常被使用,以用于判断相关元素是否已经被添加过。
HashMap: 提供了key-value的键值对数据存储机制,可以十分方便的通过键值查找相应的元素,而且通过Hash散列机制,查找十分的方便。
14.HashMap和Hashtable有什么区别?
1、Hashtable是早期提供的接口,HashMap是新版JDK提供的接口。
2、Hashtable继承Dictionary类,HashMap实现Map接口。
3、Hashtable线程安全,HashMap线程非安全。
4、Hashtable不允许null值,HashMap允许null值。
15.简述重写和重载的区别?
重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
16.表单提交Get和post方式的区别?

  1. get是从服务器上获取数据,post是向服务器传送数据
  2. get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,在url中可以看到。post是通过HTTP的post机制,将表单内各个字段与其内容放置在HTMLheader中一起传送到action属性所指的url地址,用户是看不到这个过程的。
  3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
  4. get传送的数据量较小,不能大于2KB,post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB
  5. get安全性非常低,post安全性较高

17.解释内存中栈(stack)、堆(heap)和静态区(static area)的用法?
堆区:专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中)

1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.
3.一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
栈区:对象实例在Heap 中分配好以后,需要在Stack中保存一个4字节的Heap内存地址,用来定位该对象实例在Heap 中的位置,便于找到该对象实例。
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
4.由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.
静态区/方法区:
1.方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
3.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
18.构造器(constructor)是否可以被重写(override)?
构造器(构造方法)Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload(不
同参数即可)。
每一个类必须有自己的构造函数,在创建对象时自动调用,如果添加有参构造函数后,默认无
参构造函数则被覆盖。子类不会覆盖父类的构造函数,但是在创建子类对象的时候,会自动调用父
类构造函数。
19.列出一些常见的运行时异常?

ArithmeticException(算术异常)

  • ClassCastException (类转换异常)
  • IllegalArgumentException (非法参数异常)
  • IndexOutOfBoundsException (下标越界异常)
  • NullPointerException (空指针异常)
  • SecurityException (安全异常)
    20.GC是什么?为什么要有GC?
    GC就是垃圾回收,java这种语言是动态分配内存大小的,并且依靠垃圾回收机制来完成对分配内存空间的回收,从而来避免内存溢出的问题,也在一定程度上降低了程序员工作的复杂度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值