目录
1. HashMap是怎么解决冲突的 是用什么数据结构实现的
2. 为什么hashmap的初始长度为16
3. 多线程的核心参数
4. 多线程怎么工作的
5. CISCS是怎么实现的
6. JUC知识
7. C++和java的区别
8. JVM底层编译的东西
9. 公平锁和非公平锁
10. 有人恶意攻击你的平台每秒发送几万次的请求 该怎么做
1. HashMap是怎么解决冲突的 是用什么数据结构实现的
Hashmap采用链地址法来解决哈希冲突。hashmap在该索引位置维护一个链表结构。新的键值对被添加到链表的头部而不是尾部。
实现的数据结构:数组+链表
2. 为什么hashmap的初始长度为16
因为做hashcode是按位与的,更加方便计算位置
3. 多线程的核心参数
UNIT:时间单位
corepoolsize:核心线程数
maximumpoolsize:最大线程数
keepalivetime:线程空闲时间
threadfactory:线程工厂
handler:拒绝策略
4. 多线程怎么工作的
核心是通过共享进程资源,实现并发执行。
5. CISCS是怎么实现的
通过分层架构实现工业现场控制与管理系统的集成。分成架构:设备层,控制层,管理层。
6. JUC知识
是java处理并发编程的核心工具包,提供线程安全的并发控制。
核心组件功能:线程池框架:通过ThreadPoolExecutor管理生命周期。
锁机制:locks包
同步工具类:CountDownLatch:等待多线程完成。
7. C++和java的区别
编译方式的差异:C++直接编译为机器码
Java:先编译为字节码,再通过JVM解释执行
面向对象差异:C++支持多重继承
JAVA仅单继承
8. JVM底层编译的东西
首先JVM是虚拟机,是可以跨平台的。
执行流程:java源码,javac编译,.class字节码,JVM加载
采用双模式执行引擎:解释执行模式;编译执行模式
9. 公平锁和非公平锁
公平锁:多个线程按照申请锁的顺序来获取锁,类似于排队。
非公平锁:顺序并不是按照申请的,可能后申请的先活得锁。在高并发系统下优先使用。
10. 有人恶意攻击你的平台每秒发送几万次的请求 该怎么做
1. IP黑名单与限流 :使用iptables限制单IP连接数。
2. 接口频率限制:基于Redis实现分布式限流。
3. 使用消息队列(如Kafka)缓存请求,避免服务器过载。