高频面试题---持续更新

  1. HashMap为何是线程不安全的?哪一个方法形成的?如何把它变为线程安全的?
    1 HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操做,就是rehash,这个会从新将原数组的内容从新hash到新的扩容数组中,在多线程的环境下,存在同时其余的元素也在进行put操做,若是hash值相同,可能出现同时在同一数组下用链表表示,形成闭环,致使在get时出现死循环,因此hashMap是线程不安全的。
    2 经过Collections.synchronizedMap()来封装HashMap的方法
    查看答案
  2. 列举线程池的基本参数有哪些?说说线程池的工做流程
  3. spring框架的IOC基本实现原理,BeanFactory和FactoryBean有什么区别?
  4. 下面是一道阿里巴巴的题目,请问代码输出结果是什么?
  5. 关于list<?>,list<T>,list<Object>,list<? extend Object>以及list<? super T>的区别是什么?
  6. 有一个表t1,列为abc,现创建索引为ac,如今select xx from table where c=xx and a=xx有没有用到索引?
  7. 手写一个单例模式,并分析过程。(懒汉式、饿汉式,双重检测锁)
  8. foreach与正常for循环效率对比哪一个高?各自的适应场景是什么?
  9. 一张表,里面有ID自增主键,当insert了5条记录以后,删除了第3,4,5条记录后,再把Mysql重启,再insert一条记录,这条记录的ID是6仍是3?
  10. @Transactional在哪些状况下会致使事务失效?列举出来~
  11. 算法题: 给你一串连续的数字,1到10000,随机除去两个数,怎样快速找到这两个数?它的时间复杂度是多少?
  12. mybatis的xxMapper,只有接口,没有实现类,它是怎么实现具体的查询操做的?原理是什么?
  13. mysql的查询,or和in哪一个效率更高?为何?
  14. Java并发编程包中的CountDownLatch类在多线程中有什么做用?
  15. http和https协议的区别是什么?两种协议分别适合用在哪里?
  16. jvm如何判断一个对象是否能够被回收?垃圾回收算法都有哪些?
  17. ThreadLocal如何解决线程不安全的问题,内部原理是怎样的?它的使用场景有哪些?
  18. 如下代码执行后,会输出什么结果?
  19. 请画出微服务框架dubbo消费者调用生产者的顺序图,并说出它是如何工做的
  20. 如图,多线程状况判断,应该选择哪一个选项?
  21. 对于mysql来讲,Hash索引的时间复杂度是O(1),而B+树的时间复杂度是log(2N),为何mysql不选择用Hash做为底层结构?
  22. 写出你遇到的Exception,并解释他们会在哪些状况下出现?
  23. 解释一下同步和异步,阻塞和非阻塞是什么?并举例说明
  24. 如下代码输出什么?java是值传递仍是引用传递,二者区别是什么?
  25. 队列适用于哪些开发场景,何时你会考虑使用队列?常见的队列,你会如何选择前端

  26. Spring里用到了哪些常见的设计模式?请详述使用场景。java

  27. java的引用强度都有哪些类型?在GC过程当中都是如何表现的?
  28. 详解TCP三次握手,四次挥手的过程?并解释为何握手须要三次,挥手却须要四次?
  29. 为何 Java 中的 String 类是不可变的?使用final有什么好处?
  30. java中i++和++i知足原子性吗,为何?若是不是,怎么保持其原子性
  31. 同步方法和同步代码块的区别是什么?
  32. String对象的intern()方法做用是什么?实现原理是什么?
  33. linux下如今cpu占用率太高,如何排查是哪一个或者哪些线程引发的?
  34. 事务的隔离级别有哪些,分别会引发哪一种异常读取?
  35. Http状态码有哪些,分别表示什么含义?
  36. mysql的like语法和Locate函数哪一个效率更高?为何?
  37. redis是单线程的,使用它须要加锁吗?为何它依然那么快?
  38. 后端如何防止前端的重复请求,如何保证请求的幂等?
  39. 使用随机算法产生一个数,要求将1-1000W之间这些数所有生成出来。(考察高效率,解决产生冲突的问题)
  40. spring中如何解决循环依赖问题?
  41. CAS的原理是什么?适用场景有哪些?有什么优势和缺点?
  42. 说一说Nio为何要比IO流快,它的底层原理是什么?
  43. Stringbuffer和StringBuilder和String.format()的区别是什么?都适合用在什么样的场景下
  44. Java中Linkedlist也实现了List接口,也存在一个get( int index)方法获取角标处元素。为何ArrayList的get(n)时间复杂度为O(1),而Linkedlist的get(n)时间复杂度为O(n)?增删呢?能够从数据结构或Java源码实现两方面回答。
  45. 并发和并行分别指什么?对于单核CPU,有必要开多线程吗?解释下缘由
  46. 讨论redis与memcached的区别?
  47. 什么是线程局部变量?它存储在哪里?是线程安全的吗?
  48. Mybatis在拼接sql的时候,#和$符号的区别是什么?
  49. SimpleDateFormat是线程安全的吗?为何?
  50. 说说你认识的软件设计模型层级划分是怎样的?controller、service、dao、job、接口调用、微服务等等
  51. synchronized的底层原理是什么?
  52. 在分布式系统中,如何保证生成的id惟一?
  53. rpc和http区别是什么?哪一个效率更高?
  54. mysql有如下数据(假设为student表的score字段):1.1,1.8,5.3,2.2,1.1,1.8,6.7,3.9。要求用sql排序,数据同样,排名同样~
  55. 一个TCP链接能够发多少Http请求?
  56. 为何HashMap会在并发下出现环形链表?
  57. 理论上讲,两台主机之间同时能有多少条 tcp连接?
  58. java.sql.Date和java.util.Date的联系和区别是什么?
  59. 快速失败(fail-fast)和安全失败(fail-safe)的原理和区别分别是什么?
  60. servlet是线程安全的吗?解释一下为何?
  61. 消息队列如何保证发送的消息不会丢失(以kafka或者rabbitmq为例说明)
  62. 高并发,执行耗时短的任务,还有低并发,执行耗时长的任务,各自选取什么样的线程池比较合理?为何?若是业务场景是高并发,且任务耗时长时,有什么解决思路?
  63. forward 和redirect的区别是什么?各自适用于什么状况下?
  64. redis的内存回收策略有哪些?分别用于什么场景?
  65. 说一下concurrentHashMap的put方法的操做原理?
  66. 解释一下redis集群中是如何分配key的?
  67. 设计实现一个扫码登陆功能
  68. sql语句的关键词执行的顺序是什么?
  69. 若是是传两个参数,int 和 string 类型的,mybatis是如何接受的?
  70. 什么是接口的幂等性,如何保证接口的幂等?
  71. 都知道反射的性能不好,那么反射的意义在哪里?哪些场景最适合用反射?
  72. 如何提升mysql的吞吐量?实现每秒超过50000+的写入?
  73. 如何将一个很的长url,转化为短url,你能想到的方法有哪些
  74. 如何在20亿个整数中判断一个任意指定的整数是否存在?
  75. bitmap的原理是什么?使用场景是什么
  76. mysq中字符编码集UTF8和UTF8mb4的区别是什么?建议用哪一个?缘由是什么?
  77. 分别写一个oracle和mysql的分页sql语句,并分析其过程~
  78. 说说你知道的spring的注解有哪些,做用都是什么?
  79. 如何保证缓存和数据库的数据一致性?
  80. 介绍一下java的双亲委派模型以及双亲委派被破坏的3种状况?
  81. 两张一样的表,分别是innodb和myisam引擎,它们的查询方式有什么不一样,底层索引存储有什么不一样?
  82. 聚簇索引和非聚簇索引的区别是什么?
  83. 先后端分离采用的原理是什么?怎样实现先后端分离?
  84. 解释一下jdk1.8中concurrentHashmap类的put和get方法过程
  85. jvm的内存模型是什么?并解释一下jdk1.7和1.8的变化有哪些
  86. 谈一下jvm的垃圾回收机制,算法演变过程?以及如今jvm采用的是哪一种回收算法?
  87. 说一下垃圾回收器都有哪些,有什么不一样?目前jdk1.8采用哪一种?为何?
  88. 假如我有个对外开放的接口,这个接口对于任一ip只容许调用一次,第二次调用直接拒绝?如何作到?
  89. 常见的分流算法有哪些?分别都是什么原理
  90. volatile关键字的做用是什么?
  91. 有一张订单表,订单号是雪花id,纯18位的数字。表内有1000w数据,如今要进行分库分表,拆分红20个库,100个表,应该如何划分?每一个表存放多少数据?
  92. 线程工做内存和主内存之间同步交互的指令有哪些?
  93. 谈谈你对观察者模式的认识?
  94. jdk1.9相比于1.8有哪些变更和新特性?
  95. HashMap的indexFor方法源码以下:static int indexFor(int h, int length) { 
    return h & (length-1); 
    } 
    这里为何要采起位运算?
  96. @Autowired和@resource的区别是什么?推荐使用哪一个?
  97. mysql数据索引结构为何不采用二叉树和红黑树?
  98. 编写代码,实现生产者-消费者模型功能,内容自由发挥,只须要表达思想
  99. 设计一个微信抢红包算法,根据你平时的抢红包体验,注意几点: 一、最小分配金额为一分钱 二、每一个人不管前后顺序抢到的红包金额在几率上是大体均匀的 
    三、适应抢红包的喜悦气氛,现实中不会出现红包金额分配太极端的状况,好比10我的抢100元,第一个红包就被抢了99元
  100. 介绍一下快速排序,有没有什么排序算法时间复杂度可以小于nlogn的?
  101. volatile是绝对线程安全的吗?为何
  102. 解释一下cap理论,Zookeeper符合哪些?Eureka符合哪些?
  103. 设计一个秒杀架构,会遇到哪些须要解决的问题?
  104. concurrentHashMap为何要使用红黑树?好处是什么?
  105. 线程都有哪些状态?生命周期是怎样的?
  106. websocket与http请求的不一样是什么?二者适用场景有什么不一样?
  107. select count(*)from xx,在innodb和myisam中查询哪一个更快?为何?
  108. fullgc和minorgc的区别是什么?fullgc的频率大概多久一次比较好?
  109. TreeSet和HashSet的区别是什么?
  110. 说一说你知道的linux命令有哪些?
  111. Tcp和Udp的区别有哪些?Udp适用于那些场景
  112. 回答代码中的问题:
  113.  线程为何不是以run方法运行,而是start方法?mysql

  114. concurrentHashMap的size()方法原理是什么?1.7和1.8分别说明。
  115. 什么是缓存伪共享?如何解决伪共享问题?
  116. 如何判断链表中是否有环?
  117. 用户从浏览器输入一个url开始到看到内容,中间会经历什么样的过程?
  118. mysql的drop、delete、truncate的区别是什么?
  119. 来自抖音后端的一个面试题:什么是用户态,什么是内核态?
  120. 为何 wait,notify 和 notifyAll 方法是在 Object 类中定义的而不是在 Thread 类中定义?
  121. 数据库三大范式是什么,具体是什么含义?
  122. 乐观锁和悲观锁是什么?哪一个效率更高?
  123. ReadWriteLock读写锁相比较ReentrantLock有什么不一样?它更适合用在什么样的场景中?
  124. QQ或者微信的消息撤回怎么实现?
  125. static修饰的字段是能够被序列化的吗?为何?
  126. jdk的阻塞队列有哪些?分别有什么不一样?
  127. 用阻塞队列实现生产者、消费者模式。
  128. java有多少种建立对象的方式?列举出来
  129. mysql中group by name的时候,若是数据库存在不少name为null的值,会怎么样?若是要避免这样的状况,怎么处理?
  130. BIO、NIO和AIO的区别是什么?简单说明一下BIO
  131. ThreadLocal的使用场景有哪些?
  132. 你所知道的负载均衡策略都有哪些?各自适合的场景是什么?
  133. 编码实现三个线程依次循环打印XYZ,一共打印10次
  134. redis有哪些数据类型?使用场景都是什么?
  135. mysql的主键id是自增的好仍是uuid好?为何
  136. 给定一个单链表的头节点 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不调整,由于不够一组。
  137. 要求用zookeeper实现分布式锁,说出原理便可。
  138. 简述一下epoll的工做原理。
  139. http请求中get和post请求的区别是什么?
  140. 为何要重写equals和hashcode方法?
  141. 用redis如何实现分布式锁?
  142. spring的aop的原理是什么?使用场景有哪些?
  143. select * from table limit 999999,5(主键为id)查询是很慢的,如何优化这个sql?
  144. 用linkedHashMap实现一个lru缓存。
  145. 动态代理为何须要传入类加载器?为何只能代理接口?
  146. 如何防止缓存击穿和雪崩?
  147. BeanA依赖B,B依赖C,C依赖于A,spring在bean初始化的时候,如何解决这种循环依赖的问题?
  148. 简述AQS的基本原理
  149. zookeeper的zab协议是什么,具体是如何工做的?
  150. count(1)中的1是什么含义?count(*)和count(1)和count(列名)哪一个效率高?
  151. mysql是如何执行一条sql的,流程是怎样的?
  152. 线程池中当某个线程执行过程当中异常了,线程池会怎么样?如何处理?
  153. 简述观察者模式以及适用场景~
  154. 如何保证队列消息不被重复消费,或者说,如何保证消息消费的幂等性?
  155. 为何索引符合最左匹配原则,而不是最右原则?(从B+底层结构分析)
  156. ArrayList为何不是线程安全的?具体缘由是什么?
  157. jdk1.8的jvm结构模型是什么样的?每一个区域的做用是什么?
  158. 如何保证消息队列的顺序性?
    例子:假如binlog发送给消息队列是增、改、删,结果没有控制好顺序成了删、增、改,这样就是有问题的
  159. 分库分表后部署上线有哪几种方案?
  160. springmvc运行流程是什么?
  161. jvm垃圾回收器都有哪些?各自的特色是什么?
  162. Spring中@Async注解实现异步调用的实现原理?
  163. redis有哪些集群模式?各自的优缺点是什么?
    1 1.主从模式:可进行读写分离,可分担同步的压力,可用性不过高,master宕机须要手动配置从节点转为master
    2 2.cluter模式: 引入了主从模式,每一个节点存储不一样的内容
    3 3.哨兵模式:主从模式升级版,主节点挂掉会自动将从节点转为主节点,可用性更高
    参考答案
  164. 如何把htttp请求升级为https?
    1 1:申请SSL证书
    2 2:让本身的服务器支持SSL,nginx须要配置SSL模块和https的跳转
    3 3:开放443端口
    参考答案
相关文章
相关标签/搜索