Java后端开发知识点
Author: congfu.xu@foxmail.com
展开功能,测试用
一、Java基础
1.1 JavaSE
- i = i ++; 问题分析?https://mp.weixin.qq.com/s/Y_1E0y9ft8tpe9caIsJiaQ
- 封装、继承、多态、抽象?多态原理?
- 重写?重载?子类重写父类方法的隐患?为什么不能按照方法返回值进行重载?
- https://blog.csdn.net/sinat_32176267/article/details/70568756
- 集合继承体系,各自特点?泛型?上下限?https://www.cnblogs.com/coprince/p/8603492.html
- 什么是hash表? https://mp.weixin.qq.com/s/CEl2lQSkvJUv9Z0Tz3Bw_w
- hsahMap 底层实现原理? https://www.cnblogs.com/xiaoxi/p/6170590.html
- LinkedHashMap? hashtable? treeMap? 区别,应用场景?
- String(至少说10个)、System、Object(全部)、Random、Math、Arrays、Objects 、Collections常用方法?
- 进程?线程?Java线程和操作系统线程区别?https://blog.csdn.net/cringkong/article/details/79994511
- 线程状态、状态如何转化?新建\可运行\阻塞\无线等待\计时等待\终止
- 为什么引入线程池?原理? 实现方法,ThreadPoolExecutor构造函数中各参数的意义?
- 多线程的几种实现方案,区别?项目中,用过多线程没?
- volatile、synchronized原理?你是如何理解内存可见性的?试举例?https://www.cnblogs.com/zhengbin/p/5654805.html
- synchronized作用在代码块、普通方法、静态方法上的区别?死锁原因?如何避免?
- synchronized、ReentrantLock 区别? https://blog.csdn.net/fw0124/article/details/6672522
- java.util.concurrent(并发包,提供线程安全的一些类),concurrentHashMap原理?
- concurrentHashMap、hashMap 区别?https://mp.weixin.qq.com/s/PbC73FLj5e10rFCLctlsLA
- J.U.C 下,日期类?原子类?锁? 其他并发集合?
- CAS、AQS ? 阻塞队列?手写阻塞队列?https://www.cnblogs.com/barrywxx/p/8678698.html
- ThreadLocal?原理?项目中,哪里用到了?解决什么问题?> https://www.cnblogs.com/dolphin0520/p/3920407.html
- IO流,设计用到的装饰者模式?
- InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)
- public、protected、default、private作用范围?
- final、finally?static ? transient ? 序列化?https://www.cnblogs.com/szlbm/p/5504166.html
- 函数式编程?lambda、方法引用? Supplier、Consumer、Predicate、 Function
- stream 流?流对象的获取?filter、count、limit、skip、map、foreach、collect
- 异常?说下常见运行期异常(至少10个)
- 项目中异常通常是怎么处理的?jdk 1.7 1.8 有什么进化?https://mp.weixin.qq.com/s/hOOFwOsfd042xJ7RDyNDQQ
- 反射?原理?用过没?解决什么问题?https://blog.csdn.net/founder_chenhao/article/details/50171983
- 常见设计模式:https://blog.csdn.net/LoveLion/article/details/17517213
- 单例(手写线程安全的单例并分析)、装饰者?建造者?动态代理(手写)? 策略?工厂三兄弟(区别)?
- 如何破坏单例模式?https://blog.csdn.net/chao_19/article/details/51112962
- Java 设计原则?https://www.cnblogs.com/pony1223/p/7594803.html
- 正则表达式?http://www.runoob.com/regexp/regexp-syntax.html
1.2 JVM
- Jvm内存区域划分?https://www.cnblogs.com/wangjzh/p/5258254.html
- Java 常量池?https://www.cnblogs.com/syp172654682/p/8082625.html
- 对象的创建?内存布局?访问定位?如何判断是否死亡?分配与回收策略?
- 垃圾回收算法?特点?垃圾收集器?用过什么垃圾回收器?https://www.cnblogs.com/1024Community/p/honery.html
- Minor gc,full gc了解吗?线上发生频繁额full gc如何处理?https://blog.csdn.net/wilsonpeng3/article/details/70064336cpu使率过高怎么办?如何定位问题?如何解决?
- 知道字节码吗?字节码都有哪些?Integer x=5,inty=5,比较x==y都经过些步骤?
- 类加载过程?哪些类加载器?分别加载哪些文件?https://blog.csdn.net/justloveyou_/article/details/72466105
- 双亲委派?通过例子说明JVM设计破坏了双亲委派模型,如何解决的?
- Jvm优化了解吗?使用什么方法?达到什么效果?https://www.cnblogs.com/xingzc/p/5756119.html
- Class.forName(“java.lang.String”) 和 String.class.getClassLoader.loadClass(“java.lang.String”)什么区别?
- ClassLoader? https://mp.weixin.qq.com/s/YRp36wB73-4uho0akhubWQ
- 内存模型了解吗?目的?如何设计的?happen-before了解吗?解决什么问题?https://www.cnblogs.com/lewis0077/p/5143268.html
- 什么是线程安全?JVM线程安全实现方法?
- Jvm锁了解吗?不同版本对锁的优化呢?
二、JavaWeb
2.1 socket
- 网络编程时,网络编程时的同步、异步、阻塞、非阻塞?
- Java如何实现无阻塞方式的Socket编程?
- Socket 编程时,客户端,服务端的各自操作过程?
- Socket、UDP、Tcp、Http 之间的联系与区别?
2.2 NIO(java non-blocking IO)
- 说下NIO实现原理?
- 何时使用IO,何时使用NIO?
- https://blog.csdn.net/hxpjava1/article/details/56282385
2.3 servlet & Jsp
- 什么是servlet?https://blog.csdn.net/danielzhou888/article/details/70835418
- servlet 生命周期?https://www.cnblogs.com/lgk8023/p/6427977.html
- forward() 与redirect()的区别?https://blog.csdn.net/liubin5620/article/details/79922692
- 四大域?
- Cookie、Session 工作原理?
2.4 Tomcat
- https://blog.csdn.net/qq_25934401/article/details/81536958
- tomcat 有哪几种Connector 运行模式(优化)?7、8版本区别?bio\nio\aio\apr
- Tomcat有几种部署方式?
- tomcat容器是如何创建servlet类实例?用到了什么原理?
- tomcat 如何优化?内存调优? 垃圾回收调优?
- 共享 Session ?
- Tomcat一个请求的完整过程?
三、SSM框架 + springBoot
3.1 SpringMVC
- controller 中获取 request 的方法? https://mp.weixin.qq.com/s/NEptgTs9Gohqr0ajQb5ITA
- @ResponseBody 、@ResponseStatus 、@ResponseEntity 如何选择?
- @RequestBody 、@RequestParam 、 @PathVariable 适用场景?
- DispatcherServlet 作用?https://www.cnblogs.com/tengyunhao/p/7518481.html
- SpringMVC工作流程?https://www.cnblogs.com/xiaoxi/p/6164383.html
- 自定义拦截器是如何工作的?多个拦截器,执行顺序?如何解决请求中文乱码问题?
- MVC模式与三层架构的区别?https://www.cnblogs.com/zdxster/p/5305155.html
3.2 Spring
-
DI? DL? https://blog.csdn.net/doris_crazy/article/details/18353197
-
AOP原理? cglib动态代理、jdk proxy 动态代理区别?手写jdk动态代理?
-
Spring框架涉及到的设计模式? 举例?https://mp.weixin.qq.com/s/uatxAyIaYFhrTNZSYqCOYw
-
spring配置bean实例化有哪些方式?https://www.cnblogs.com/zhanglei93/p/6221546.html
-
BeanFactory? FactoryBean? 区别?https://www.cnblogs.com/aspirant/p/9082858.html
-
spring 编程式事务?声明式事务? https://www.cnblogs.com/nnngu/p/8627662.html
-
spring,事务特性(四种)?传播行为(七种)?只读?隔离级别(四种)?超时?回滚?都介绍下
-
spring XML配置、注解配置 ,区别?优缺点?
3.3 Mybatis
- 为什么说Mybatis是半自动ORM映射框架? 与全自动区别?
- mybatis,初始化做了什么?原生编程步骤?
- #{} 、${} 区别? 分别用在什么场景?
- XML映射文件中,select|insert|updae|delete标签之外,常见标签?作用?
- 通常一个Xml映射文件,都会对应一个Dao接口,Dao接口的工作原理是什么?Dao接口里的方法,能重载吗?
- 分页插件,如何分页的?分页原理?
- mybatis如何将sql 结果封装成对象?映射形式?
- mybatis中 ,sql 的延迟加载? 原理?
- mybatis中,都有哪些Executor执行器?它们之间的区别是什么?
- Mybatis 一级缓存?二级缓存?https://www.cnblogs.com/happyflyingpig/p/7739749.html
- https://www.cnblogs.com/huajiezh/p/6415388.html
3.4 SpringBoot
- 什么是springBoot? 为什么要用springBoot ?
- 启动器是什么?
- springBoot常用注解?
- springBoot 自动配置原理?
- 读取配置文件的方式?
- 配置bean的方式?
- SpringBoot一键启动原理?详述过程?
- https://www.songma.com/news/txtlist_i24822v.html
四、数据库
4.1 Mysql
- 笛卡尔积? 内连接、左外连接、右外连接区别? 如何选择?
- Mysql体系结构了解吗?了解哪些存储引擎?都有啥区别?https://www.jb51.net/article/139110.htm
- 使用索引有哪些原则?索引底层实现原理知道吗?https://www.cnblogs.com/helloworldlx/p/8651583.html
- 为什么mysql索引使用B+tree,而不是其他树?https://mp.weixin.qq.com/s/X6_RhUgVPdDgqYEKb_yNBQ
- 关系型数据库设计规范?如何优化一条查询sql?https://www.cnblogs.com/qlqwjy/p/8425861.html
- innodb锁的类型?有哪些锁的算法?解决什么问题?
- MVCC了解吗?实现原理呢?https://blog.csdn.net/whoamiyang/article/details/51901888
- innodb有哪些事务?事务的四大特性了解吗?底层实现原理呢?事务隔级别了解吗?默认的隔离级别是什么?这个隔离级别导致幻读,没有影响吗?为什么不会导致幻读?原理了解吗?
- 分库分表了解吗?为什么要分库分表?https://blog.csdn.net/xlgen157387/article/details/53976153
- 有哪些分库分表方案?如何设计可以动态扩容縮容的分库分表方案?
- 用过哪些分库分表中间件?有啥有点和缺点?讲一下你了解的分库分表中间件底层实现原理?
- 我现在有一个未分库分表的系统,以后系统需要分库分表,如何设计?那如何让未分库分表的系统动态切挨到分库分表的系统上呢?
- 如何解决分库分表主键问题?有什么实现方案?
- 数据库集群了解吗?有没有搭建过?
- 读写分离、主从备份?
- 敏感信息的存储? 数据脱敏? 身份证? 银行卡?
4.2 Oracle
- https://www.cnblogs.com/cnblog-long/p/6918404.html
- 如何使用Oracle的游标 ?怎样创建一个存储过程, 游标在存储过程怎么使用, 有什么好处?游标和函数的区别?
- 怎样优化Oracle数据库,有几种方式?如何分页?
- 解释冷备份和热备份的不同点以及各自的优点?
- truncate和delete 区别?
4.3 Mongodb
- mongodb 应用场景 ? 名字空间(namespace)? 分析器在MongoDB中的作用是什么?
- 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?
- 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
- 如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS来存储文件?
- https://yq.aliyun.com/ziliao/454971
五、分布式服务与微服务
5.1 分布式之系统架构
- https://blog.csdn.net/world6/article/details/79114105
- SOA(Service-Oriented Architecture) 与 微服务的异同? https://blog.csdn.net/zpoison/article/details/80729052
- 什么是微服务?为什么要微服务?微服务优缺点?https://blog.csdn.net/u013322876/article/details/81447857
- 幂等? 解决方案? 项目中如何实现的?
- 为何要前后端分离?分别部署?部署方案分别有哪些?
- 为什么要进行系统拆分? 如何拆分? 区别? 拆分后,如何发现?
- 数据库如何拆分? mycat和sharding-jdbc区别?
- 分布式寻址有哪些方法?说下一致性hash?
- 如何设计一个 高可用、 高并发 的系统?
- 为什么需要网关?网关作用?网关分类?技术选型?
- 负载均衡?实现策略?
- 限流?限流策略?限流算法?https://blog.csdn.net/fouy_yun/article/details/81025984
- 服务熔断?如何熔断?熔断框架有哪些?实现原理?
- 服务降级?降级策略?降级和熔断区别?
- 如何保证微服务的安全?微服务接口暴露了怎么办?
- 如何对各个微服务进行性能监控?如何配置统一的日志管理中心?
- https://mp.weixin.qq.com/s/A2rMoWOhs6sSJjBCSVI6mw
5.2 分布式之服务框架
5.21 dubbo
- 什么是rpc框架? https://blog.csdn.net/b1303110335/article/details/79557292
- 了解哪些rpc框架?区别呢?https://blog.csdn.net/zhaowen25/article/details/45443951
- 说一下dubbo的实现过程吧?注册中心挂了可以继续通信吗?https://blog.csdn.net/liberty12345678/article/details/82625587
- 知道序列化吗?什么情况下需要序列化?RPC服务中的参数为啥都需要序列化呢?
- (接上条)参数中的日期类型到底用sql.Date还是Util.Date?
- Dubbo哪些序列化协议?hessian?说一下hessian的数据结构?PB知道吗?为什么PB效率最高?
- Dubbo负载均衡策略和高可用策略都有哪些?动态代理策略呢?
- 了解netty吗?netty可以干嘛?NIO,BIO,AIO了解吗?区别呢?Rector模型了解吗?
5.2.2 springCloud
- https://www.jianshu.com/p/aa79fb6d96f3
- 什么是springCloud?如何实现服务的注册和发现?
- restful风格? URL、URI 区别?https://blog.csdn.net/qq_21383435/article/details/80032375
- http 常见状态码?https://blog.csdn.net/qq_35779969/article/details/80753197
- Eureka || Nacos || zk 注册中心
- Feign 远程调用
- Ribbon 负载均衡
- Hystrix 熔断机制
- Zuul || Gateway 网关
5.3 分布式之注册中心
5.3.1 Zookeeper
- https://www.cnblogs.com/lanqiu5ge/p/9405601.html
- Zk了解吗?可以干吗?原理知道吗?Paxos算法了解吗?
- ZK选主?ZK作注册中心用,与 eureka 和 Nacos区别? https://blog.csdn.net/zpoison/article/details/80615468
- 若让你用 redis 实现一个注册中心,说下思路?
- zk 和 redis 做分布式锁,有什么区别?
5.3.2 Eureka
- eureka 工作原理?http://www.cnblogs.com/snowjeblog/p/8821325.html
- eureka 自我保护?
- 服务发现?心跳机制?
5.3.4 Nacos
- 加载多个配置文件怎么处理?
- 配置修改了如何监听?
5.4 分布式之文件存储
- http://stor.51cto.com/art/201809/583398.htm
- 为何引入?工作原理?
- 常见文件存储系统?区别?如何选型?
5.5分布式之资源缓存
- https://blog.csdn.net/yajlv/article/details/73467865
- 用过那些缓存数据库?区别?为什么单线程的 Redis 比多线程的memchechede 效率高?
- Redis有哪些数据类型?分别适用于哪些场景?
- Redis底层数据结构了解吗?说下map 底层设计原理?
- Redis 的消息队列了解吗?和 Kafka 的有什么区别?
- Redis主从复制如何实现?集群模式如何实现?Redis key 如何寻址?槽的理解?
- Redis 一主多从,和主-从-从-从模式的区别?两中方案中,主挂了怎么办?从挂了怎么办?
- 哨兵机制?
- Redis持久化?优缺点?底层如何实现的?如何选择?
- Redis过期策略有哪些?LRU?书写Java版本的代码?
- Redis的缓存击穿、缓存雪崩?事前怎么避免?出现了怎么处理?
- Redis事务?
5.6 分布式之搜索引擎
https://blog.csdn.net/ms_lang/article/details/83215015
5.6.1 Lucene
- 什么是搜索引擎?原理?应用场景?
- Lucene 创建索引过程?说一下倒排索引技术?
- 描述下Lucene 分词器?
- Lucene 加快查询机制?
5.6.2 solr 与 solr Cloud
- 什么是 solr ? core索引库?
- solr 解决中文乱码?
- solr 、ES 比较?及如何选用?https://blog.csdn.net/convict_eva/article/details/53537837
5.6.3 ElasticSearch
- 说下ElasticSearch中的集群、分片、节点、索引、文档、类型 ?
- ES工作流程?如何实现分布式的?与 solr 云区别?
- ES写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊?为啥能实时搜索?
- ES 是如何实现master 选举的?https://blog.csdn.net/u012516166/article/details/76643882
- ES在数据量很大的情况下(数十亿级),如何提高查询效率?深度分页查询优化?
- ES 和 mongdb 区别?
5.7 分布式之用户登录
5.7.1 单点登录
- 什么是单点登录(SSO)?实现原理与方案?https://www.cnblogs.com/EzrealLiu/p/5559255.html
- jwt 使用场景和优劣?
5.7.2 oauth授权
- http oauth 认证? 原理?流程?通信加密原理?https://www.cnblogs.com/greatluoluo/p/5955513.html
- 你用cookie保存token? cookie 被禁用了怎么办?
- cookie 被盗用了怎么办?被篡改了怎么办?
5.7.3 第三方登录与第三方支付
- 微信登录的流程 ?
- 微信支付的流程 ?
- 第三方分享?
5.8 分布式之消息队列
- 分布式项目中中,为何引入消息队列?https://segmentfault.com/a/1190000015301449?utm_source=tag-newest
- 有哪些消息队列?区别呢?消息队列优缺点?https://blog.csdn.net/mrs_haining/article/details/80625833
- 比如RocketMq ,消息模型?如何防止消息丢失?
- 如何保证消息队列的高可用? 如何防止不被重复消费?https://blog.csdn.net/mrs_haining/article/details/80625833
- 让你写一个消息队列?你打算怎么架构?说一下思路
- 如何保证消息的可靠性传输?要是消息丢失了怎么办啊?那如何保证消息的顺序性?
- 如何解决消息队列的延时以及过期失效问题?
- 消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
5.9 分布式之事务控制
- CAP? BASE 理论? https://www.cnblogs.com/szlbm/p/5588543.html
- 一致性算法? https://blog.csdn.net/followMyInclinations/article/details/52870418
- 分布式锁了解吗?哪些方案?区别?手写 redis 分布式锁?
- 分布式事务?服务拆分?怎么避免分布式事务?出现了,怎么解决?怎么选型? 说下 两阶段提交?TCC出现网络问题怎么办?
- https://www.jianshu.com/p/16b1baf015e8
- https://blog.csdn.net/hanruikai/article/details/82659223
六、网络与浏览器
6.1 网络协议
- IO模型?https://www.cnblogs.com/javalyy/p/8882066.html
- 说一下TCP/IP 四层?https://www.cnblogs.com/BlueTzar/articles/811160.html
- TCP三次握手,四次挥手的工作流程?画流程图, 为什么不是四次/五次?
- 说一下,在浏览器输入网址后,直到页面返回,中间发生的流程?https://www.cnblogs.com/daijinxue/p/6640153.html
- http报文格式、http状态码?你对http无状态连接的理解? Http1.0、1.1、2.0有什么区别?
- http、https 区别?各自工作流程?http://www.cnblogs.com/lovesong/p/5186200.html
- http 长连接?短连接?https://www.cnblogs.com/gotodsp/p/6366163.html
- 为什么引入Cookie & Session ? 它们的原理? https://blog.csdn.net/liyifan687/article/details/80077928
- 前端 三种本地存储方式? 各自特点?https://blog.csdn.net/qq_40779721/article/details/79196893
- 加密算法?对称加密、非对称加密、数字签名?https://blog.csdn.net/u014465934/article/details/81370111
- 浏览器同源策略?CORS?AJax跨域?https://www.cnblogs.com/rockmadman/p/6836834.html
6.2 网络攻击
- Xss(跨站脚本攻击)了解吗? 如何避免? https://blog.csdn.net/Ideality_hunter/article/details/80621138
- CSRF(跨站请求伪造)了解吗? 如何避免?https://blog.csdn.net/stpeace/article/details/53512283
- Sql 注入?避免? https://www.cnblogs.com/wangcp-2014/p/5503365.html
- XML 外部实体注入攻击?避免? https://www.freebuf.com/column/181064.html
- 什么是中间人攻击?ARP? 避免? https://www.cnblogs.com/ichunqiu/p/5662832.html
- 文件上传漏洞? 避免?https://www.jianshu.com/p/5ebba0482980
- 敏感信息泄露?避免? http://www.4hou.com/info/news/3926.html
- 反序列化漏洞? https://www.freebuf.com/vuls/170344.html
七、数据结构与算法
7.1 算法
- 八大经典排序算法? java 实现?https://www.cnblogs.com/morethink/p/8419151.html
- 一组数据中,如何找到出现次数最高的那个?海量数据中呢?(https://blog.csdn.net/qq_39081511/article/details/80353347)
- 算法中常说的,时间复杂度、空间复杂度?https://mp.weixin.qq.com/s/soZP4oVM4WvYCKSN2fuemg
7.2 常见数据结构
- 集合,链、树、图?
- 链表基本操作?https://www.cnblogs.com/winorgohome/p/6028309.html
- 二叉树?红黑树?应用?
- 为何数据库中,大都选用 树形结构? 说下 mysql 的 B+Tree?
八、其他技术栈
- swagger2
- k8s
- 服务器推送?
- netty
- docker