2.21面试总结

说一说final和static

final表示常量,一旦创建不可改变

final修饰的类不可继承

final修饰的方法不能重写

final修饰的成员变量必须初始化,赋值后不能再重新赋值。(基本数据类型其值不可变,引用数据类型其引用不可变)

static表示静态或全局,可以用类名.静态属性/方法名 直接调用

static修饰的属性只会在类加载时被初始化,只会创建一次,可以重新赋值

static方法中不能用this,super,不能被重写,不能是抽象方法

static代码块只有在类加载时会执行一次

StringBuffer和StringBuilder区别

StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,锁的获取和释放会带来开销,所以性能:StringBuffer<StringBuilder

String线程安全吗

安全。String是final类不可继承,其变量char[]及相关信息都是final的,所以在内存中的值始终是固定的,可以被多个线程共享,不用担心被修改

比较对象用equals

一般会重写equals方法,比较对象中变量的值。数据库中获取到的对象和程序中的对象,他们的变量值相等,但是地址不相等,所以用集合时需要重写

equals方法和hashCode方法结果不一定相同,因为都可以被重写。常规规定:equals相等hashCode必须相等,所以重写equals也要重写hashCode。equals不相等,hashCode尽量也不相等(防止hash冲突,可以提高哈希表性能)

HashMap为什么要用数据+链表结构?

数组可以实现快速查找,链表可以实现快速插入删除(元素个数到8时转为红黑树提高查找性能)

内存泄漏是什么?写一个例子

内存泄漏是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放(无法垃圾回收)

静态集合引用的对象不会被释放

单例模式

数据连接、IO、Socket等连接

改变哈希值

...

死锁条件

死锁是指多个进程循环等待它方占有的资源而无限期地僵持下去的局面

(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

http和https的区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三次握手四次挥手,为什么?

答案参考百度安全验证

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值