- 一 Java基础
- 一致性hash算法
- sleep和wait
- 强软弱虚引用
- Arrays.sort原理
- 创建对象的方式
- 若hashcode方法永远返回1会产生什么结果
- 解决hash冲突的三种方法
- 为什么要重写hashCode()方法和equals()方法以及如何进行重写
- 动态代理
- sleep和wait的区别
- java 地址和值传递的例子
- Java序列化
- java NIO,java 多线程、线程池,java 网络编程解决并发量
- JDBC 连接的过程 ,手写 jdbc 连接过程
- 说出三个遇到过的程序报异常的情况
- socket 是靠什么协议支持的
- java io 用到什么设计模式
- serviable 的序列化,其中 uuid 的作用
- 什么情景下会用到反射
- 浅克隆与深克隆有什么区别,如何实现深克隆
- 反射能够使用私有的方法属性吗和底层原理?
- 处理器指令优化有些什么考虑?
- object 对象的常用方法
- Stack 和 ArrayList 的区别
- statement 和 prestatement 的区别
- 手写模拟实现一个阻塞队列
- util 包下有哪几种接口
- 很常见的 Nullpointerexception ,你是怎么排查的,怎么解决的;
- 静态内部类和非静态内部类的区别是什么?
- 怎么创建静态内部类和非静态内部类?
- Xml 解析方式,原理优缺点
- 静态变量和全局变量的区别
- 二 Java集合
- hashmap的jdk1.7和jdk1.8区别
- concurrenthashmap的jdk1.7和jdk1.8区别
- HashMap 实现原理,扩容因子过大过小的缺点,扩容过程 采用什么方法能保证每个 bucket 中的数据更均匀 解决冲突的方式,还有没有其他方式(全域哈希)
- Collection 集合类中只能在 Iterator 中删除元素的原因
- ArrayList、LinkedList、Vector
- ConcurrentHashMap 和 LinkedHashMap 差异和适用情形
- ConcurrentHashMap分段锁是如何实现,ConcurrentHashmap jdk1.8 访问的时候是怎么加锁的,插入的时候是怎么加锁的 访问不加 锁插入的时候对头结点加锁
- ArrayDeque 的使用场景
- ArrayBlockingQueue 源码
- hashmap 和 treemap 的区别
- rehash 过程
- HashMap 的负载因子,为什么容量为2^n
- list,map,set 之间的区别
- 什么时候会用到 HashMap
- 常见的线程安全的集合类
- 三 JVM
- 四 多线程并发
- volitale使用场景
- 可重入锁,实现原理
- Java 无锁原理
- 讲讲多线程,多线程的同步方法
- synchronized原理
- reetrantlock
- java 线程安全都体现在哪些方面
- 如果维护线程安全 如果想实现一个线程安全的队列,可以怎么实现?
- Java多线程通信方式
- CountDownLatch、CyclicBarrier、Semaphore 用法总结
- juc下的内容
- AOS等并发相关面试题
- threadlocal
- java 线程池达到提交上限的具体情况 ,线程池用法,Java 多线程,线程池有哪几类,每一类的差别
- 要你设计的话,如何实现一个线程池
- 线程池的类型,固定大小的线程池内部是如何实现的,等待队列是用了哪一个队列实现 线程池种类和工作流程
- 线程池使用了什么设计模式
- 线程池使用时一般要考虑哪些问题
- 线程池的配置
- Excutor 以及 Connector 的配置
- 五 Java框架(ssm)
- hibernate
- spring&springmvc
- spring中的设计模式
- spring中bean的作用域
- BeanFactory和FactoryBean区别
- aspect的种类
- spring aop的实际应用
- spring实现多线程安全
- spring的bean的高并发安全问题
- ioc aop总结(概述性)
- Spring 的加载流程,Spring 的源码中 Bean 的构造的流程
- Spring 事务源码,IOC 源码,AOP 源码
- spring 的作用及理解 事务怎么配置
- spring事务失效情况
- Spring 的 annotation 如何实现
- SpringMVC 工作原理
- 了解 SpringMVC 与 Struct2 区别
- springMVC 和 spring 是什么关系
- 项目中 Spring 的 IOC 和 AOP 具体怎么使用的
- spring mvc 底层实现原理
- 动态代理的原理
- 如果使用 spring mvc,那 post 请求跟 put 请求有什么区别啊; 然后开始问 springmvc:描述从 tomcat 开始到 springmvc 返回到前端显示的整个流程,接着问 springmvc 中的 handlerMapping 的内部实现,然后又问 spring 中从载入 xml 文件到 getbean 整个流程,描述一遍
- 六 微服务(springboot等)
- 七 数据结构
- 八 数据库
- MySQL
- 数据库死锁问题
- hash索引和B+树索引的区别
- 可重复的原理MVCC
- count(1)、count(*)、count(列名)
- mysql的undo、redo、binlog的区别
- explain解释
- mysql分页查询优化
- sql注入
- 为什么用B+树
- sql执行流程
- 聚集索引与非聚集索引
- 覆盖索引
- sql总结
- 有人建议给每张表都建一个自增主键,这样做有什么优点跟缺点
- 对 MySQL 的了解,和 oracle 的区别
- 500万数字排序,内存只能容纳5万个,如何排序,如何优化?
- 平时怎么写数据库的模糊查询(由字典树扯到模糊查询,前缀查询,例如“abc%”,还是索引策略的问题)
- 数据库里有 10000000 条用户信息,需要给每位用户发送信息(必须发送成功),要求节省内存
- 项目中如何实现事务
- 数据库设计一般设计成第几范式
- mysql 用的什么版本 5.7 跟 5.6 有啥区别
- 提升 MySQL 安全性
- 问了一个这样的表(三个字段:姓名,id,分数)要求查出平均分大于 80 的 id 然后分数降序排序,然后经过提示用聚合函数 avg。
- 为什么 mysql 事务能保证失败回滚
- 主键索引底层的实现原理
- 经典的01索引问题?
- 如何在长文本中快捷的筛选出你的名字?
- 多列索引及最左前缀原则和其他使用场景
- 事务隔离级别
- 索引的最左前缀原则
- 数据库悲观锁怎么实现的
- 建表的原则
- 索引的内涵和用法
- 给了两条 SQL 语句,让根据这两条语句建索引(个人想法:主要考虑复合索引只能匹配前缀列的特点)
- 那么我们来聊一下数据库。A 和 B 两个表做等值连接(Inner join) 怎么优化
- 数据库连接池的理解和优化
- Sql语句分组排序
- SQL语句的5个连接概念
- 数据库优化和架构(主要是主从分离和分库分表相关)
- 分库分表
- 跨库join实现
- 探讨主从分离和分库分表相关
- 数据库中间件
- 读写分离在中间件的实现
- 限流 and 熔断
- 行锁适用场景
- Redis
- 九 计算机网络
- cookie 禁用怎么办
- Netty new 实例化过程
- socket 实现过程,具体用的方法;怎么实现异步 socket.
- 浏览器的缓存机制
- http相关问题
- TCP三次握手第三次握手时ACK丢失怎么办
- dns属于udp还是tcp,原因
- http的幂等性
- 建立连接的过程客户端跟服务端会交换什么信息(参考 TCP 报文结构)
- 丢包如何解决重传的消耗
- traceroute 实现原理
- IO多路复用
- select 和 poll 区别?
- 在不使用 WebSocket 情况下怎么实现服务器推送的一种方法
- 可以使用客户端定时刷新请求或者和 TCP 保持心跳连接实现。
- 查看磁盘读写吞吐量?
- PING 位于哪一层
- 网络重定向,说下流程
- controller 怎么处理的请求:路由
- IP 地址分为几类,每类都代表什么,私网是哪些
- 十 操作系统
- linux
- 十一 框架其他
- 十二 设计模式
- 十三 分布式
- 十四 其他
https://blog.csdn.net/qq_40551994/article/details/100991581
https://blog.csdn.net/qq_20009015/article/details/89980966 https://blog.csdn.net/lengyue309/article/details/79639245
https://blog.csdn.net/junjunba2689/article/details/80601729
https://www.cnblogs.com/baichunyu/p/11935995.html
https://blog.csdn.net/w410589502/article/details/56489294
https://blog.csdn.net/cnq2328/article/details/50436175
https://blog.csdn.net/qq_32595453/article/details/80660676
https://blog.csdn.net/xlgen157387/article/details/63683882
https://segmentfault.com/a/1190000011291179
https://blog.csdn.net/u012050154/article/details/50903326
https://www.cnblogs.com/zhangyu317/p/11226105.html
https://juejin.im/post/5ce3cdc8e51d45777b1a3cdf
Java Nio使用:https://blog.csdn.net/forezp/article/details/88414741 Java Nio原理:https://www.cnblogs.com/crazymakercircle/p/10225159.html 线程池:http://cmsblogs.com/?p=2448 为什么nio快:https://blog.csdn.net/yaogao000/article/details/47972143
https://blog.csdn.net/qq_44971038/article/details/103204217
https://www.cnblogs.com/winnie-man/p/10471338.html
TCP/IP,协议。socket用于 通信,在实际应用中有im等,因此需要可靠的网络协议,UDP则是不可靠的协议,且服务端与客户端不链接,UDP用于广播,视频流等
装饰模式和适配器模式
相当于快递的打包和拆包,里面的东西要保持一致,不能人为的去改变他,不然就交易不成功。序列化与反序列化也是一样,而版本号的存在就是要是里面内容要是不一致,不然就报错。像一个防伪码一样。
注解、Spring 配置文件、动态代理、jdbc
浅拷贝:仅仅克隆基本类型变量,而不克隆引用类型的变量 深克隆:既克隆基本类型变量,也克隆引用类型变量
1.浅克隆:只复制基本类型的数据,引用类型的数据只复制了引用的地址,引用的对象并没有复制,在新的对象中修改引用类型的数据会影响原对象中的引用。直接使用clone方法,再嵌套的还是浅克隆,因为有些引用类型不能直接克隆。 2.深克隆:是在引用类型的类中也实现了clone,是clone的嵌套,并且在clone方法中又对没有clone方法的引用类型又做差异化复制,克隆后的对象与原对象之间完全不会影响,但是内容完全相同。
https://blog.51cto.com/4247649/2109128
禁止重排序
1、Statement用于执行静态SQL语句,在执行时,必须指定一个事先准备好的SQL语句。 2、PrepareStatement是预编译的SQL语句对象,sql语句被预编译并保存在对象中。被封装的sql语句代表某一类操作,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数值。 3、使用PrepareStatement对象执行sql时,sql被数据库进行解析和编译,然后被放到命令缓冲区,每当执行同一个PrepareStatement对象时,它就会被解析一次,但不会被再次编译。在缓冲区可以发现预编译的命令,并且可以重用。 4、PrepareStatement可以减少编译次数提高数据库性能。
https://www.cnblogs.com/keeya/p/9713686.html
https://blog.csdn.net/qq_38366777/article/details/78088386
https://segmentfault.com/a/1190000013504078?utm_source=tag-newest
https://juejin.im/post/5aa5d8d26fb9a028d2079264
https://blog.csdn.net/qq_36520235/article/details/82417949
https://juejin.im/post/5df8d7346fb9a015ff64eaf9
扩容:https://www.jianshu.com/p/5730bff593ed
https://www.cnblogs.com/peizhe123/p/5790252.html
在Iterator的内部有个expectedModCount 变量, 该变量每次初始化Iterator的时候等于ArrayList的modCount,modCount记录了对ArrayList的结构修改次数, 在通过Iterator对ArrayList进行结构的修改的时候都会将expectedModCount 与modCount同步,但是如果在通过Iterator访问的时候同时又通过索引的方式去修改ArrayList的结构的话,由于通过索引的方式只会修改modCount不会同步修改expectedModCount 就会导致modCount和expectedModCount 不相等就会抛ConcurrentModificationException, 这也就是Iterator的fail-fast,快速失效的。所以只要采取一种方式操作ArrayList就不会出问题, 当然ArrayList不是线程安全的,此处不讨论对线程问题。
更加详细的解释 https://blog.csdn.net/yanshuanche3765/article/details/78917507
https://blog.csdn.net/zhangqiluGrubby/article/details/72870493
(1)CopyOnWriteArrayList使用ReentrantLock重入锁加锁,保证线程安全; (2)CopyOnWriteArrayList的写操作都要先拷贝一份新数组,在新数组中做修改,修改完了再用新数组替换老数组,所以空间复杂度是O(n),性能比较低下; (3)CopyOnWriteArrayList的读操作支持随机访问,时间复杂度为O(1); (4)CopyOnWriteArrayList采用读写分离的思想,读操作不加锁,写操作加锁,且写操作占用较大内存空间,所以适用于读多写少的场合; (5)CopyOnWriteArrayList只保证最终一致性,不保证实时一致性;
哈希表的原理:https://blog.csdn.net/yyyljw/article/details/80903391
可以以下方面进行回答 (1)使用的数据结构? (2)添加元素、删除元素的基本逻辑? (3)是否是fail-fast的? (4)是否需要扩容?扩容规则? (5)是否有序?是按插入顺序还是自然顺序还是访问顺序? (6)是否线程安全? (7)使用的锁? (8)优点?缺点? (9)适用的场景? (10)时间复杂度? (11)空间复杂度?
jdk1.8;https://blog.csdn.net/weixin_42130471/article/details/89813248
1、用数组实现的双端队列 2、线程不是安全的 3、可以用来实现栈
(1)ArrayBlockingQueue不需要扩容,因为是初始化时指定容量,并循环利用数组; (2)ArrayBlockingQueue利用takeIndex和putIndex循环利用数组; (3)入队和出队各定义了四组方法为满足不同的用途; (4)利用重入锁和两个条件保证并发安全:lock、notEmpty、notFull
(1)HashMap是一种散列表,采用(数组 + 链表 + 红黑树)的存储结构; (2)HashMap的默认初始容量为16(1<<4),默认装载因子为0.75f,容量总是2的n次方; (3)HashMap扩容时每次容量变为原来的两倍; (4)当桶的数量小于64时不会进行树化,只会扩容; (5)当桶的数量大于64且单个桶中元素的数量大于8时,进行树化; (6)当单个桶中元素数量小于6时,进行反树化; (7)HashMap是非线程安全的容器; (8)HashMap查找添加元素的时间复杂度都为O(1);
(1)TreeMap的存储结构只有一颗红黑树; (2)TreeMap中的元素是有序的,按key的顺序排列; (3)TreeMap比HashMap要慢一些,因为HashMap前面还做了一层桶,寻找元素要快很多; (4)TreeMap没有扩容的概念; (5)TreeMap的遍历不是采用传统的递归式遍历; (6)TreeMap可以按范围查找元素,查找最近的元素;
https://www.jianshu.com/p/dde9b12343c1
HashMap为了存取高效,要尽量较少碰撞,就是要尽量把数据分配均匀,每个链表长度大致相同,这个实现就在把数据存到哪个链表中的算法; 这个算法实际就是取模,hash%length,计算机中直接求余效率不如位移运算,源码中做了优化hash&(length-1), hash%length==hash&(length-1)的前提是length是2的n次方; 为什么这样能均匀分布减少碰撞呢?2的n次方实际就是1后面n个0,2的n次方-1 实际就是n个1; 例如长度为9时候,3&(9-1)=0 2&(9-1)=0 ,都在0上,碰撞了; 例如长度为8时候,3&(8-1)=3 2&(8-1)=2 ,不同位置上,不碰撞; 其实就是按位“与”的时候,每一位都能 &1 ,也就是和1111……1111111进行与运算
https://blog.csdn.net/u012102104/article/details/79235938
https://www.jianshu.com/p/b6cb4c694951
https://www.jianshu.com/p/10584345b10a
https://blog.csdn.net/u011665991/article/details/107141348/
https://blog.csdn.net/iteye_9584/article/details/82583093
https://blog.csdn.net/qq_27093465/article/details/52262340
https://blog.csdn.net/u014520047/article/details/81940447
https://vimsky.com/article/4162.html
https://juejin.im/post/5c7262a15188252f30484351
https://zhuanlan.zhihu.com/p/59861022
tomcat请求流程:http://objcoding.com/2017/06/12/Tomcat-structure-and-processing-request-process/
其实就是jvm的类加载情况,非常相似 https://blog.csdn.net/lduzhenlin/article/details/83013143 https://blog.csdn.net/xlgen157387/article/details/53521928
https://blog.csdn.net/vking_wang/article/details/9982709
ReetrantLock:https://www.jianshu.com/p/f8f6ac49830e
https://blog.csdn.net/qq_39291929/article/details/81501829
https://www.jianshu.com/p/d53bf830fa09
JUC 包里的 ArrayBlockingQueue 还有 LinkedBlockingQueue 啥的又结合源码说了一通。
https://blog.csdn.net/u011514810/article/details/77131296 https://blog.csdn.net/xiaokang123456kao/article/details/77331878
https://segmentfault.com/a/1190000012234469
https://blog.csdn.net/sixabs/article/details/98471709
https://cloud.tencent.com/developer/article/1471770 https://zhuanlan.zhihu.com/p/96544118 https://zhuanlan.zhihu.com/p/48295486
https://juejin.im/post/5ac2eb52518825555e5e06ee
https://blog.csdn.net/github_37130188/article/details/89504500
http://www.vcchar.com/thread-29098-1-1.html
重点讲 newcached 线程池 线程池工作原理 比如 corePoolSize 和maxPoolSize 这两个参数该怎么调
https://juejin.im/post/5d1882b1f265da1ba84aa676#heading-14
https://www.cnblogs.com/kismetv/p/7806063.html
主要说了 native 、uuid
https://blog.csdn.net/itmyhome1990/article/details/54863822
https://blog.csdn.net/wangpeng047/article/details/17038659
https://www.javazhiyin.com/34438.html
https://www.jianshu.com/p/ae2bda8f9d84 https://blog.csdn.net/qwesxd/article/details/90049863
https://blog.csdn.net/weixin_42495773/article/details/106799280 https://blog.csdn.net/weixin_34025051/article/details/92405286
https://www.cnblogs.com/qdhxhz/p/11390778.html
https://blog.csdn.net/csdnliuxin123524/article/details/78874261
面试题: https://mp.weixin.qq.com/s/2Y5X11TycreHgO0R3agK2A https://mp.weixin.qq.com/s/IdjCxumDleLqdU8MgQnrLQ
https://juejin.im/post/5ce69379e51d455d877e0ca0
https://blog.csdn.net/weidaoyouwen/article/details/80503575
https://blog.csdn.net/weixin_38361347/article/details/92852611
https://blog.csdn.net/StubbornAccepted/article/details/70767014
https://blog.csdn.net/zzh_spring/article/details/107207025
https://www.cnblogs.com/tiancai/p/9627109.html
https://blog.csdn.net/songzehao/article/details/103365494/
https://juejin.im/post/5b040cf66fb9a07ab7748c8b https://juejin.im/post/5b06bf2df265da0de2574ee1
spring ioc系列文章:http://cmsblogs.com/?p=2806 加载流程(概述):https://www.jianshu.com/p/5fd1922ccab1 循环依赖问题:https://blog.csdn.net/u010853261/article/details/77940767 https://blog.csdn.net/a15119273009/article/details/108007864
https://juejin.im/post/5c525968e51d453f5e6b744b
ioc、aop系列源码: https://segmentfault.com/a/1190000015319623 http://www.tianxiaobo.com/2018/05/30/Spring-IOC-%E5%AE%B9%E5%99%A8%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E5%AF%BC%E8%AF%BB/
https://www.jianshu.com/p/e7d59ebf41a3
https://blog.csdn.net/luo4105/article/details/79733338
https://segmentfault.com/a/1190000013258647
https://blog.csdn.net/cswhale/article/details/16941281
https://blog.csdn.net/chenleixing/article/details/44570681
https://www.cnblogs.com/xdp-gacl/p/4249939.html https://juejin.im/post/5b06bf2df265da0de2574ee1
https://blog.csdn.net/weixin_42323802/article/details/84038765
https://juejin.im/post/5a3284a75188252970793195
如果使用 spring mvc,那 post 请求跟 put 请求有什么区别啊; 然后开始问 springmvc:描述从 tomcat 开始到 springmvc 返回到前端显示的整个流程,接着问 springmvc 中的 handlerMapping 的内部实现,然后又问 spring 中从载入 xml 文件到 getbean 整个流程,描述一遍
https://www.jianshu.com/p/655d83f9ba7b https://www.jianshu.com/p/ff4b93b088eb
https://www.jianshu.com/p/e136ec79235c https://zhuanlan.zhihu.com/p/31805309
https://blog.csdn.net/cbjcry/article/details/84920174
https://www.cnblogs.com/heiming/p/5865101.html
https://www.cnblogs.com/wade-luffy/p/8686883.html https://blog.csdn.net/weixin_42041027/article/details/100587435 https://www.jianshu.com/p/8845ddca3b23
https://blog.csdn.net/iFuMI/article/details/77920767
https://mp.weixin.qq.com/s/0z6GmUp0Lb1hDUo0EyYiUg
https://segmentfault.com/a/1190000010293791
https://blog.csdn.net/hanchao5272/article/details/102790490
https://blog.csdn.net/github_36032947/article/details/78442189
https://blog.csdn.net/xlgen157387/article/details/79450295
https://juejin.im/post/5b7036de6fb9a009c40997eb
https://juejin.im/post/5cdd701ee51d453a36384939
https://www.jianshu.com/p/77eaad62f974
https://juejin.im/post/5d3f9cc1f265da03a31d1192
https://blog.csdn.net/yixuandong9010/article/details/72286029
https://juejin.im/post/5cbdbb455188250ab224802d
参考文章:https://juejin.im/entry/5a27cb796fb9a045104a5e8c
https://blog.csdn.net/hsd2012/article/details/51018631
https://blog.csdn.net/listen_for/article/details/53907270
select id from table group by id having avg(score) > 80 order by avg(score) desc。
B+树
全文索引
https://www.jianshu.com/p/f5ff017db62a
https://blog.csdn.net/hguisu/article/details/5731880
哈希
https://cloud.tencent.com/developer/article/1104098
https://zhuanlan.zhihu.com/p/57089960
https://blog.csdn.net/jackFXX/article/details/82318080
https://blog.csdn.net/smartwu_sir/article/details/80254733
https://segmentfault.com/q/1010000007715137
https://blog.csdn.net/charjay_lin/article/details/81810922
说明计算机网络的知识还没有记住
https://www.cnblogs.com/yangyangxxb/p/10218871.html
https://mp.weixin.qq.com/s/xSGD3rWdboeeQvaS8jEchw
https://www.cnblogs.com/wuyepeng/p/9801470.html
https://www.zhihu.com/question/310145373
https://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html
https://cloud.tencent.com/developer/article/1195037
https://zhuanlan.zhihu.com/p/36811672
https://sanyuesha.com/python-server-tutorial/book/ch05.html
好文:https://www.jianshu.com/p/dfd940e7fca2
服务器推送:https://juejin.im/post/5c20e5766fb9a049b13e387b
https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html
ping命令本身相当于一个应用程序,位于应用层,虽然它使用的是ICMP协议,就好像HTTP位于应用层,但是也是使用的TCP协议
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections
https://zhuanlan.zhihu.com/p/54593244
可以从Java IO底层、JavaIO模型(阻塞、异步等) https://www.cnblogs.com/crazymakercircle/p/10225159.html
tomcat支持:https://blog.csdn.net/fd2025/article/details/80007435
https://www.jianshu.com/p/eb112b25b848
https://blog.csdn.net/u010983881/article/details/78554671
https://www.jianshu.com/p/91c8600cb2ae
https://blog.51cto.com/whylinux/2043871
https://blog.csdn.net/u010938610/article/details/79625988
awk用法:https://www.cnblogs.com/isykw/p/6258781.html
其实sed和awk都是每次读入一行来处理的,区别是:sed 适合简单的文本替换和搜索;而awk除了自动给你分列之外,里面丰富的函数大大增强了awk的功能。数据统计,正则表达式搜索,逻辑处理,前后置脚本等。因此基本上sed能做的,awk可以全部完成并且做的更好。
作者:哩掉掉 链接:https://www.zhihu.com/question/297858714/answer/572046422
https://blog.csdn.net/qingmu0803/article/details/38271077
https://blog.csdn.net/zmx19951103/article/details/78575265
https://www.cnblogs.com/freeweb/p/5407105.html
https://blog.csdn.net/inuyashaw/article/details/55095545
linux命令:https://juejin.im/post/5d3857eaf265da1bd04f2437
https://juejin.im/post/5b624f4d518825068302aee9#heading-13
https://www.jianshu.com/p/e4197a54828d
https://juejin.im/entry/58f9e22044d9040069d40dca
我给面试官说了 Ngix+Tomcat 负载均 衡,异步处理(消息缓冲服务器),缓存(Redis, Memcache), NoSQL,数据库优化,存储索引优化
https://www.ruanyifeng.com/blog/2011/09/restful.html
- https://www.jianshu.com/p/61b67ca754a3
- 单例模式(双检锁模式)、简单工厂、观察者模式、适配器模式、职责链模式等等
- 享元模式模式 选两个画下 UML 图
- 手写单例 写的是静态内部类的单例,然后他问我这个地方为什么用 private,这儿为啥用 static, 这就考察你的基本功啦
- 静态类与单例模式的区别
- 单例模式 double check 单例模式都有什么,都是否线程安全,怎么改进(从 synchronized 到 双重检验锁 到 枚举 Enum)
- 基本的设计模式及其核心思想
- 来,我们写一个单例模式的实现
https://blog.csdn.net/wjw_77/article/details/99696757
https://juejin.im/post/5b39eea0e51d4558c1010e36
https://zhuanlan.zhihu.com/p/62158041
https://www.jianshu.com/p/8025e3346734
redis如何实现分布式缓存 https://stor.51cto.com/art/201912/607229.htm
保证了可见性不等于正确同步,因为还有原子性没考虑。
https://blog.csdn.net/leo187/article/details/106233706
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html https://yq.aliyun.com/articles/54155