关于java:高频考点

3次阅读

共计 2622 个字符,预计需要花费 7 分钟才能阅读完成。

根底
HashMap 和 HashTable 的区别
(数据结构,安全性,所属类,存储值的区别)

数组构造和链表构造区别,
https://blog.csdn.net/Islandw…

cookie 和 session 区别

用到加锁(sycronized)的中央

做了哪些预防网络攻击的
cc 攻打
Xss 攻打
Ddos 攻打

跨域问题
(浏览器同源策略限度,协定 + 域名 + 端口,解决: NG,cors)

三方登录
订单库存零碎()

多线程无关配置
(最大线程数 maxPoolSize, 外围线程数 corePoolSize,keepLive, waiteTime,queueCapacity…)
【工作性质:
计算密集型: 线程数 >=cpu 核数
IO 密集型: 设置较大

【cpu 利用率
cpu 使用率:

      top 按 H,查看 us, sy, ni;
      sar -u 1 5: 每秒采集一次,共 5 次;

cpu 负载:

     正在执行的线程和期待执行的线程之和
     线程状态: 
         1,新建 new
         2,可运行 runable,调用 t.start()变为 running 状态
         3,运行 running,runable 状态的线程获取 cpu 的工夫片 timeslice,执行代码
         4,阻塞 blocked,调用 wait(),sleep(),yield()…
         5,死亡 dead

HashMap 底层

1,单例 https://my.oschina.net/dyyweb…
2,汇合
3,Sql 优化

【1,Explain 查看执行打算,rows,key,索引是否用到【2,防止应用 !=,放弃索引进行全表扫描【3,in 和 not in 也可能全表扫描,【4,间断的值用 between,不必 in【5,返回给前台的数据,要什么给什么,不要全给【6,防止应用 or,如果一个字段有索引一个没有,导致放弃索引【7,查问靠后的分页,应用 id < 9000,limit 10

4,Jvm 内存模型,内存构造,及调优
【内存模型 Jmm,屏蔽硬件和操作系统的拜访差别,次要解决多线程通过共享内存进行通信时,存在本地内存不统一、编译器对指令重排序、处理器执行乱序的问题,保障了并发场景中的原子性、可见性和有序性

【线程公有: 栈,程序计数器,本地办法栈

 线程共享: 堆,办法区,堆外内存(永恒代,代码缓存)

【程序计数器: pc 寄存器,行号指示器,用来存储指向下一条指令的地址

【Java 虚拟机栈: 主管 Java 程序运行,保留局部变量及局部后果,办法执行,入栈(进栈和压栈),办法完结,出栈; 内存大小为动静或固定,固定大小时,线程申请调配的栈容量超过最大,则抛 StockOverflowError; 内存大小为动静时,新线程没有足够内存创立栈,则抛 OutOfMemoryError,能够批改 -Xss 调整最大栈空间

【堆: 存储对象实例,数据

【内存调优:
堆: -Xmx 堆内存空间

   -Xms  初始化堆内存空间

伊甸区: -XX:UseTLAB 开启 TLAB 空间(默认占伊甸区 1%),能够 XX:TLABWasteTargetPercent 设置 TLAB 占用空间

【垃圾回收:
年老代: 对象创立的中央,没有被 GC 回收的进入老年代
老年代: 主 GC,在内存满时执行,大对象间接进入老年代,防止年老代中伊甸区和幸存区大量内存拷贝
元空间: 办法区
伸缩区: 动静调整内存空间(应该将伸缩区调整到 0)

-Xms 初始占用物理内存空间 1 /64
-Xmx 初始占用 1 /4
可通过命令 jconsole 调出可视化 jvm 内存监控

倡议间接将 -Xms 和 -Xmx 设置为一样

5,事务的个性和隔离级别
【原子性,要么全副胜利,要么全副失败
【一致性,事务实现时,数据必须处于统一状态,数据的完整性束缚没有被毁坏
【隔离性,
【持久性,

6,Linux 常用命令
【】

7,spring IOC 和 AOP 的了解
【】

8,网络协议

============================

RabbitMQ
1,如何确保生产者不丢数据
【发送方确认模式: 将信道 channel 设置成 confirm 模式
【connection.confirmSelect()
生产者每发送一条就期待 broker 确认:
【channel.waitForConfirms()
批量:
【waitForConfirmsOrDie()

2,如何确保队列不丢数据
queueDeclare 第二个参数 durable 设置为 true,长久化队列

3,如何确保消费者不丢数据
接管方确认机制
拉取音讯: channel.basicGet(queue, false); –false 示意手动确认
推送音讯: channel.basicConsumer(queue, false,consumer);

【deliveryTag:
【mutiple: true 示意一次性 ack 所有小于 tag 的音讯
【requeue: 被回绝的是否从新入队列
【通知服务器曾经收到,能够在队列中删除:【channel.basicAck(long deliveryTag, boolean mutiple)】
【回绝或从新入队列:
【channel.basicNack(long deliveryTag, boolean mutiple,bolean requeue)】

4,如何保障音讯不会被反复生产
幂等性: 已发送的音讯设置 id,生产时判断 redis 中是否存在此 id

5,交换器类型:
【fanout 播送, direct 路由, topic 订阅】
topic 模式在进行绑定时,要提供一个该对接关怀的主题,# 示意 0 个或若干个关键字, 示意一个关键字,log.能与 log.warn 匹配,不能与 log.warn.time 匹配,而 log.# 能与两者匹配

6,怎么设置主动重发

============================

Redis
【数据结构:
String
Hash
List
Set
Zset

【长久化:
RDB(默认)、AOF

============================

Redis
【数据结构:
String
Hash
List
Set
Zset

【长久化:
RDB(默认)、AOF

============================

Zookeeper

============================

Oracle

============================

Mybatis

============================

Eleatiesjob

============================

Spring 的定时工作

============================

Websocket

正文完
 0