Java面试题
文章平均质量分 76
常见的Java面试题目
HRX98
这个作者很懒,什么都没留下…
展开
-
面试——HashMap
面试——HashMap1. JDK1.7版本:1.1 数据结构:数组+链表1.2 存放根据hash(key)确定存储在数组上的位置后,以链表的形式在该位置处存数据。此时数组该位置的链表存了多个数据,因此也称为桶存放的数据是用Entry描述static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> n原创 2022-03-08 19:44:20 · 338 阅读 · 0 评论 -
面试04——整理
1.抽象类怎么模拟接口2.项目负责3.线程与进程4.List list =new Arraylist(Array.aslist(“a”,“b”,“c”,“d”)); for(s:list){ s.equls(“a”){ s.removes() } }5.io 异常关闭 应该在哪里关闭6.public class test{ private int value; public void get(int x){ this.value=x}publ原创 2022-03-12 14:00:53 · 741 阅读 · 0 评论 -
面试03——整理
1、线程相关1.线程池原理,讲讲线程池里面的核心参数,你平时是怎么用线程池的2、线程池的应用与配置;3.谈谈你理解的IO和多线程4、网络io什么的5.实现多线程有哪些方式6.线程的创建方法核心线程池的核心参数阻塞队列阻塞策略7.线程的五种状态,有哪些方法控制他们状态,wait和sleep的区别,7、threadlocal线程复用问题8.线程池2、必问相关1、特别是jvm,hashmap,redis,mq这几个2、hashmap,秒杀,jvm内存、jc,spring 生命周期be原创 2022-03-12 13:59:47 · 1961 阅读 · 2 评论 -
面试02——线程、HashMap、、、
一、线程相关1、线程池原理,讲讲线程池里面的核心参数,你平时是怎么用线程池的基本思想:预先创建多个线程对象,放入线程池,执行完后调用,用完还原到线程池。优点:* 提高线程的利用率* 提高程序的响应速度* 便于统一管理线程对象* 可以控制最大并发数import org.junit.Test;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ExecutorService;import原创 2022-03-12 13:58:54 · 1521 阅读 · 0 评论 -
面试01——框架
框架部分面试题:MyBatis1、什么是Mybatis? 1、Mybatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身。 2、我们原来使用JDBC操作数据库,需要手动的写代码去注册驱动、获取connection、获取statement等等,现在Mybaits帮助我们把这些事情做了,我们只需要关注我们的业务sql即可,这样可以提高我们的开发效率。 3、MyBatis属于半自动的ORM框架2、Mybaits的优缺点: 优点: 1. 与原创 2022-03-12 13:57:48 · 786 阅读 · 0 评论 -
面试——JVM(不包含调优)
面试——JVM一、JVM介绍1.JVM是什么Java Virtual Machine(Java虚拟机)是java程序实现跨平台的一个重要的工具(部件)。HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。只要装有JVM的平台,都可以运行java程序。那么Java程序在JVM上是怎么被运行的?通过介绍以下JVM的三个组成部分,就可以了解到JVM内部的工作机制类加载系统:负责完成类的加载运行时数据区:在运原创 2022-03-11 18:59:28 · 378 阅读 · 1 评论 -
ReentrantLock面试总结
ReentrantLock面试总结原创 2022-03-11 18:34:23 · 2062 阅读 · 1 评论 -
面试——ReentrantLock
面试——ReentrantLockAQSAQS(AbstractQueuedSynchronizer)定义了一套多线程访问共享资源的同步器框架,是一个依赖状态的同步器。AQS定义了很多并发中的行为,比如:阻塞等待队列共享/独占公平/非公平可重入允许中断ReentrantLock介绍ReentrantLock是基于AQS框架实现的锁,它类似于Synchronized互斥锁,可以保证线程安全。基于AQS强大的并发特性和处理多线程的能力,ReentrantLock相比Synchronized原创 2022-03-10 21:50:43 · 486 阅读 · 0 评论 -
Synchronized面试总结
Synchronized面试总结1. 说说自己对于synchronized关键字的了解Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法Synchronized的作用主要有三个原子性:确保线程互斥的访问同步代码可见性:保证共享变量的修改能够及时可见有序性:有效解决重排序问题Synchronized总共有三种用法当synchronized作用在实例方法时,监视器锁(monitor)便是对象实例(this)当synchronized作用在静态方法原创 2022-03-10 21:43:54 · 694 阅读 · 0 评论 -
面试——Synchronized
面试——Synchronized如何解决线程并发安全问题在多个线程操作同一共享变量时,在对临界资源操作时,容易出现线程安全问题。因此需要同步机制来解决线程安全问题。与CAS乐观锁机制相同,Synchronized也能实现上锁,但Synchronized实现的是悲观锁。Synchronized也称为内置锁或隐式锁,因为其加锁的方式很Lock不同,用了隐式上锁的方式。学习Synchronized,我们重点关注以下几点:Synchronized在jdk1.6版本之前性能较差,1.6及之后使用了锁的膨原创 2022-03-10 20:59:35 · 247 阅读 · 0 评论 -
volatile面试题总结
1. 说说你对volatile关键字的理解volatile是java虚拟机提供的轻量级的同步机制保证可见性不保证原子性保证有序性2. 能不能详细说下什么是内存可见性,什么又是重排序呢?2.1 内存可见性这个需要从Java内存模型说起在目前的计算机中,CPU的计算速度远远大于计算机存储数据的速度,但是内存访问的速度就慢了很多。为了提升整体性能,在CPU和内存之间加入了高速缓存。CPU将计算需要用到的数据暂存进缓存中。当计算结束后再将缓存中的数据存入到内存中。这样CPU的运算可以在缓存中原创 2022-03-10 20:35:09 · 1686 阅读 · 0 评论 -
面试——volatile
面试——volatile1. 神奇的现象Volatile是面试里面几乎必问的一个话题,很多朋友仅限于会用阶段,今天我们换个角度去了解Volatile。先来看一个例子:package com.qf.test;public class Demo1 { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); whi原创 2022-03-10 19:10:57 · 358 阅读 · 0 评论 -
ConcurrentHashMap
#DK7 和 JDK8 的 ConcurrentHashMap一、ConcurrentHashMap 的 JDK7/JDK8 区别同样是线程安全,相较于 HashTable 是使用 synchronized 关键字加锁的原理(就是对对象加锁),ConcurrentHashMap 类是 Java 并发包java.util.concurrent中提供的一个线程安全且高效的 HashMap 实现。1. 整体结构JDK7:Segment + HashEntry + UnsafeJDK8: 移除 Segme原创 2022-03-08 21:19:19 · 1235 阅读 · 0 评论 -
面试——ConcurrentHashMap
面试——ConcurrentHashMapConcurrentHashMap是J.U.C(java.util.concurrent包)的重要成员,它是HashMap的一个线程安全的、支持高效并发的版本1. 数据结构JDK1.7版本如图所示,ConcurrentHashMap本质上是一个Segment数组,而一个Segment实例则是一个小的哈希表,一个Segment实例又包含若干个桶,每个桶中都包含一条由若干个HashEntry 对象链接起来的链表。一个ConcurrentHashMap中原创 2022-03-08 20:21:40 · 456 阅读 · 0 评论 -
面试——ArrayList
面试——ArrayList1. 底层研究1. ArrayList底层是数组1. 无参构造构造一个初始容量为10的空列表当给空数组链表添加第一个数据的时候,数组链表才会初始化长度2. 有初始化容量的构造3. 扩容2. LinkedList底层是链表2. 有用过ArrayList吗?它是做什么用的?ArrayList就是数组列表,底层是数组ArrayList在装载基本数据类型时,实际装载的是对应的包装类与ArrayList类似的还有LinkedList,他们俩原创 2022-03-07 19:11:21 · 1793 阅读 · 0 评论 -
spring面试题
spring面试题1. Spring是什么?Spring是一个轻量级的IOC和AOP框架,是为Java应用程序提供基础服务的一套框架,目的为了简化企业开发,是的开发者只需要关心业务需求,包括以下模块:Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;Spring AOP:AOP服务;Spring Web:提供了基本的面向Web的综合特性,提供对常见框架如Struts原创 2022-03-05 09:23:51 · 107 阅读 · 0 评论 -
MyBatis面试题整理
Mybatis面试题整理1. 什么是MyBatis?MyBatis是一个优秀的持久层框架,是对JDBC操作数据库过程进行了封装,使开发者只需要关注sql本身原来使用JDBC操作数据库,需要手写代码去注册驱动、获取connection、statement,现在Mybatis帮我妈把这些事做了,我们只需要关注业务sql,提高了开发效率MyBatis是半自动的ORM框架2. Mybatis的优缺点?优点:与JDBC相比,减少了50%以上的代码量是最简单的持久层框架,小巧易学Mybat原创 2022-02-28 19:11:41 · 1272 阅读 · 1 评论 -
Linux与Windows的区别
Linux与Windows的区别linuxWindows界面图形化/命令行图形化应用范围企业:作为服务器存在个人费用开源收费,但是已被破解安全系数高低文件名一切皆文件,没有具体区分(tar\gz\tar…)有盘符有目录有文件,以后缀名区分文件类型...原创 2022-01-15 09:03:45 · 329 阅读 · 0 评论 -
SpringBoot自动化配置原理
SpringBoot自动化配置原理1. 一个注解@SpringBootApplication1.1 @SpringBootConfiguration底层就是一个@Configuration,表示当前引导类就是一个配置类1.2 @ComponentScan组件扫描,表示当前引导类所在的包及子包下的注解能够被Spring识别1.3 @EnableAutoConfiguration是一个组合注解,由2个注解构成1.3.1 @AutoConfigurationPackage(了解)底原创 2022-01-11 14:03:51 · 96 阅读 · 0 评论 -
SpringBoot与Spring的区别
springboot与spring的区别原创 2022-01-11 09:05:32 · 132 阅读 · 0 评论 -
解bug的思路
写出你解bug的思路【详细说明】先判断当前bug是客户端问题还是服务器问题:看idea控制台是否报错1.1 没报错:90%是客户端问题1.2 报错:95%是服务器问题客户端2.1 F12,alert()服务器3.1 看最后一个cause by…3.1.1 看得懂,解决3.1.2 看不懂,继续往上看报错的信息,找自己出错的代码【蓝色】,再排错...原创 2022-01-10 10:10:44 · 126 阅读 · 0 评论 -
对Maven项目的继承、聚合、拆分的理解
继承:工程之间的继承。用来在开发项目时,使用分模块的思想去管理一个完整的项目,父工程就用来管理子模块,子模块就用来提供具体功能实现。聚合:由父工程统一管理子模块,在子模块内容发生变化时,通过操作父工程就可以一键操作子模块,以此来达到项目中的内容是最新的拆分:把一个完整的项目按照业务拆分成一个个小的独立的子模块,作为一个服务存在,模块之间可以被访问或依赖...原创 2022-01-10 10:07:34 · 229 阅读 · 0 评论 -
转发与重定向的区别
1. 转发概念:由服务器端进行的页面跳转原理:https://blog.csdn.net/qq_38122518/article/details/804297222. 重定向概念:由浏览器端进行的页面跳转原理:总结https://blog.csdn.net/weixin_40001125/article/details/88663468...原创 2022-01-06 08:40:24 · 604 阅读 · 0 评论