Java面试题---第一阶段

1、java中++和--的前缀和后缀有什么区别

        在前,先自增/自减 ,再运算;

        在后,先运算,在自增/自减。

2、java的基本数据类型有哪些,分别占多少内存

        byte(1字节),short(2字节),int(4字节),long(8字节),float(4字节),double(8字节),

        boolean(4字  节),char(2字节)

3、java中有哪些循环,有什么区别

        for  while  do..while  如果已知循环次数,for循环比较适合,不知循环次数,用wilie循环

4、continue和break有什么区别

        前者是跳出本次循环,break是结束循环

5、short s = s + 1 和 short s += 1 有什么区别?

        前者s是short类型,后者是int类型,运算过程中自动强转为int类型,前者两次运算,后者一次运算

6、&&和&,||和|有什么区别

        & 逻辑与,&& 短语与,左右条件都成立才成立,&左边条件不符合适合也执行右边选项,&&与不会;
        | 逻辑或,|| 逻辑或,左右条件一边成立就成立,|左边条件不符合适合也执行右边选项,||不会;

7、讲讲遍历map的几种方法?

        普通的foreach循环,使用keySet()方法,遍历key
        把所有的键值对装入迭代器中,然后遍历迭代器
        分别得到key和value
        entrySet()方法

8、HashMap的存储原理?

        一维数组+单向链表+红黑树,通过key的hashcode计算下标,判断是否有数据,没有数据直接存放,有数据调用key的equals进行比较,如果相等新值覆盖旧值,不等放在后面,形成单向链表,链表长度超过8转化为红黑树

9、抽象类的接口的区别?

        a、接口使用interface关键字,抽象类使用abstract关键字
        b、接口只能有常量,抽象类可以有变量
        c、接口没有构造方法,抽象类有
        d、接口中抽象方法只能是public,抽象类可以是其他
        e、接口可以多实现,抽象类中只能单继承
         f、接口中有默认方法,抽象类没有
        g、抽象类有普通方法,接口只有默认方法,静态方法,抽象方法

10、HashMap\Hashtable\ConcurrentHashMap的区别

        a、hashmap是非线程安全的,hashtable线程安全的,concurrenthashmap是hashmap的子类,也是线程安全的
        b、hashmap性能高于hashtable,concurrenthashmap性能高于hashtable,hashtable锁整个集合,concurrenthashmap将集合分多段锁
        c、hashmap能接受空键跟值,hashtable不能

11、解释下事务的ACID、事务并发有哪些问题,隔离级别有哪些

        a、原子性:要不全部成功要不全部失败
              一致性:系统从一个一致性的状态转移到另一个一致性的状态
             隔离性:在事务提交之前,不允许把该事务对数据的任何改变提交给其他事务
             持久性:事务一旦提交,将永久保存在数据库中
        b、脏读,事务a读取到事务B已修改但未提交的事务
             丢失修改,两事务同时修改同一数据,后面事务覆盖前面
            不可重复读,一次事务多次读取数据的数据不一致
            幻读,一次事务多次读取数据多出不存在数据

12、== 和 equals 的区别是什么?

         ==如果比基础数据类型,比的是值,如果比引用数据类型,比的是地址
 .equals默认比值,string重写了.equals地址,比的是地址

13、java 中 IO 流分为几种?

        字节流跟字符流,字节流分为inputstream和outputstream,字符流分为reader流和writer流

14、Collection 和 Collections 有什么区别?

        前者是接口,后者是工具包

15、List、Set、Map 之间的区别是什么?

        list集合是有序的、可重复、可随机访问的,set集合是不可重复、不可随机访问的
        map集合是键值对结构,键不可重复,通过键访问

16、HashMap 和 Hashtable 有什么区别?

        a、hashMap和hashtable数据结构跟用法相似

        b、hashmap是非线程安全的,hashtable是线程安全的

        c、hashmap性能高与hashtable,hashmap能接受空键跟值,hasptable不能

17、ArrayList 和 LinkedList 的区别是什么?

        用法差不多,数据结构不同,优缺点不同,arraylist访问速度快,插入删除慢,linkedlist插入删除快,不需要移动数据,只用修改前后指针,访问慢,一个个遍历

18、迭代器 Iterator 是什么?

        Iterator接口主要方法bollean hasNext()判断是否有下一个   T next()返回当前数据  可迭代,用于返回迭代器foreach循环中的对象,必须实现该接口

19、ArrayList 和 Vector 的区别是什么?

        数据结构都是数组,使用方法相同
        ArrayList是非线程安全,Vector线程安全,方法上有synchronized关键字,ArrayList性能高于Vector Vector扩容是两倍,可以设置

20、什么是反射?

        反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

21、什么是 java 序列化?什么情况下需要序列化?

        将java对象转化为二进制数据或文件的过程

22、为什么要使用克隆?如何实现对象克隆?

        对象的拷贝需要使用克隆,如果想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要使用克隆
        浅克隆通过clone方法克隆出现的对象,实现Cloneable接口,重写克隆方法
        深克隆通过反序列化实现

23、深拷贝和浅拷贝区别是什么?

        浅克隆是增加了一个指针指向了已存在的地址,如果原地址改变,浅克隆出现的对象也随之改变
        深克隆是增加一个指针并申请一个新的内存,使这个增加的指针指向新的内存

24、throw 和 throws 的区别?

        throw抛出异常,用在方法中
        throws声明异常,向上抛出,不处理异常,交给上一级处理,一般用在方法声明上

25、常见的异常类有哪些?

runtimeExcetion,NullPointerExcetion,Excetion,ClassNotFoundExcetion,NumberFormatExcetion

26、重写和重载的区别

        重写放生在父子关系中,重载发生在同类中;
        重写要求方法名相同,参数列表相同,重载是方法名相同,参数列表\参数类型\参数数量不同

27、ArrayList的扩容机制

        当数据个数超过数组的初始长度后,ArrayList集合会自动扩容,新容量是原本容量的1.5呗,创建新数组,将原先的数据复制到新数组

28、hashmap是怎么扩容的,为什么是2的冥

        因为Hashmap计算存储位置时,使用了(n - 1) & hash。只有当容量n为2的幂次方,n-1的二进制会全为1,位运算时可以充分散列,避免不必要的哈希冲突,所以扩容必须2倍就是为了维持容量始终为2的幂次方。

29、讲一下对面向对象的了解

        面向对象是一种思想,一切皆为对象,贴近人的思维,便于大型项目的设计和管理。

        面向对象分为封装,继承,多态。

        封装: 封:信息隐藏,属性私有化,提供get和set对其访问,提高数据安全性。

                    装:将属性和方法包装到类中统一管理。

        继承:    子类继承父类的属性和方法。

        作用:提高代码复用性,维护性。

        应用:设计系统时,多个类出现重复的属性和方法,考虑定义父类中。

        多态:对于同一方法根据对象类型的不同进行不同实现,提高程序的灵活性,编写更通用的     代码,将父类引用指向子类对象。

         实现:1.子类继承父类,2.子类重写父类方法,3.子类对象赋值给父类引用。

         应用:将方法的参数定义为父类的类型,运行时传入子类的对象。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值