java基础面试
迷你比特位
这个作者很懒,什么都没留下…
展开
-
JVM面试题
1、类的加载过程:这时你可以先回答类的加载机制:第一步是通过javac指令将代码编译成class文件,对代码进行验证,验证代码是否有编译问题,后加载类的静态变量,类的成员变量,成员方法,使用,最后销毁2、JVM的组成:如下图:三大部分 1、类装载子系统 2、运行时数据区 3、字节码执行引擎程序计数器:当前线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有。Java虚拟栈(线程栈):存放基本数据类型、对象的引用、方法出口等,线程私有。jvm给类开辟的空间,存放类上面原创 2021-12-12 17:56:48 · 191 阅读 · 0 评论 -
缓存雪崩,缓存穿透,缓存击穿
1、缓存雪崩指在我们设置缓存时key采用了相同的过期时间,导致缓存在某一时刻同时实效,请求全部转发到了数据库,导致数据库压力过重,雪崩解决方法:原有的实效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会很低,很难引发集体实效事件2、缓存穿透:a、指查询一个一定不存在的数据,在缓存中是没有,也就是缓存不命中,那就去查询数据库,但是数据库也没有查到这条数据记录,然后我们没有将这次查到的null写入缓存,就导致这个不存在的数据每次请求都到数据库中查找,失去了缓存的意义,原创 2021-12-12 00:04:30 · 268 阅读 · 0 评论 -
mysql的执行计划
怎么查看MySQL的执行计划:使用EXPLAIN ;例如EXPLAIN SELECT brand_id, NAME ,descript FROM pms_brand WHERE show_status = '1';结果这张图中比较重要的字段,type 、key 、rows、filteredtype:key: 使用到的索引名rows:按照这样执行会读取多少行数据量,filtered:百分比,读取到的rows和返回的行数的比例,比例越高越好覆盖索引:sql语句中select 和from之间原创 2021-12-09 21:14:21 · 62 阅读 · 0 评论 -
基础面试题
1、并行,并发,串行并行是多个任务一起执行,互不干扰,躲在多核cpu中出现并发是多个线程公共完成一个任务,可能会相互读取相同的数据,发生线程不安全的情况串行是一个任务一个任务的执行2、并发的三大特性:保证中三大特性才能保证线程安全,这三大特性就是为了保证线程安全++,不是线程安全的,long 和double不具备原子性的原因可能是32位的jvm将这两个64位的数据分成两个32位来分次操作,这样可能就会有两个线程来完成这个操作,失去了原子性原子性:在一次操作中不能被中断,要么全部执行完成,要么都原创 2021-12-06 21:36:23 · 73 阅读 · 0 评论 -
HashMap和HashTable有什么区别,HashMap的底层是怎么样的
区别:1、HashMap的方法没有synchronized修饰,在多条线程下,会出现资源争抢的情况,线程不安全,而Hashtable是线程安全的2、HashMap的底层:1,在1.8之前是数据加列表的形式,在1.8之后是数组加红黑树,1.8开始当链表的长度达到8,或者数组长度超过64,链表会转为红黑树,以提高查询的效率(链表长降低查询的效率)2,我们知道Map的key -value的形式,当数据put进map中 时,会先对key进行hash值得计算,根据hash值找到对应数组的下标;如果存在不同原创 2021-08-03 23:28:21 · 132 阅读 · 0 评论 -
Map知识
Map接口1、Map是双列集合,数据存储的形式是key - value 形式的,根据key来获取value值;每次的操作都是针对一个键值对来进行的,键和值总是依赖在一起,相当于是两列数据在同时存储,称为“双列集合”2、map的特点:1、键(key)是唯一的,在一个Map中,不能同时存在两个相同的键2、值(value)可以不唯一,在一个Map中,可以同时存在多个相同的值3、每个确定的键,一定只能对应一个唯一的值3、map常用的方法1、put(K key, V value)1、如果集合中已经存原创 2021-07-27 22:10:35 · 139 阅读 · 0 评论 -
List三种遍历方式详解
list集合list集合常用方法1、add(int index, Object obj) 在指定的索引增加值`List list = new ArrayList();list.add(0, “abc”);list.add(0, “xyz”);list.add(1, “qq”);2、remove(int index) 根据指定索引删除数据list.remove(1)3、set(int index, Object obj) 将指定索引处的元素进行修改list.set(1,“qq”);原创 2021-07-26 22:37:15 · 27104 阅读 · 0 评论 -
2021-07-25
java基础集合框架底层数据结构Collection1. ListArraylist:底层是 Object数组,数组查询快Vector: Object数组LinkedList: 双向循环链表,增加删除快2. SetHashSet(无序,唯一):存储钱会计算数据的hash值,hash值不同则直接存储,如果hash值相同则实际比较数据值,基于 HashMap 实现的,底层采用 HashMap 来保存元素LinkedHashSet: LinkedHashSet 继承与 HashSet,并且其内部原创 2021-07-25 20:32:23 · 56 阅读 · 0 评论 -
2021-07-20
基础面试题——谈谈你对集合List的了解1,回答这类“谈谈对某某集合框架的了解”是一种比较考验面试者的题,回答的简短,面试官觉得你不会,回答的多,又有可能让面试官不停的发问,导致进入你知识的盲区 ,在我的看法,回答这种问题首先,先回答List的概述 ,再回答List的常用方法,最后回答一下List的应用List是一种单列有序的集合(有序的单列集合的顶层接口)有两个主要的实现类(ArrayList 和LinkedList),每一个数据都有属于它的位置,这为遍历List提供了方便,List(集合)只原创 2021-07-20 22:06:42 · 56 阅读 · 0 评论 -
2021-07-16
**StringBuffer、StringBuilder **1、相同点:都是字符串的缓冲区,都是字符串的生成器,都是可变字符,底层都是字符数组,大部分方法相同,常用的方法有append(),insert();2、不同 点线程安全性,StringBuffer是线程安全的,在多线程情况下能保证数据安全,得益于StringBuffer中加了synchronized,但是这样效率会比较低,只能一条数据一条数据的添加或删除StringBuilder是线程不安全的,在进行操作的时候效率比较高StringB原创 2021-07-16 21:40:38 · 50 阅读 · 0 评论 -
2021-07-15
string类型知多少:java中我们最常用的类型就是String类型 ,那学习了解String类型那就是必不可少的,1、首先我们来明确一下声明样的类型是String类型的,例如:String s = “玉玉”;这种用双引号包起来的,或者是直接声明一个String 对象的(String str = new String())的不同的是第一种 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:2、String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了,原创 2021-07-15 22:49:13 · 52 阅读 · 0 评论 -
2021-07-15
java基础面试题1、关键字final 在 Java 中有什么作用?1、被final修饰的类为最终类,不能再变了,主要理解为该类不能被继承,不能被扩展,相当于是不能变了,方法不能再重写2、修饰方法:最终方法该方法的内容不能改变,不能被重写3、修饰变量:最终变量1、该变量的内容不能改变,成为了一个常量,只能赋值一次2、声明常量格式:符号常量,命名规范:全部大写,下划线分隔 public static final 数据类型 常量名称 = 常量值;3、final修饰哪个原创 2021-07-15 22:25:22 · 47 阅读 · 0 评论 -
2021-07-14
java基础面试题 (二)1、常见java面试题之== 和 equals 的区别是什么?在代码中,我们经常会比较两个数值,或者两个对象是否相等,这时候我们一般都会用到 == 或者 equals ,那这两个的用法有什么区别呢首先 先说第一个区别 ,针对的类型 : == 可以用于比较任何类型,包括基本类型和引用类型,当然也可以用来比较枚举类 ,而equals比较针对的是引用类型通过这个例子可能理解更加深刻,声明两个字符串常量 x 和 y ,在创建一个新的字符串对象,在我们的常量吃中,直接声明的字符原创 2021-07-14 21:20:56 · 127 阅读 · 0 评论 -
2021-07-13
Java基础面试题1、jdk 和jre的区别:jdk :是Java development kit (Java开发工具包的简称),也是我们做Java语言开发必要的工具,安装在电脑的就是这个,它提供了Java的开发编译和运行Java的环境jre :Java runtime environment(java运行环境),为Java的运行提供了需要的运行环境,也可以理解为只要你有Java的编译完成后的class文件,在jre中直接就可以运行;简单来说,jdk包含了jre ,还有一个就是jvm环境,这是Jav原创 2021-07-13 21:08:29 · 43 阅读 · 0 评论