Java面试梳理知识点

前言


起的名字如此高大上就是为了吓唬人啊,实际上就是社区里的面经题目,我拿出来回答就是了。不过会持续更新一段时间,各位观众姥爷也希望能够指正整理的错误,小咲谢谢各位了。

正文


【基础】Java高精度了解过吗?Float、double为什么不保留多位小数?
1.Java高精度-》Big decimal内部保留很多位小数;入参推荐使用字符串传值;

【数据结构】二叉树相关知识
2.二叉树-》平衡二叉树、满二叉树、完全二叉树-》二叉搜索树(左孩子小于根结点小于右孩子)解决问题:(例如大于3的所有值)-》平衡二叉搜索树平衡因子不大于1(左右深度之差不大于1)解决问题:时间复杂度稳定在O(log(n)),这里还需要知道AVL树插入删除时间复杂度还是不够优化-》引入了红黑树,取插入删除与搜索的平衡点
特别的:数据量大的时候,磁盘会用B树,处理大数据MySQL索引用的则是B+树,B+树相比B-树的特点:

  1. 数据只出现在叶子结点,B-树每个结点都包含了数据;
  2. 叶子结点之间用指针连接; (兄弟之间来相连,这样其实优化了大于某个值的情况)
  3. B+树的高度一般是3;
    B+树就是可以取范围性的值通过第一层就可以基本锁定范围

【扩展】Nginx知多少
3.了解Nginx吗?
小咲配置Nginx目的是在下载live2d后,想要运行到端口号看看效果的,跟随Up主的步伐搭live2d花了好多时间,为什么呢?当时的问题就是Up主推荐的GitHub原来的主人将文件进行了调整,有些文件缺少了,这就使得小咲被迫要学习如何从网页中摘取两个js文件,好像叫什么minXXXX.js。还要自己分析推理目录结构,好的我其实是会推理目录结构的,说多了都是泪啊,整整一个下午,太年轻了,嗯嗯。
首先知道前提:
正向代理与反向代理的区别:正向代理相对于目标服务器而言隐藏了客户端的真实IP地址,因为对于目标服务器而言所有请求都是从正向代理服务器发出的,正向代理主要是为了突破网络访问限制,比如上网,还有就是隐藏客户端IP地址。反向代理对于客户端而言隐藏了目标服务器IP地址,只需要知道代理服务器地址就能访问到目标服务器的资源。其主功能是可以做负载均衡和安全防护。不过,不管正向代理还是反向代理,都能加快客户端的访问速度,因为nginx服务器是一个高性能的http web服务器,其能够对代理中的数据作缓冲。
然后理解负载均衡,说白了就是反向代理以后,均衡分配数据请求,
理解动静分离,说报了动态资源,静态资源分开管理

4、JVM GC了解吗?
(1)reference count 不能解决循环引用的问题;root searching 根可达算法(main方法里面直接能访问的对象)
(2)三种标记算法
Mark-Sweep 标记清除 特点:碎片化,效率比较高
copying 把内存一分为二 特点:效率特别高,占空间
Mark-Compact 标记压缩,有用的压缩到最前面 特点:不会产生碎片,方便对象分配,效率比较低
(3)堆内存逻辑分区 不同垃圾回收器不同的模型,多数使用分代模型,年轻代(young),old(老年代),一般为1:2,新生代(eden,survivor,survivor)8:1:1
(4)面试重点1:并发标记漏标怎么办,三色标记算法,白色(白色代表纯洁就是clear的空间),灰色(自身被标记,成员变量未被标记),黑色(黑色代表死亡)
(5)面试重点2:什么是调优?主要两个点:优化运行JVM运行环境(慢,卡顿);解决JVM运行过程中出现的各种问题(OOM)
(6)分代模型 单线程 Serial 和Serial Old :a stop-the world(STW墙面呆着就是所有都停止的时候),copying collector which uses a single GC thread 多线程parallel (ParNew与Parrallel Scavenge等价)
总结:一般无特殊组合:现在是:Parrallel Scavenge和Parrallel Old组合(PS+PO)
G1 jdk1.9以后使用
对于GC你有什么调式方式?
jstat

当然据说工作的时候要使用这个Arthas。
Arthas能为你做什么事情呢?我们先来看一下官网的介绍。
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
是否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态?

5、事务的特性
遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))

6、关系性数据库与NoSQL

Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化

非关系型数据库

MongoDb、redis、HBase

【注意】redis缓存通常会与业务MySQL考缓存模型

1.先从缓存读,如果缓存有,直接返回,90%

2.缓存中没有,才需要从MySQL中读取。

windows下cmd中怎么指定JAVA_HOME_正向代理


1、使用键值对存储数据;

2、分布式;

3、一般不支持ACID特性;

4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合

HBase开设大数据课程的学校基本都还记得吧,MapReduce中:WordCount 经过 input splitting mapping(单词,个数) shulffling(归类) producing(合并同类项)final result得出结果

表的特点:大,无模式对应上面第4点,面向列,稀疏,多版本,类型单一

Zookeeper Server奇数原则,领导者,跟随者,观察者这个图要有印象

Kafka工作流程:至少了解Kafka只是分为一个或多个分区的主题的集合,分区是消息的线性有序序列,每个消息由他们的索引(偏移)来标识……

消息队列 解耦、异步、削峰填谷