1.jdk jre是什么 jdk基础开发包 jre java运行环境,Java程序通过javac编译生成字符行(.class)文件,给jvm编译成机器能看懂的机器语言,意义在于将java的编译与系统解耦开,实现在不同系统环境下的运行 2.内部类配合接口多继承 3.多态及向下转型 4.hashmap底层 hashmap底层可以理解为就是一个数组,map对象通过hash取模以链表的形式储存在对应的数组位置中 5.fast-failed机制 当集合发生非线程安全时抛出异常 6.BIO NIO AIO 同步与异步:用户盯着消息的完成情况(同步)系统盯着消息的完成情况(异步) 阻塞与非阻塞:用户等着消息完成就不干其他事(阻塞)用户不等消息完成就开始做其他事情(非阻塞) 7.零拷贝 数据直接在堆外内存拷贝 8.netty nio底层通信框架(适用场景是底层) 9.消息队列和栈 消息队列先进先出,栈先进后出 10.AES和RSA AES对称加密,通信双方用同样的秘钥加密解密 RSA非对称加密,通信双方用各自的私钥加密,公钥验签 11.jvm内存模型 年轻代,年老代,持久代 12.tcp三次握手四次分手 tcp三次握手四次分手整个过程具有原子性不可切分 13.http和tcp http是tcp的封装,http是应用层协议 14.悲观锁,乐观锁,无锁算法 悲观锁:先锁,认为一定有写的争抢,适合频繁写的情况 乐观锁:先不锁,认为没有写的争抢,适合写比较少的情况 无锁:乐观锁的一种实现,判断加锁对象的版本号判断是否与期望版本号相同来实现数据的排他性 15.线程池 为线程提供缓冲区,限制同时运行线程的数量,同时有维持线程降低创建销毁性能消耗的作用 16.消息队列 什么时候取消息由消费者决定(客户端也可以作为消息的订阅者),避免消费能力小于生产能力,并解耦了服务请求者和服务提供者 17.linux 一切皆文件,根目录(即“/”目录)下文件目录的解耦思想,熟悉常用命令 18.三大范式 原子性,部分函数依赖,传递依赖 19.常用sql关键字 group by,order by,limit,distinct,explain,case when then else 20.join 内连接:不保留驱动表的空匹配 外链接:保留驱动表的空匹配 左外连接:左边为驱动表 21.mysql分表分库,主从复制,分布式的思考 22.redis 储存“热”数据,内存数据库,避免磁盘io(实际上默认会持久化) 23.红黑树 消除二叉树偏向一边的问题的解决方案 24.nginx和lvs 负载均衡方案 25.面向服务框架 dubbo,spring boot,spring cloud 26.了解分布式各领域的主流技术优势,适用场景