首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 疫情期间的几次远程面试记录

redis的list 是什么数据结构实现的 平时开发中,使用的哪个锁 锁相关。。。...讲讲mysql的事务 说说mvcc update时会加锁吗 mysql死锁如何避免 java虚拟机。。。。...为什么(印象最深的题) 对一个10g的大文件进行排序,内存只有32m,怎么做 java的方法执行流程 虚拟机栈中栈帧存了什么 如果A方法调用B方法 传递给B的参数 出现在A的栈帧还是B的栈帧 volatile...冲突的 除了拉链法 还有什么办法可以解决Hash冲突 java有哪些锁 synchronized如果加在一个对象的两个方法上 两个线程访问这个对象的不同方法,会阻塞吗 char double float...11对吗 那么这个线程执行的任务 是队列头的任务 还是我刚刚提交的任务 java虚拟机内存分布 方法区存放什么 老年代GC流程 什么时候STW volatile 关键字了解吗(同样的问题) 为什么可以保证可见性

69730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    tomcat java_tomcat和maven的区别

    缓存 什么是缓存[Cache] 存在内存中的临时数据 将用户经常查询的数据放在缓存(内存)中,用户去查询数据的时候就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题...为什么使用缓存 减少和数据库的数据交换次数,较少系统开销,提高系统效率 什么样的数据库能使用缓存 经常查询并且不经常改变的数据 Mybatis缓存 MyBatis 内置了一个强大的事务性查询缓存机制...要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行: 一级缓存 一级缓存也叫本地缓存: 与数据库同一次会话期间查询到的数据库会放在本地缓存中 以后如果需要获取相同的数据,...查询不同的情况 2. 增删改操作,可能会改变原来的数据,所以必定会刷新缓存 3. 查询不同的Mapper.xml 4....如果当前会话关闭了,这个会话对应的一级缓存就没了,但是我们想要的是,会话全关闭了,一级缓存中的数据被保存到二级缓存中 新的会话查询到信息,就可以从二级缓存中获取内容 不同的mapper查询出来的结果会放在自己的缓存中

    39040

    tomcat java_maven和tomcat的关系

    缓存 什么是缓存[Cache] 存在内存中的临时数据 将用户经常查询的数据放在缓存(内存)中,用户去查询数据的时候就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题...为什么使用缓存 减少和数据库的数据交换次数,较少系统开销,提高系统效率 什么样的数据库能使用缓存 经常查询并且不经常改变的数据 Mybatis缓存 MyBatis 内置了一个强大的事务性查询缓存机制...要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行: 一级缓存 一级缓存也叫本地缓存: 与数据库同一次会话期间查询到的数据库会放在本地缓存中 以后如果需要获取相同的数据,...查询不同的情况 2. 增删改操作,可能会改变原来的数据,所以必定会刷新缓存 3. 查询不同的Mapper.xml 4....如果当前会话关闭了,这个会话对应的一级缓存就没了,但是我们想要的是,会话全关闭了,一级缓存中的数据被保存到二级缓存中 新的会话查询到信息,就可以从二级缓存中获取内容 不同的mapper查询出来的结果会放在自己的缓存中

    40920

    启动期间的内存管理之初始化过程概述----Linux内存管理(九)

    变量 1.5 今日内容(启动过程中的内存初始化) 在初始化过程中, 还必须建立内存管理的数据结构, 以及很多事务....因为内核在内存管理完全初始化之前就需要使用内存. 在系统启动过程期间, 使用了额外的简化内存管理模块, 然后在初始化完成后, 将旧的模块丢弃掉. 因此我们可以把linux内核的内存管理分三个阶段。..., 直到我们真正的内存管理器被初始化完成并能投入使用, 我们将旧的内存管理器丢掉 即因此在系统启动过程期间, 内核使用了一个额外的简化形式的内存管理模块早期的引导内存分配器(boot memory allocator–bootmem...分配器)或者memblock, 用于在启动阶段早期分配内存, 而在系统初始化完成后, 该分配器被内核抛弃, 然后初始化了一套新的更加完善的内存分配器. 2.1 引导内存分配器bootmem 在启动过程期间...| 所有zone的后备列表都在 | pglist_data->node_zonelists[0]中; | | 期间也对per-CPU变量boot_pageset

    2K31

    【java基础☞初始化顺序】java继承中的初始化顺序

    子类静态成员被初始化 子类的静态代码块被执行 父类非静态成员被初始化 父类的非静态代码块被执行 父类的构造方法被执行 子类非静态成员被初始化 子类的非静态代码块被执行 子类的构造函数被执行...2、JAVA 类的加载机制 Java类加载分为5个过程,分别为:加载,连接(验证,准备,解析),初始化,使用,卸载。...2)将字节流所代表的静态存储结构转化为方法区的运行时数据结构; 3)在内存中生成一个该类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。...验证阶段会完成以下4个阶段的检验动作: 1)文件格式验证 2)元数据验证(是否符合Java语言规范) 3)字节码验证(确定程序语义合法,符合逻辑) 4)符号引用验证...初始化 初始化阶段是类加载过程的最后一步,主要是根据程序中的赋值语句主动为类变量赋值。 当有继承关系时,先初始化父类再初始化子类,所以创建一个子类时其实内存中存在两个对象实例。

    1K30

    Java的初始化块

    三种初始化数据域的方法:在构造器中设置值在声明中赋值初始化块(initialization block)初始化块在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。...首先运行初始化块,然后才运行构造器的主体部分。初始化块这种机制不是必需的,也不常见。通常会直接将初始化代码放在构造器中。---由于初始化数据域有多种途径,所以列出构造过程的所有路径可能相当混乱。...下面是调用构造器的具体处理步骤:所有数据域被初始化为默认值(0、false 或 null)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块如果构造器第一行调用了第二个构造器,则执行第二个构造器主体执行这个构造器的主体静态的初始化块可以通过提供一个初始化值...前面已经介绍过第一种机制(提供一个初始化值):private static int nextId = 1;如果对类的静态域进行初始化的代码比较复杂,那么可以使用静态的初始化块。...参考资料《Java核心技术卷一:基础知识》(第10版)第 4 章:对象与类 4.6.7 初始化块

    19020

    启动期间的内存管理之pagging_init初始化分页机制--Linux内存管理(十四)

    1 今日内容(分页机制初始化) 在初始化内存的结点和内存区域之前, 内核先通过pagging_init初始化了内核的分页机制....在分页机制完成后, 才会开始初始化系统的内存数据结构(包括内存节点数据和内存区域), 并在随后初始化buddy伙伴系统来接管内存管理的工作 2 分页机制初始化 arm64架构下, 内核在start_kernel...()->setup_arch()中通过arm64_memblock_init( )完成了memblock的初始化之后, 接着通过setup_arch()->paging_init()开始初始化分页机制...区域 存储内容 栈 局部变量, 函数参数, 返回地址等 堆 动态分配的内存 BSS段 未初始化或初值为0的全局变量和静态局部变量 数据段 一初始化且初值非0的全局变量和静态局部变量 代码段 可执行代码,...字符串面值, 只读变量 2.2 paging_init初始化分页机制 paging_init函数定义在arch/arm64/mm/mmu.c?

    1.4K20

    启动期间的内存管理之bootmem_init初始化内存管理–Linux内存管理(十二)

    因为内核在内存管理完全初始化之前就需要使用内存. 在系统启动过程期间, 使用了额外的简化悉尼股市的内存管理模块, 然后在初始化完成后, 将旧的模块丢弃掉....| 所有zone的后备列表都在 | pglist_data->node_zonelists[0]中; | | 期间也对per-CPU变量boot_pageset..., 从体系结构相关信息的初始化慢慢向上层展开, 其主要执行了如下操作 特定于体系结构的设置 在完成了基础的内存结点和内存域的初始化工作以后, 我们必须克服一些硬件的特殊设置 在初始化内存的结点和内存区域之前...内核接着setup_arch()->bootmem_init()函数开始执行 体系结构相关的代码需要在启动期间建立如下信息 系统中各个内存域的页帧边界,保存在max_zone_pfn数组 早期的内核还需记录各结点页帧的分配情况...| 所有zone的后备列表都在 | pglist_data->node_zonelists[0]中; | | 期间也对per-CPU变量boot_pageset

    2.8K31

    JAVA和tomcat 环境的配置

    ##创建文件夹 chown -R 用户:用户组 /java ##修改/java 的所属的用户和组 3.修改用户限制 vi /etc/security/limits.conf.../bin 目录下面,新建 setenv.sh配置,catalina.sh启动的时候会调用,同时配置java内存参数 setenv.sh的内容如下: #add tomcat pid CATALINA_PID...Area)、堆(Heap) Xss:每个线程的stack大小(栈) Xmx:JAVA HEAP的最大值、默认为物理内存的1/4 Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样...Xmn:JAVA HEAP young区的大小 XX:PermSize:设定内存的永久保存区域 XX:MaxPermSize:设定最大内存的永久保存区域 在JDK1.8中,取消了PermGen,取而代之的是...Metaspace,所以PermSize和MaxPermSize参数失效,取而代之的是 创建 tomcat.pid 在tomcat目录内 执行 touch tomcat.pid 6.编写tomcat.service

    69330

    Java中的静态初始化和非静态初始化

    Java中的初始化 Java与C++的一个不同之处在于,Java不仅有构造函数,还有一个“初始化块”(Initialization Block)的概念。...Java中的初始化块在创建Java对象时隐式执行,并且是在构造函数之前执行。 2....静态初始化 // 定义 static { ... } 静态初始化块执行的优先级高于非静态初始化块,在对象装载到JVM中时执行一次,仅能初始化类成员变量,即static修饰的数据成员。 3....总结 从某种程度上来看,初始化块是构造器的补充,初始化块总是在构造器之前执行。初始化块是一段固定执行的代码,它不能接受任何参数。因此初始化块对同一个类的所有对象所进行的初始化处理完全相同。...如果有一段初始化处理代码对所有的对象完全相同,且无需接受任何参数,就可以把这段初始化处理代码提取到初始化块中。通过把多个构造器中的相同代码提取到初始化块中定义,能更好地提高初始化代码的复用。

    2.8K20

    Java类的初始化和清理

    不幸的是,用户必须得记得去调用它。在 Java 中,类的设计者通过构造器保证每个对象的初始化。...7 成员初始化 Java 尽量保证所有变量在使用前都能得到恰当的初始化。...由输出可见,引用 w3 被初始化了两次:一次在调用构造器前,一次在构造器调用期间(第一次引用的对象将被丢弃,并作为垃圾回收)。这乍一看可能觉得效率不高,但保证了正确的初始化。...非静态实例初始化 Java 提供了被称为实例初始化的类似语法,用来初始化每个对象的非静态变量,例如: // housekeeping/Mugs.java // Instance initialization...C++ 的发明者 Bjarne Stroustrup 在设计 C++ 期间,在针对 C 语言的生产效率进行的最初调查中发现,错误的初始化会导致大量编程错误。

    92820

    Java 对象的初始化过程_下

    前言 本文将继上一篇文章《Java 对象的初始化过程_上》进一步讲述Java 对象的初始化过程。...示例 首先创建两个父子关系的类 Animal.java package cn.ttext.test.init; public class Animal { //体重 private int...在堆内存中开辟类实例对象的空间。 对类实例对象中的成员变量进行默认初始化。 对类实例对象中的成员变量进行显示初始化。...(private int i = 10;这样的成员变量,将在这个环节初始化) 进行构造函数初始化。...对子类进行构造函数初始化时,要先初始化父类的构造函数,既先运行 Animal 的构造函数,再运行 Person 的构造函数,由于构造代码块中的代码实际上是放到 构造函数中运行的,所以输出了5-10行的内容

    56420

    Java 对象的初始化过程_上

    前言 本文主要以白话的形式 ‘简单’ 的描述在 java 中 new 对象的过程,之所以说是 ‘简单’ 的描述是因为,在本文中不会讲述底层的加载过程。...示例 首先认识几个知识点: 静态代码块 它会在类初始化的时候执行一次,仅能初始化类变量, 即被static修饰的成员变量,如果有多个静态代码块时,会按照静态代码块的编写顺序执行。...所以也可以认为,构造代码块将在构造方法执行之前执行,如果存在有多个构造代码块时,那么就会按照构造代码块的编写顺序执行。由于构造代码块的代码是放到构造方法中执行的,所以作用也是初始化类实例变量。...适用场景: 一个类,它不管创建多少个实例对象,都需要执行相同的初始化代码。 你的类有n个构造方法,而每个构造方法都需要执行相同的初始化代码。...构造方法可以初始化类成员变量。

    66120

    【JAVA进阶】HashMap容量的初始化

    (jdk1.7.0_79)下面来分别测试下,在不指定初始化容量和指定初始化容量的情况下性能情况如何。...HashMap中容量的初始化 当我们设置HashMap的初始化容量时,实际上HashMap会采用第一个大于该数值的2的幂作为初始化容。...MAXIMUM_CAPACITY : n + 1; 上面的代码挺有意思的,一个简单的容量初始化,Java的工程师也有很多考虑在里面。...好了,我们现在解释清楚了Step 1和Step 2的代码。就是可以把一个数转化成第一个比他自身大的2的幂。(可以开始佩服Java的工程师们了,使用无符号右移和按位或运算大大提升了效率。)...关于这个值的设置,在《阿里巴巴Java开发手册》有以下建议: initinalCapacity=(需要存储的元素个数/负载因子)+1。

    1.8K10

    Java的,与类的初始化顺序

    转载自 https://blog.csdn.net/sujz12345/article/details/52590095 与 Java在编译之后会在字节码文件中生成方法,称之为实例构造器,该实例构造器会将语句块...,变量初始化,调用父类的构造器等操作收敛到方法中,收敛顺序(这里只讨论非静态变量和语句块)为:  1....子类构造函数 所谓收敛到方法中的意思就是,将这些操作放入到中去执行 Java在编译之后会在字节码文件中生成方法,称之为类构造器,类构造器同实例构造器一样,也会将静态语句块,静态变量初始化,收敛到方法中...父类静态变量初始化  2. 父类静态语句块  3. 子类静态变量初始化  4. 子类静态语句块 方法是在类加载过程中执行的,而是在对象实例化执行的,所以一定比先执行。...父类静态变量初始化  2. 父类静态语句块  3. 子类静态变量初始化  4. 子类静态语句块  5. 父类变量初始化  6. 父类语句块  7. 父类构造函数  8.

    31600
    领券