网易云别人的面经 我试着写出答案

针对这个面经https://www.nowcoder.net/discuss/35362?type=2&order=0&pos=17&page=2写一些部分答案

hashmap如何解决链表过长?红黑树有哪些特性?

链表过长就会转化为红黑树,提高查找效率。红黑树的特性 1. 根节点是黑色 2 每个红色节点的叶子节点都是黑色 3 从任意节点到每个叶子节点的路径中,都包含相同数目的黑色节点。

weakhashmap 的key是弱引用 如果gc肯定会被回收,同时weakhashmap保证对应的value也会被回收



java4中引用类型特点



tcp 如何实现流量控制

一开始接受端会告诉发送端接受窗口(接受缓存)大小,发送窗口(发送缓存)大小与接受窗口大小设为一样,通过接收端限制发送数据的速度,实现流量控制。



tcp 如何避免拥塞控制



慢开始 以指数形式增加发送端拥塞窗口的大小(1变成2 2变成4 4变成8.。。。)


当达到满开始门限的时候,发送端开始拥塞避免(线性增加拥塞窗口),当发送网络拥塞的时候,慢开始门限变为拥塞窗口的一般,拥塞窗口变为1,重现开始慢开始的过程。





快恢复   1.门限变为拥塞窗口一半  2. 拥塞窗口也变为自己的一半,从一半开始线性增加,与慢开始不同的是慢开始拥塞窗口重新从1开始指数型增加。

osi 七层模型



java 异常分类

Java异常的分类和类结构图

Java标准裤内建了一些通用的异常,这些类以Throwable为顶层父类。

Throwable又派生出Error类和Exception类。

错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。

异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

总体上我们根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try…catch…finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。如除0错误ArithmeticException,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等。

检查异常(checked exception):除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作(使用try…catch…finally或者throws)。在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。如SQLException , IOException等。

需要明确的是:检查和非检查是对于javac来说的,这样就很好理解和区分了。


非检查异常就是不处理(不用try catch) 也能javac通过,就是程序员代码写的有问题,包括error和 runtimeException.比如空指针异常,除以0异常,Integer.parseInt("abc") 参数非法异常,类型转换异常 (把hashmap转换为treemap).

检查异常 比如IOException 必须try catch 不然javac不会通过


在chrome打入badu.com 到显示页面 发生了什么?

参考https://www.zhihu.com/question/19649178/answer/244704978。


cms 垃圾回收器  g1垃圾回收器

  • CMS 收集器 CMS 收集器主要关注于系统停顿时间。CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从名称上可以得知,它使用的是标记-清除算法,同时它又是一个使用多线程并发回收的垃圾收集器。

    • CMS 工作时,主要步骤有:初始标记、并发标记、重新标记、并发清除和并发重置。其中初始标记和重新标记是独占系统资源的,而并发标记、并发清除和并发重置是可以和用户线程一起执行的。因此,从整体上来说,CMS 收集不是独占式的,它可以在应用程序运行过程中进行垃圾回收。

      根据标记-清除算法,初始标记、并发标记和重新标记都是为了标记出需要回收的对象。并发清理则是在标记完成后,正式回收垃圾对象;并发重置是指在垃圾回收完成后,重新初始化 CMS 数据结构和数据,为下一次垃圾回收做好准备。并发标记、并发清理和并发重置都是可以和应用程序线程一起执行的。

  • G1 收集器 G1 收集器是基于标记-压缩算法的。因此,它不会产生空间碎片,也没有必要在收集完成后,进行一次独占式的碎片整理工作。G1 收集器还可以进行非常精确的停顿控制。






                                                                                                                                                                   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值