基础知识(一)

1.什么是面向过程编程?

    性能比面向对象高,类调用时需要实例化,开销大,耗资源。

2.构造器Constructor可否重写(override)

    不能重写,不能用static修改构造器,只能用static,protected,private修饰,且不能有返回语句。

3.是否可继承String类

    String类是final类,不可以继承。

4.hashCode()和equals()关系

    equals()相等,hashCode()必相等

    hashCode()相等,equals()可能不相等

5.泛型

    创建集合时就指定集合元素的类型,该集合只能存指定类型的元素,避免强制转换

6.String、StringBuffer、StringBuilder的区别

    可变性:String类使用字符数组保存字符串,private final char value[],String对象不可变。

                    StringBuffer和StringBuilder都继承自AbstractStringBuilder类,AbstractStringBuilder也使用

                    字符数组,char[] value,对象可变

    线程安全:String对象不可变,是常量,安全。StringBuffer加同步锁,线程安全,StringBuilder不安全

    性能:每次String类改变,合成新String对象,指针指向新对象。StringBuffer每次对本身操作,

                StringBuilder更快

                    HashMap相关

1.HashMap原理

    是数组、链表的结合体,底层是数组,每一项又是一个链表,由Entry<k,v>实现,拥有指向下一元素的

    引用。

2.两个对象的hashCode相同会发生什么?

    HashMap抛出异常或者不会存储,如果equals()不同,hashCode()相同,bucket位置相同,

    “碰撞”会发生。

3.两个key的hashCode相同,怎样取值?

    调用get()时用key的hashCode()找到bucket位置然后获取,两个对象在同一个bucket时,遍历LinkedList

    找到值对象。

4.HashMap超过负载因子怎么办?

    负载因子默认0.75,超过会创建两倍大的bucket数组。

7.如何停止线程?

    1.退出标志,run()后线程终止

    2.使用stop()

    3.使用interrupt()

8.什么是线程安全?

    多线程访问同一代码,不会产生不确定的结果。

9.如何保证线程安全?

    1.非线程安全的代码加锁控制

    2.用线程安全的类

    3.多线程并发下,线程共享变量改为方法级的局部变量

10.synchronized和Lock区别?

    相同:Lock可完成synchronized所有功能

    异:Lock比synchronized更精确语义和性能,Lock通过代码实现,synchronized通过JVM实现,synchronized通过JVM实现,synchronized自动释放锁,Lock是手动释放,且必须在finally中释放。tryLock可非阻塞式去拿锁,Lock有局限,针对块范围。synchronized可锁块、对象、类。

11.序列化与反序列化?

    把对象转换为字节序列的过程为序列化。‘

    用途:1.把对象字节序列永久存到硬盘

                2.网络上传送对象的字节序列

12.常见的序列化协议?

    Protobuf、Thrift、Hessian、Kryo

13.内存溢出和内存泄漏区别?

    内存溢出:指程序申请内存时,没有足够的空间使用

    内存泄漏:分配出去的内存不再使用,但也无法回收

14.xml解析模式?

1.DOM        2.SAX        3.JDOM        4.DOM4J(性能最好)

转载于:https://my.oschina.net/cannianguaishushu/blog/740364

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值