我的十次面试挑战(第一次)

斐波那契数列

什么是斐波那契数列,1,1,2,3,5,8,13…这样一个数列就是斐波那契数列,求第n项的值。

public static int f2(int n) {
    if(n < 1) {
        return 0;
    }else if(n == 1 || n == 2) {
        return 1;
    }
    int res = 1;
    int pre = 1;
    int temp = 0;
    for(int i = 3; i < n; i++) {
        temp = res;
        res = pre + res;
        pre  = temp;
    }
    return res;

tomcat假死

1、应用本身程序的问题,造成死锁。
2、load 太高,已经超出服务的极限
3、jvm GC 时间过长,导致应用暂停 因为出错项目里面没有打出GC的处理情况,所以不确定此原因是否也是我项目tomcat假死的原因之一。
4、大量tcp 连接 CLOSE_WAIT netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ TIME_WAIT 48 CLOSE_WAIT 2228 ESTABLISHED 86

hashmap相关

hashmap优点:快速储存,快速查找,可伸缩
默认16长度的数组
有hash冲突使用单向链表

hash冲突:不同对象算出数组下标是相同的。
解决办法:加入下个next记录下一个节点

扩容因子0.75,当储存比例达到0.75原长度时,数组扩容2倍

链表长度大于8时,链表变红黑树
红黑树小于6时,变回单向链表

hashmap线程不安全的原因是
jdk 1.7 在多线程情况下,数组扩容时,使用的transfer函数对链表使用头插发,导致链表死循环
jdk 1.8中使用尾插法,但是会导致值覆盖

concureenthashmpa采用分段锁,粒度更高

elasticsearch

index–type–mapping–document–field

bool 组和查询条件
must 必须匹配
must not 必须不匹配
should 满足条件后会增加权重
filter 过滤条件

普通索引:根据文档查找关键字 类似与Linux grep或者word find查找
倒排缩影:通过关键字查找文档

rabbitmq

Exchange 交换机类型
direct 发布与订阅routing-key完全匹配
fanout 广播
topic 主题规则匹配

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章