Java ALIBB面试题库

题库

  1. HashMap 源码解读(TreeMap. LinkedHashMap) 
    hashmap 允许 空值 和 空key, 非线程安全的,不保证存储顺序 
    初始容量 和 负载因子(0.75) 
    结构化改变,增加或者删除必须是同步的, 单纯的改变值不需要同步 
    获取遍历器的时候,多线程的结构的改变,不是通过遍历器的remove方法的结构改变,都是在遍历器的时候 抛出异常,但是这个不能保证,只能是测试使用 
    根据hashcode排序,相同comparable的根据comparable排序 
    treeNode是正常节点的2倍 . 
    树节点往往是根节点, iterator.remove才可能不是根节点,但是可以根据treenode.root恢复 
    容量必须是2的倍数,默认为16,最大为2^30 
    一个桶的元素>=8 就从list 变为 tree,<=6就从tree变为list 
    桶数量到64的时候里面的桶才会被树形化 
    4*8的元素在同一个节点的时候,会被重新更新size大小 
    hashBinNode hashCode是key和value的异或
  2. heap 和 stack 的区别 
    stack: 先进后出 
    函数调用栈,有结构,查询快,线程独占的,存储引用和基本类型

    heap: 
    先进先出,没有结构,查询慢,线程共享的,存储数值,等待垃圾回收

方法区, 存储static唯一变量, 被所有线程共享

http://image.beekka.com/blog/201311/bg2013112905.jpg

http://www.cnblogs.com/lewis0077/p/5143268.html

  1. java基础 
    基本类型: byte short int double float long boolean char

快速排序: 
http://baike.baidu.com/li nk?url=pqzkGbx5-idKz3_VJ1FtAS2O3SJZhsNWset3-0Tcme_d1XlFErKA50VexUcLCxW46cD8VaxhoQHkiHX6-4sJrYbP5aj77RiCCHd09uJQR0_NQoLMTwS6vxTrC-6Ti-ZDJquSjF3VoUzm9Cnoq3blGK

单例模式(单例三个) 
http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html 方法4

枚举实现单例模式: 
http://www.cnblogs.com/yangzhilong/p/6148639.html

StringBuffer 线程安全和 StringBuilder非线程安全 
Builder 设计模式

适配器模式(比如实体类装换): 
http://blog.csdn.net/jiangxishidayuan/article/details/51050431

Composite组合模式: 树形 
http://blog.csdn.net/jiangxishidayuan/article/details/51045451

Observer观察者模式: 区别对待观察者, java默认的观察者接口 
http://blog.csdn.net/jiangxishidayuan/article/details/51045236

装饰器模式(装饰器和被装饰对象接口相同): 
http://blog.csdn.net/jiangxishidayuan/article/details/51965416

桥接模式: 
http://blog.csdn.net/jiangxishidayuan/article/details/51944928 
短信邮件 发送 紧急消息, 普通消息, 进行桥接

责任链模式: 
Shiro的权限框架 
http://blog.csdn.net/jiangxishidayuan/article/details/51953648

Iterator 模式: 
自己写的分段List,Set迭代器 
http://blog.csdn.net/jiangxishidayuan/article/details/51954773

Command 命令模式: 
http://blog.csdn.net/jiangxishidayuan/article/details/51957617

策略模式: 
http://blog.csdn.net/jiangxishidayuan/article/details/51967015

工厂方法:导出不同格式的文件 
一个产品的时候, 返回不同的工厂

抽象工厂:不同格式的文件,前 缀也不同 
多个产品,返回不同的工厂

代理模式: 
java 动态代理 
http://blog.csdn.net/jiangxishidayuan/article/details/51942658

状态模式: 
Spring 状态框架 
http://blog.csdn.net/jiangxishidayuan/article/details/52003154

JVM 垃圾回收算法:

计数器法, 标记清除, 标记整理, copy 算法 (对象区和空闲区互相换), 
java中可作为GC Root的对象有 
1.虚拟机栈中引用的对象(本地变量表) 
2.方法区中静态属性引用的对象 
3. 方法区中常量引用的对象 
4.本地方法栈中引用的对象(Native对象) 
分代算法: 
年轻代,年老代, 永久代

http://www.cnblogs.com/andy-zcx/p/5522836.html

类加载机制: 
http://www.cnblogs.com/ITtangtang/p/3978102.html

AOP: 
http://www.jb51.net/article/81788.htm

依赖注入: 
http://blog.csdn.net/u010330043/article/details/51287113

排序算法(jdk sort): 
http://blog.csdn.net/hguisu/article/details/7776068/ 
https://img-blog.csdn.net/20170205225535033?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDg1MzI2MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

ln A B B是链接, A是实质文件

java内存模型:(调试工具) 
http://blog.csdn.net/u012152619/article/details/46968883

tomcat调优: 
http://blog.csdn.net/jiangguilong2000/article/details/12523771 
jvm参数, 连接数, 线程数,缓冲池,数据库连接池

自旋锁: 
http://blog.csdn.net/sunmenggmail/article/details/8105279

@transanal 
http://blog.csdn.net/gdfgdfk/article/details/50329859

数据结构: 
树形遍历: http://www.cr173.com/html/18891_1.html 
堆排序: 
AVL: 
红黑树: 
B-树:

乐观锁和悲观锁(CAS): 
http://www.javaweb1024.com/java/JavaWebzhongji/2015/09/06/847.html

版本号和时间戳实现乐观锁

Volatile 原理: 
http://www.cnblogs.com/zhengbin/p/5654805.html

JVM 卡顿调优: 
-Xincgc 
开启增量gc(默认为关闭);这有助于减少长时间GC时应用程序出现的停顿;但由于可能和应用程序并发执行,所以会降低CPU对应用的处理能力 
java 8: 
http://www.cnblogs.com/moonandstar08/p/5001914.html

分布式锁: 略

ConcurrentHashMap:略

TreeMap: 
http://blog.csdn.net/chenssy/article/details/26668941

java发现死锁: 
jstack -l pid 列举出线程

线程状态: 
java.lang.Thread.State

线程池: 
http://blog.csdn.net/sd0902/article/details/8395677

kafka 和 redis

http:三次握手 
http://www.cnblogs.com/maybe2030/p/4781555.html

负载均衡, 断路器, 服务注册原理

Spring 循环依赖:

Spring cache

链接

http://note.youdao.com/noteshare?id=845baac77faa10ec21932a7b3eb0063f

你可能感兴趣的:(IT面试题收集录)