2021 面试题
文章平均质量分 68
最新面试题,持续迭代更新,建议收藏
JavaPub-rodert
技术&自媒体,专注于面试技巧,擅长Java、Go、MySQL、区块链
展开
-
Java 面试真题
本题适合一到三年 Java 开发 ,以下问题都是按照原面试官提问记录文章目录我要进大厂系列面试题二面我要进大厂系列面试题全部真题,欢迎投稿你的面试经验。本篇涉及基础较多,但要耐性看完。JVM内存模型垃圾回收器用的哪个gc各个算法redis基本数据类型,应用场景zset底层数据结构lucene底层similary、FunctionQuery原理提供哪些方法,如何实现,你项目怎么使用的lucene的索引文件后缀名介绍,分别有什么作用、查询为什么快?跳跃表?kafka如何保证顺序消费.原创 2022-03-20 22:42:56 · 3716 阅读 · 1 评论 -
##待写【MyBatis面试】10道不得不会的MyBatis常见面试题
作为后端开发工程师,MyBatis 几乎人人都要涉及到,这里10道必会面试题。以下都是 MyBatis 常见面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub 在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录1. #{}和${}的区别是什么?1. #{}和${}的区别是什么?最常见的一道题#{}是预编译处理,${}是字符串替换。当然是预编译处理更安全,使用#{}可以有效的防止SQL注入,提高系统安全性。...原创 2022-01-04 21:34:56 · 411 阅读 · 0 评论 -
##待写【JVM面试】10道不得不会的JVM常见面试题
以下都是 MySQL常见面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。评论区见文章目录1. JVM内存模型举例几种常见的垃圾收集算法?1. JVM内存模型这里注意,jdk1.7 和 jdk1.8 是有区别的。1.7中有永久代,1.8中取消了永久代,取而代之的是元数据区。一图胜千文举例几种常见的垃圾收集算法?标记清除法标记清除法用在新生代,首先标记出所需要回收的对象,在标记原创 2022-01-04 12:12:03 · 325 阅读 · 0 评论 -
如何避免死锁?
如何避免死锁?文章目录8. 如何避免死锁?8. 如何避免死锁?从上图我们就可以看出,产生死锁就是俩个或多个线程在申请资源时,自己需要的资源别别人持有、并阻塞。所以导致死锁。如何解决:减小锁的范围,尽量保证之锁定自己需要的资源,减小交叉持有资源情况但是有些时候不得不持有多个资源,比如银行转账,我们必须同时获得两个账户上的锁,才能进行操作,两个锁的申请必须发生交叉。这时我们也可以打破死锁的那个闭环,在涉及到要同时申请两个锁的方法中,总是以相同的顺序来申请锁,比如总是先申请 id 大的账户上的锁原创 2022-01-02 14:41:19 · 511 阅读 · 0 评论 -
Java 中 CountDownLatch 和 CyclicBarrier 有什么不同?
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录7. Java 中 CountDownLatch 和 CyclicBarrier 有什么不同?10道不得不会的Java基础面试题7. Java 中 CountDownLatch 和 CyclicBarrier 有什么不同?概念:CountDownLatch 是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完原创 2022-01-02 13:54:18 · 389 阅读 · 0 评论 -
volatile关键字的作用
以下都是Java的并发基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。评论区见文章目录2. volatile关键字的作用【Java并发面试】10道不得不会的Java并发基础面试题2. volatile关键字的作用volatile 英 [ˈvɒlətaɪl] ,第一个想到的一定是保证内存可见性(Memory Visibility)。可见性是性对于线程而言。上图是Java内存模型,所有原创 2021-12-26 20:37:49 · 539 阅读 · 0 评论 -
【Java并发面试】10道不得不会的Java并发基础面试题
1. start()方法和run()方法的区别2. volatile关键字的作用3. sleep方法和wait方法有什么区别4. 如何停止一个正在运行的线程?5. java如何实现多线程之间的通讯和协作?(如何在两个线程间共享数据?)6. 什么是ThreadLocal?7. Java中CyclicBarrier 和 CountDownLatch有什么不同?8. 如何避免死锁?9. Java中synchronized 和 ReentrantLock 有什么不同?10. 有三个线程T1,T2,原创 2021-12-26 19:45:13 · 3686 阅读 · 1 评论 -
【MySQL面试】10道不得不会的MySQL基础面试题
1. mysql有哪几种log2. MySQL的复制原理以及流程3. 事物的4种隔离级别4. 相关概念5. MySQL数据库几个基本的索引类型6. drop、delete与truncate的区7. 数据库的乐观锁和悲观锁是什么?8. SQL优化方式9. 从锁的类别上分MySQL都有哪些锁呢?......原创 2021-12-22 15:33:28 · 3164 阅读 · 0 评论 -
##待写 javaweb面试题
本篇主要写公众号:JavaPub拦截器过滤器监听器Session与CookieXSS和CSRF原创 2021-12-22 15:21:33 · 309 阅读 · 0 评论 -
谈谈NIO和BIO区别
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录谈谈NIO和BIO区别10道不得不会的Java基础面试题谈谈NIO和BIO区别致力于大白话说清楚。NIO和BIO是一个相对有点抽象的概念,如果你对网络有点了解,理解起来可能会更顺畅。首先说一下基本BIO:同步阻塞IO,每一个客户端连接,服务端都会对应一个处理线程,对于没有分配到处理线程的连接就会被阻塞或者拒绝。相原创 2021-12-20 15:16:57 · 440 阅读 · 0 评论 -
Java创建对象有几种方式
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录Java创建对象有几种方式10道不得不会的Java基础面试题Java创建对象有几种方式Java中有5种创建对象的方式,下面给出它们的例子使用new关键字User user = new User();使用Class类的newInstance方法我们也可以使用Class类的newInstance方法创建对象原创 2021-12-18 19:51:28 · 225 阅读 · 0 评论 -
Java注解
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录说一下Java注解10道不得不会的Java基础面试题说一下Java注解在Java编程中,注解非常常见,注解的本质是什么?注解大致分为以下三种:Java原生注解 如@Override,@Deprecated 等。大多用于 [标记] 和 [检查] 。第三方注解,如 Spring、Mybatis等定义的注解原创 2021-12-18 19:27:36 · 473 阅读 · 0 评论 -
final 有哪些用法
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录final 有哪些用法10道不得不会的Java基础面试题final 有哪些用法final关键字有四个常见用法。final修饰一个类当 final 关键字用来修饰一个类的时候,表明这个类不能有任何的子类,也就是说这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法,也就是说一个类如果是原创 2021-12-18 17:02:35 · 492 阅读 · 0 评论 -
泛型是什么,有什么特点
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录7. 泛型是什么,有什么特点10道不得不会的Java基础面试题7. 泛型是什么,有什么特点泛型在编码中有非常广泛的使用(jdk5引入),你一定经常能见到类似这种写法 <T> 。泛型提供了编译时类型安全检测机制,允许在编译时检测到非法的类型。本质是参数化类型。把类型当作是参数一样传递<数据类原创 2021-12-18 16:49:11 · 1166 阅读 · 0 评论 -
Hashcode作用
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录5. Hashcode作用10道不得不会的Java基础面试题5. Hashcode作用科普Hash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值。关于散列值,有以下几个关键结论:如果散列表中存在和散列原始输入K相等的记录,那么K必定在f(K)的存储位置上不同关键字经原创 2021-12-18 16:05:36 · 506 阅读 · 0 评论 -
equals与==区别
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录4. equals也==区别10道不得不会的Java基础面试题4. equals也==区别"=="是判断两个变量或实例是不是指向同一个内存空间。"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。除了这俩点,这个问题大概率会引出以下问题:为什么重写equals还要重写hashcode?通原创 2021-12-18 15:56:03 · 205 阅读 · 0 评论 -
重载和重写区别
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录3. 重载和重写区别3. 重载和重写区别重载和重写是一个特别好理解的概念,这里说一个通俗的解答方式重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。方法名必须相同方法的参数列表一定不一样。访问修饰符和返回值类型可以相同也可以不同原创 2021-12-18 15:33:51 · 2260 阅读 · 0 评论 -
Java自动装箱和拆箱
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录2. Java自动装箱和拆箱10道不得不会的Java基础面试题2. Java自动装箱和拆箱什么是装箱拆箱,这里不做源码层面解读,源码解读在JavaPub公众号发出。这里通过讲解 int 和 Interger 区别,解答Java自动装箱和拆箱。自动装箱 ----- 基本类型的值 → 包装类的实例自动拆箱 ---原创 2021-12-18 15:17:52 · 230 阅读 · 0 评论 -
instanceof 关键字的作用
以下都是Java的基础面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。文章目录1. instanceof 关键字的作用10道不得不会的Java基础面试题1. instanceof 关键字的作用instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。boolean result = obj instanceof c原创 2021-12-18 14:55:29 · 876 阅读 · 0 评论 -
【Java基础面试】10道不得不会的Java基础面试题
1. instanceof 关键字的作用2. Java自动装箱和拆箱3. 重载和从写区别4. equals也==区别5. Hashcode作用6. String、StringBuffer、StringBuilder 的区别是什么?7. 泛型是什么,有什么特点8. final 有哪些用法9. 说一下Java注解10. Java创建对象有几种方式.........原创 2021-12-18 14:51:40 · 3323 阅读 · 5 评论 -
300+ Java常见面试题总结【JavaPub版】
今天注定是个不寻常的下午,这份【Java常见面试题总结】我想准备很久了,前面做面试官,后来自己也面了很多一线二线互联网公司,希望通过当下真实经历做一份面试题总结,助力金九银十,喜提心仪 Offer。pub哥刚开始找工作时,觉得看面试题再找是作弊行为,不屑于刷题,干看技术教程。其实不然:经过俩年多的工作看,面试中问到的,大多都是我们在实际工作中用到的一些硬知识或软知识。每一次面试都是技术人之间的技术切磋,就和练武一样,都有助于技术和认知的提升。知道的知识更多肯定不是一件坏事。适合人群准备有面原创 2021-07-31 17:48:51 · 2097 阅读 · 1 评论 -
二叉树搜索 - Java版
二叉树搜索/** * @Author: wangshiyu javapub rodert * @Date: 2021/3/28 16:11 */public class BSTree { //定义Node类 public static class Node { int val; Node left; Node right; Node(int val) { this.val = val;原创 2021-03-28 21:04:43 · 191 阅读 · 0 评论 -
快速排序-Java版本
具体讲解:快速排序import java.util.Arrays;/** * @Author: wangshiyu javapub rodert * @Date: 2021/3/28 15:04 */public class MyQuickSort { public static void main(String[] agrs) { MyQuickSort myQuickSort = new MyQuickSort(); int[] arr = {3原创 2021-03-28 21:03:34 · 330 阅读 · 0 评论 -
Spring MVC 请求处理流程
流程说明:第⼀步:⽤户发送请求⾄前端控制器DispatcherServlet第⼆步:DispatcherServlet收到请求调⽤HandlerMapping处理器映射器第三步:处理器映射器根据请求Url找到具体的Handler(后端控制器),⽣成处理器对象及处理器拦截器(如果 有则⽣成)⼀并返回DispatcherServlet第四步:DispatcherServlet调⽤HandlerAdapter处理器适配器去调⽤Handler第五步:处理器适配器执⾏Handler第六步:Handle.原创 2021-03-28 11:51:55 · 258 阅读 · 0 评论 -
【JVM】survivor区的解释
那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里?如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC原创 2021-03-26 12:58:48 · 3031 阅读 · 2 评论 -
HotSpot JVM -- 深度好文
英文原文:The Hotspot JVM is a Ponzi Scheme [guest post] http://zeroturnaround.com/rebellabs/the-hotspot-jvm-is-a-ponzi-scheme-guest-post/ 马上到愚人节,就来说点骗子的东西吧~ 时不时的我就会听见有人抱怨说,他的 HotSpot JVM 不停的在垃圾回收,可是每次回收完后堆却还是满的。当他们发现这是因为 JVM 的内存已经不够了之后,通常会问这么个问题,为什么 J...原创 2021-03-26 12:56:26 · 234 阅读 · 0 评论 -
ThreadLocal为什么是线程安全的
JavaPub参考:https://blog.csdn.net/chengle4707/article/details/100696355如何看一个类是否是线程安全的?由JMM(Java内存模型)我们可以看出,在堆中的变量,如果同时被多个线程操作,就有可能出现线程安全问题(堆中的数据是线程共享的)。类分为有状态(有成员变量等)和无状态的, 无状态的类肯定是线程安全的, 我们都知道servlet,还有Spring中的bean都是单例的(在上下文中拿到的对象都是同一个),那它们是怎么保证线程安全的呢? 首原创 2021-03-25 17:07:22 · 445 阅读 · 0 评论 -
JAVA多线程下高并发的处理经验-- 建议阅读
参考:https://blog.csdn.net/lyly4413/article/details/87866726原创 2021-03-25 15:31:32 · 297 阅读 · 0 评论 -
Kafka零拷贝
https://zhuanlan.zhihu.com/p/78335525原创 2021-03-24 21:57:05 · 297 阅读 · 0 评论 -
缓存:热点key重建优化。
文章目录互斥锁(mutex key)永远不过开发人员使用”缓存+过期时间“的策略既可以加速数据读写,又保证数据的定时更新,这种模式基本满足绝大部分需求。但是有两个问题如果同时出现,可能就会对应用造成致命的危害:当前key是一个热点key(例如一个热门的娱乐新闻),并发量非常大。重建缓存不能在短时间完成,可能是一个复杂计算,例如复杂的SQL、多次IO、多个依赖等。在缓存失效的瞬间,有大量线程来重建缓存(如下图所示),造成后端负载加大,甚至可能会让应用奔溃。要解决这个问题也不是很复杂,但是不能为原创 2021-03-24 21:28:27 · 640 阅读 · 1 评论 -
分表分库解决思路
随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。原创 2021-03-23 23:56:32 · 405 阅读 · 1 评论 -
几种主流的定时分布式任务
在很多应用系统中我们常常要定时执行一些任务。比如,订单系统的超时状态判断、缓存数据的定时更新、定式给用户发邮件,甚至是一些定期计算的报表等等。常见的处理方式有线程的while(true) 和sleep组合、使用Timer定时器触发任务又或者是使用quartz框架。貌似这些方法可以完美的解决方案,为什么还需要分布式呢?主要有如下两点原因:1.高可用:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常就会导致功能不可用。虽然可以在单机程序实现的足够稳定,但始终有机会遇到非程序引起的故障,而这个原创 2021-03-23 23:40:16 · 423 阅读 · 1 评论 -
分布式Session共享解决方案
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,一般来说解决Session共享有以下几种方案。文章目录1、session复制2、session绑定3、利用cookie记录session4、session服务器1、session复制session复制是早期的企业级的使用比较多的一种服务器集群session管理机制。应用服务器开启web容器的sessi原创 2021-03-23 23:02:26 · 291 阅读 · 1 评论 -
【JavaPub终极版】Java8 新特性全面介绍,强烈建议收藏
阅读大约10分钟,实用性非常高,建议收藏前言Java 8 已经公布有一段时间了,种种迹象表明 Java 8 是一个有重大改变的发行版。在 Java Code Geeks 上已经有很多介绍 Java 8 新特性的文章,例如 Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API Tutorial:LocalDateTime和Abstract Class Versus Interface in the JDK 8 Era。本文还参原创 2021-03-12 11:50:38 · 355 阅读 · 0 评论 -
公司这套架构统一处理 try...catch 这么香,求求你不要再满屏写了,再发现扣绩效!
前言全局异常捕获是非常重要的一个用法,在大多项目中都会用到,下文中有详悉代码说明,文末附涨薪秘籍软件开发springboot项目过程中,不可避免的需要处理各种异常,spring mvc 架构中各层会出现大量的 try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而且还影响代码的可读性。这样就需要定义个全局统一异常处理器,以便业务层再也不必处理异常。推荐理由代码复制到项目中通过简单的配置即可实现可以灵活的根据自己的业务异常进行更细粒度的扩展原创 2021-02-22 19:48:08 · 277 阅读 · 1 评论 -
spring的controller是单例还是多例,怎么保证并发的安全
阅读大约需要2分钟答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:package com.riemann.springbootdemo.controller;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.spring原创 2021-02-20 11:17:20 · 334 阅读 · 0 评论 -
Java反射--2021面试题系列教程--大白话解读--JavaPub版本
Java反射–2021面试题系列教程(附答案解析)–大白话解读–JavaPub版本前言序言再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。适合阅读人群Java 学习者和爱好者,有一定工作经验的技术人,准面试官等。阅读建议本教程是系列教程,包含 Java 基础,JVM,容器,多线程,反射,异常,网络,对象拷贝,JavaWeb,设计模式,Spring-Spring MVC,Spring Boot / Spring Cloud,Mybatis / Hibernat.原创 2021-02-11 17:46:25 · 354 阅读 · 0 评论 -
Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
Java容器–2021面试题系列教程(附答案解析)–大白话解读–JavaPub版本前言序言再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。适合阅读人群Java 学习者和爱好者,有一定工作经验的技术人,准面试官等。阅读建议本教程是系列教程,包含 Java 基础,JVM,容器,多线程,反射,异常,网络,对象拷贝,JavaWeb,设计模式,Spring-Spring MVC,Spring Boot / Spring Cloud,Mybatis / Hibernat.原创 2021-02-09 23:19:13 · 264 阅读 · 0 评论 -
Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
Java容器–2021面试题系列教程(附答案解析)–大白话解读–JavaPub版本前言序言再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。适合阅读人群Java 学习者和爱好者,有一定工作经验的技术人,准面试官等。阅读建议本教程是系列教程,包含 Java 基础,JVM,容器,多线程,反射,异常,网络,对象拷贝,JavaWeb,设计模式,Spring-Spring MVC,Spring Boot / Spring Cloud,Mybatis / Hibernat.原创 2021-02-09 12:18:16 · 371 阅读 · 0 评论 -
jdk1.8中的ArrayList底层数组扩容的方法
这篇文章将为大家详细讲解有关jdk1.8中的ArrayList底层数组扩容的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、结论先行ArrayList在JDK1.8与JDK1.7底层区别JDK1.7:ArrayList像饿汉式,直接创建一个初始容量为10的数组,当数组的长度不能容下所添加的内容时候,数组会扩容至原大小的1.5倍JDK1.8:ArrayList像懒汉式,一开始创建一个长度为0的数组,当添加第一个元素时再创建一个始容量为10的数组,当数组原创 2021-02-05 11:35:09 · 687 阅读 · 0 评论