- HashMap为什么是线程不安全的?哪个方法造成的?如何把它变为线程安全的?
1 HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时出现死循环,所以hashMap是线程不安全的。 2 通过Collections.synchronizedMap()来封装HashMap的方法
查看答案
- 列举线程池的基本参数有哪些?说说线程池的工作流程
- spring框架的IOC基本实现原理,BeanFactory和FactoryBean有什么区别?
- 下面是一道阿里巴巴的题目,请问代码输出结果是什么?
- 关于list<?>,list<T>,list<Object>,list<? extend Object>以及list<? super T>的区别是什么?
- 有一个表t1,列为abc,现建立索引为ac,现在select xx from table where c=xx and a=xx有没有用到索引?
- 手写一个单例模式,并分析过程。(懒汉式、饿汉式,双重检测锁)
- foreach与正常for循环效率对比哪个高?各自的适应场景是什么?
- 一张表,里面有ID自增主键,当insert了5条记录之后,删除了第3,4,5条记录后,再把Mysql重启,再insert一条记录,这条记录的ID是6还是3?
- @Transactional在哪些情况下会导致事务失效?列举出来~
- 算法题: 给你一串连续的数字,1到10000,随机除去两个数,怎样快速找到这两个数?它的时间复杂度是多少?
- mybatis的xxMapper,只有接口,没有实现类,它是怎么实现具体的查询操作的?原理是什么?
- mysql的查询,or和in哪个效率更高?为什么?
- Java并发编程包中的CountDownLatch类在多线程中有什么作用?
- http和https协议的区别是什么?两种协议分别适合用在哪里?
- jvm如何判断一个对象是否可以被回收?垃圾回收算法都有哪些?
- ThreadLocal如何解决线程不安全的问题,内部原理是怎样的?它的使用场景有哪些?
- 以下代码执行后,会输出什么结果?
- 请画出微服务框架dubbo消费者调用生产者的顺序图,并说出它是如何工作的
- 如图,多线程情况判断,应该选择哪个选项?
- 对于mysql来说,Hash索引的时间复杂度是O(1),而B+树的时间复杂度是log(2N),为什么mysql不选择用Hash作为底层结构?
- 写出你遇到的Exception,并解释他们会在哪些情况下出现?
- 解释一下同步和异步,阻塞和非阻塞是什么?并举例说明
- 以下代码输出什么?java是值传递还是引用传递,两者区别是什么?
- 队列适用于哪些开发场景,什么时候你会考虑使用队列?常见的队列,你会如何选择
- Spring里用到了哪些常见的设计模式?请详述使用场景。
- java的引用强度都有哪些类型?在GC过程中都是如何表现的?
- 详解TCP三次握手,四次挥手的过程?并解释为什么握手需要三次,挥手却需要四次?
- 为什么 Java 中的 String 类是不可变的?使用final有什么好处?
- java中i++和++i满足原子性吗,为什么?如果不是,怎么保持其原子性
- 同步方法和同步代码块的区别是什么?
- String对象的intern()方法作用是什么?实现原理是什么?
- linux下现在cpu占用率过高,如何排查是哪个或者哪些线程引起的?
- 事务的隔离级别有哪些,分别会引起哪种异常读取?
- Http状态码有哪些,分别表示什么含义?
- mysql的like语法和Locate函数哪个效率更高?为什么?
- redis是单线程的,使用它需要加锁吗?为什么它依然那么快?
- 后端如何防止前端的重复请求,如何保证请求的幂等?
- 使用随机算法产生一个数,要求将1-1000W之间这些数全部生成出来。(考察高效率,解决产生冲突的问题)
- spring中如何解决循环依赖问题?
- CAS的原理是什么?适用场景有哪些?有什么优点和缺点?
- 说一说Nio为什么要比IO流快,它的底层原理是什么?
- Stringbuffer和StringBuilder和String.format()的区别是什么?都适合用在什么样的场景下
- Java中Linkedlist也实现了List接口,也存在一个get( int index)方法获取角标处元素。为什么ArrayList的get(n)时间复杂度为O(1),而Linkedlist的get(n)时间复杂度为O(n)?增删呢?可以从数据结构或Java源码实现两方面回答。
- 并发和并行分别指什么?对于单核CPU,有必要开多线程吗?解释下原因
- 讨论redis与memcached的区别?
- 什么是线程局部变量?它存储在哪里?是线程安全的吗?
- Mybatis在拼接sql的时候,#和$符号的区别是什么?
- SimpleDateFormat是线程安全的吗?为什么?
- 说说你认识的软件设计模型层级划分是怎样的?controller、service、dao、job、接口调用、微服务等等
- synchronized的底层原理是什么?
- 在分布式系统中,如何保证生成的id唯一?
- rpc和http区别是什么?哪个效率更高?
- mysql有以下数据(假设为student表的score字段):1.1,1.8,5.3,2.2,1.1,1.8,6.7,3.9。要求用sql排序,数据一样,排名一样~
- 一个TCP连接可以发多少Http请求?
- 为什么HashMap会在并发下出现环形链表?
- 理论上讲,两台主机之间同时能有多少条 tcp链接?
- java.sql.Date和java.util.Date的联系和区别是什么?
- 快速失败(fail-fast)和安全失败(fail-safe)的原理和区别分别是什么?
- servlet是线程安全的吗?解释一下为什么?
- 消息队列如何保证发送的消息不会丢失(以kafka或者rabbitmq为例说明)
- 高并发,执行耗时短的任务,还有低并发,执行耗时长的任务,各自选取什么样的线程池比较合理?为什么?如果业务场景是高并发,且任务耗时长时,有什么解决思路?
- forward 和redirect的区别是什么?各自适用于什么情况下?
- redis的内存回收策略有哪些?分别用于什么场景?
- 说一下concurrentHashMap的put方法的操作原理?
- 解释一下redis集群中是如何分配key的?
- 设计实现一个扫码登录功能
- sql语句的关键词执行的顺序是什么?
- 如果是传两个参数,int 和 string 类型的,mybatis是如何接受的?
- 什么是接口的幂等性,如何保证接口的幂等?
- 都知道反射的性能很差,那么反射的意义在哪里?哪些场景最适合用反射?
- 如何提高mysql的吞吐量?实现每秒超过50000+的写入?
- 如何将一个很的长url,转化为短url,你能想到的方法有哪些
- 如何在20亿个整数中判断一个任意指定的整数是否存在?
- bitmap的原理是什么?使用场景是什么
- mysq中字符编码集UTF8和UTF8mb4的区别是什么?建议用哪个?原因是什么?
- 分别写一个oracle和mysql的分页sql语句,并分析其过程~
- 说说你知道的spring的注解有哪些,作用都是什么?
- 如何保证缓存和数据库的数据一致性?
- 介绍一下java的双亲委派模型以及双亲委派被破坏的3种情况?
- 两张同样的表,分别是innodb和myisam引擎,它们的查询方式有什么不同,底层索引存储有什么不同?
- 聚簇索引和非聚簇索引的区别是什么?
- 前后端分离采用的原理是什么?怎样实现前后端分离?
- 解释一下jdk1.8中concurrentHashmap类的put和get方法过程
- jvm的内存模型是什么?并解释一下jdk1.7和1.8的变化有哪些
- 谈一下jvm的垃圾回收机制,算法演变过程?以及现在jvm采用的是哪种回收算法?
- 说一下垃圾回收器都有哪些,有什么不同?目前jdk1.8采用哪种?为什么?
- 假如我有个对外开放的接口,这个接口对于任一ip只允许调用一次,第二次调用直接拒绝?如何做到?
- 常见的分流算法有哪些?分别都是什么原理
- volatile关键字的作用是什么?
- 有一张订单表,订单号是雪花id,纯18位的数字。表内有1000w数据,现在要进行分库分表,拆分成20个库,100个表,应该如何划分?每个表存放多少数据?
- 线程工作内存和主内存之间同步交互的指令有哪些?
- 谈谈你对观察者模式的认识?
- jdk1.9相比于1.8有哪些变动和新特性?
- HashMap的indexFor方法源码如下:static int indexFor(int h, int length) {
return h & (length-1);
}
这里为什么要采取位运算? - @Autowired和@resource的区别是什么?推荐使用哪个?
- mysql数据索引结构为什么不采用二叉树和红黑树?
- 编写代码,实现生产者-消费者模型功能,内容自由发挥,只需要表达思想
- 设计一个微信抢红包算法,根据你平时的抢红包体验,注意几点: 1、最小分配金额为一分钱 2、每个人无论先后顺序抢到的红包金额在概率上是大致均匀的
3、适应抢红包的喜悦气氛,现实中不会出现红包金额分配太极端的情况,比如10个人抢100元,第一个红包就被抢了99元 - 介绍一下快速排序,有没有什么排序算法时间复杂度能够小于nlogn的?
- volatile是绝对线程安全的吗?为什么
- 解释一下cap理论,Zookeeper符合哪些?Eureka符合哪些?
- 设计一个秒杀架构,会遇到哪些需要解决的问题?
- concurrentHashMap为什么要使用红黑树?好处是什么?
- 线程都有哪些状态?生命周期是怎样的?
- websocket与http请求的不同是什么?两者适用场景有什么不同?
- select count(*)from xx,在innodb和myisam中查询哪个更快?为什么?
- fullgc和minorgc的区别是什么?fullgc的频率大概多久一次比较好?
- TreeSet和HashSet的区别是什么?
- 说一说你知道的linux命令有哪些?
- Tcp和Udp的区别有哪些?Udp适用于那些场景
- 回答代码中的问题:
- 线程为什么不是以run方法运行,而是start方法?
- concurrentHashMap的size()方法原理是什么?1.7和1.8分别说明。
- 什么是缓存伪共享?如何解决伪共享问题?
- 如何判断链表中是否有环?
- 用户从浏览器输入一个url开始到看到内容,中间会经历什么样的过程?
- mysql的drop、delete、truncate的区别是什么?
- 来自抖音后端的一个面试题:什么是用户态,什么是内核态?
- 为什么 wait,notify 和 notifyAll 方法是在 Object 类中定义的而不是在 Thread 类中定义?
- 数据库三大范式是什么,具体是什么含义?
- 乐观锁和悲观锁是什么?哪个效率更高?
- ReadWriteLock读写锁相比较ReentrantLock有什么不同?它更适合用在什么样的场景中?
- QQ或者微信的消息撤回怎么实现?
- static修饰的字段是可以被序列化的吗?为什么?
- jdk的阻塞队列有哪些?分别有什么不同?
- 用阻塞队列实现生产者、消费者模式。
- java有多少种创建对象的方式?列举出来
- mysql中group by name的时候,如果数据库存在很多name为null的值,会怎么样?如果要避免这样的情况,怎么处理?
- BIO、NIO和AIO的区别是什么?简单说明一下BIO
- ThreadLocal的使用场景有哪些?
- 你所知道的负载均衡策略都有哪些?各自适合的场景是什么?
- 编码实现三个线程依次循环打印XYZ,一共打印10次
- redis有哪些数据类型?使用场景都是什么?
- mysql的主键id是自增的好还是uuid好?为什么
- 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助)例如:链表:1->2->3->4->5->6->7->8->null, K = 3。那么 6->7->8,3->4->5,1->2各为一组。调整后:1->2->5->4->3->8->7->6->null。其中 1,2不调整,因为不够一组。
- 要求用zookeeper实现分布式锁,说出原理即可。
- 简述一下epoll的工作原理。
- http请求中get和post请求的区别是什么?
- 为什么要重写equals和hashcode方法?
- 用redis如何实现分布式锁?
- spring的aop的原理是什么?使用场景有哪些?
- select * from table limit 999999,5(主键为id)查询是很慢的,如何优化这个sql?
- 用linkedHashMap实现一个lru缓存。
- 动态代理为什么需要传入类加载器?为什么只能代理接口?
- 如何防止缓存击穿和雪崩?
- BeanA依赖B,B依赖C,C依赖于A,spring在bean初始化的时候,如何解决这种循环依赖的问题?
- 简述AQS的基本原理
- zookeeper的zab协议是什么,具体是如何工作的?
- count(1)中的1是什么含义?count(*)和count(1)和count(列名)哪个效率高?
- mysql是如何执行一条sql的,流程是怎样的?
- 线程池中当某个线程执行过程中异常了,线程池会怎么样?如何处理?
- 简述观察者模式以及适用场景~
- 如何保证队列消息不被重复消费,或者说,如何保证消息消费的幂等性?
- 为什么索引符合最左匹配原则,而不是最右原则?(从B+底层结构分析)
- ArrayList为什么不是线程安全的?具体原因是什么?
- jdk1.8的jvm结构模型是什么样的?每个区域的作用是什么?
- 如何保证消息队列的顺序性?
例子:假如binlog发送给消息队列是增、改、删,结果没有控制好顺序成了删、增、改,这样就是有问题的 - 分库分表后部署上线有哪几种方案?
- springmvc运行流程是什么?
- jvm垃圾回收器都有哪些?各自的特点是什么?
- Spring中@Async注解实现异步调用的实现原理?
- redis有哪些集群模式?各自的优缺点是什么?
1 1.主从模式:可进行读写分离,可分担同步的压力,可用性不太高,master宕机需要手动配置从节点转为master 2 2.cluter模式: 引入了主从模式,每个节点存储不同的内容 3 3.哨兵模式:主从模式升级版,主节点挂掉会自动将从节点转为主节点,可用性更高
参考答案
- 如何把htttp请求升级为https?
1 1:申请SSL证书 2 2:让自己的服务器支持SSL,nginx需要配置SSL模块和https的跳转 3 3:开放443端口
参考答案
原文地址:https://www.cnblogs.com/zsl-keep-learning/p/11631948.html
时间: 2024-11-10 05:32:12