
【面试题】
文章平均质量分 70
晓风残月一望关河萧索
志存高远,脚踏实地。
路漫漫其修远兮,吾将上下而求索。
展开
-
【面试复盘】2022/4.14 阿里蚂蚁集团面试
4月份想暑期实习,也是检测下自己复习的怎么样。内推大概过了一周多的时间,打电话约笔试。笔试过了,然后过了2天约面试。一面电话面,主要项目+八股,全程54分钟。阿里巴巴支付宝数据部门:说一下项目的难点,实习没问,主要拆分项目。【JWT权限验证】JWT怎么验证的?和Cookie、Session之间的区别?为什么传统的Session、Cookie会出现什么问题?JWT解决了什么问题?JWT的组成有那几块?分别有什么作用?JWT遇到tok原创 2022-04-24 19:31:23 · 3168 阅读 · 2 评论 -
【详解】为什么HashMap的长度是2的整数次幂?
为了加快哈希计算、以及减少哈希冲突。1、为什么可以加快计算?& 运算更快!我们都知道为了找到 KEY 的位置在哈希表的哪个槽里面,需要计算 hash(KEY) % 数组长度但是!% 计算比 & 慢很多所以用 & 代替 %,为了保证 & 的计算结果等于 % 的结果需要把 length 减 1也就是 hash(KEY) & (length - 1)这个 hash(KEY) 没什么可说的,调用 Object 里面的 native 方法完成计算,原创 2022-03-14 13:13:44 · 964 阅读 · 0 评论 -
【详解】MySQL分区表,分区的过程,四种分区类型
分区的功能并不是在存储引擎层进行完成的,因此不是只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM,NDB都支持。当并不是所有的存储引擎都支持,如CSV等不支持。在使用分区功能之前,应该对存储引擎对分区的支持有所了解。MySQL数据库在5.1版本时添加了分区功能。分区的过程是将一个表或者索引分解为多个更小、更可管理的部分。就访问数据库应用而言,从逻辑上讲,只有一个表或者一个索引,但是在物理上,这个表或索引可能由数十个物理分区组成。每个分区都是...原创 2022-03-09 10:43:00 · 2324 阅读 · 1 评论 -
update加锁分析:是加行锁还是表锁?具体加锁加哪儿?
InnoDB默认事务的隔离级别是可重复读。在可重复读的情况下,会出现幻读的情况。幻读就是同一事务下,两次连续查询的结果不一致,会返回之前不存在的行。InnoDB存储引擎实现了自己的行锁,通过next-key锁(记录锁和间隙锁的组合)来锁住记录本身和记录之间的间隙,防止其他事务在这个记录之间插入新的记录,从而避免了幻读的现象。当我们执行update语句的时候,实际上会对记录加独占锁(X锁)。另外其他事务对持有独占锁的记录进行修改的时候会被阻塞。这个锁并不是执行完update语句才会释放,而是会等事务结转载 2022-03-08 16:14:47 · 7802 阅读 · 2 评论 -
【计算机网络】【面试】:TCP传输层部分
1、TCP与UDP区别UDP和TCP都是属于传输层的。①TCP发送数据之前需要先建立连接,面向连接的;UDP发送数据之前不需要建立连接,是无连接的。②TCP提供可靠的传输。也就是说通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付。③TCP是面向字节流的,TCP把数据看做一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机发送频率降低。④每一条TCP是点对点的;而UDP支持一对一,一对多,多对一和多对原创 2022-01-27 17:54:44 · 454 阅读 · 0 评论 -
【详解】面试必问:SpringBoot自动配置原理
前言 SpringBoot框架是开发中的一大利器,其简化了spring的xml的配置,遵循了”约定大于配置“的原则,使用注解对常用的配置做默认配置,减少使用xml配置模式。SpringBoot为常用框架封装了大量的starter,比如spring-boot-starter-web会整合springmvc和内嵌的tomcat。SpringBoot在底层封装了默认的配置,修改配置在application.yml全局配置文件。如今在pom.xml文件中引用starter就可以使用这个框架,使用...原创 2021-11-10 15:19:33 · 10769 阅读 · 0 评论 -
【详细清晰】:局部变量表;操作数栈;i = i++;i = ++i 分析
1、知识补充JVM虚拟机里面有很多结构,本题主要用到局部变量表和操作数栈。局部变量表 局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序被编译成Class文件时,就在方法的Code属性的max_locals数据项中确定了该方法所需要分配的最大局部变量表的容量。 局部变量表的容量以变量槽(Slot)为最小单位,32位虚拟机中一个Slot可以存放一个32位以内的数据类型(boolean、byte、char、short、int、...原创 2021-04-14 20:53:13 · 602 阅读 · 0 评论 -
【JavaSE面试题】:类初始化和实例初始化执行顺序(子父类的静态方法,静态代码块,参数构造器等执行顺序)
1、考点 ①类的初始化过程 ②实例初始化过程 ③方法的重写2、类初始化过程 ①一个类要实例化必须初始化该类,main方法所在的类需要先加载和初始化。 ②一个子类要初始化首先先初始化父类 ③一个类初始化就是执行虚拟机中的<clinit>()方法,<clinit>()方法是类字节码初始化的方法。<clinit>()方法由静态变量赋值代码和静态代码块组成。类变量赋值代码和静态代码块从上到下依次执行。<cl...原创 2021-04-14 17:39:24 · 440 阅读 · 0 评论 -
【彻底理解】为什么重写equals方法后,必须要重写hashcode方法?
一、基本知识1、equals:比较的是两个对象是否相等,包括对象的内容、对象的地址是否相等。判别的依据是equals两端比较的类中是否重写了equals方法。 对象的地址、对象的值(内容)是两个不容的概念。地址是存储值的地方,地址相当于对象在内存中的一块区域,该区域给它编上号。值相当于该区域存储的东西。 ①对象相等,比较的是内存中存放的对象的内容是否相等。 ②引用相等,比较的是对象指向的内存地址是否相等。 当使用equals方法的时候,需...原创 2021-03-30 19:48:31 · 1536 阅读 · 0 评论 -
【绝对经典】Java面试题七:== 和equals之间的区别
1、 == :作用是判断两个对象的地址是否相等,相等的话返回true。或者说两个对象是不是同一个对象。 ① 如果变量的类型是基本数据类型,则比较是值,比如:int a = 2;int b=2; a== b。 ② 如果比较的是引用数据类型,则比较的是对象内存地址是否一样,一样返回的true,不一样返回的是false2、 equals:作用是判断两个对象是否相等。有两种情况: ① 如果类没有重写equals()方法,则比较的是两个对象是不是同一个对象,等价于...原创 2021-03-29 23:57:31 · 476 阅读 · 2 评论 -
Java面试题六:关于Java容器List、Set、Map,知多少?为什么HashMap扩容是2的倍数?
一、概述Java容器分为List、Set、Map,他们都是Collection接口的实现类。Java集合框架主要包含两种类型的容器,一种是集合(Collection),存储元素的集合;另一种是Map,存储键值对映射。接口Collection包含3中类型接口:List、Set、Queue,具体常用的实现类包括:ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等。层级如下:二、具体容器介绍1、List.原创 2021-03-23 20:58:23 · 332 阅读 · 1 评论 -
Java面试题四:String,StringBuffer,StringBuilder之间的区别
String,StringBuffer,StringBuilder都是代表字符串。 String类是不可变的类,任何让String类的改变都会让String类产生一个新的对象。 StringBuffer是可变类,任何StringBuffer字符串的改变都不会产生一个新的对象。StringBuffer是String字符串的一个缓冲区,对于String来说,StringBuffer是可以改变的,StringBuffer是线程安全的。有几个线程同时操作StringBuffer序列,所有...转载 2021-03-16 17:54:54 · 206 阅读 · 0 评论 -
Java面试题五:什么是串行,并行,并发,同步,异步?
①并发: 并发编程又叫多线程编程,并发的实质是一个物理上的CPU在若干道程序之间多路复用,有限的资源多用户共享提高效率。任务数多余CPU的核数,通过操作系统的任务调度算法,实现多个任务一起执行的。一个CPU不可能真正同时运行一个一个以上的线程,只能把CPU的时间分为多个时间段,再将各个时间段分给多个线程执行,其他线程处于挂起状态,这种方式称为并发。②并行: 两个或者两个以上的事件或者活动在同一时刻发生。多道程序的环境下,允许程序同一时刻在不同的CPU同时执行。当系统有一个以上...原创 2021-03-16 19:16:14 · 1047 阅读 · 0 评论 -
Java面试题三:进程和线程的区别和联系
当我们使用电脑打开QQ的时候,这时候电脑就开启一个进程。当我们查看QQ里面的发的信息或者扫一扫等各种操作的时候,其实就开启了线程。进程: 进程是系统正在运行的应用程序,程序一旦运行就是进程, 进程是资源分配和调度的最小单位。 程序是是一组指令的有序集合,本身没有什么含义,只是一个静态的实体。而进程不同,它是程序在某个数据集上的执行。进程是一个动态的实体,有自己的声明周期,进程因创建而产生,因调度而运行,因等待资源或者时间处于等待状态,因完成任务而撤销。反应了一个程...原创 2021-03-12 11:40:04 · 282 阅读 · 0 评论 -
Java面试题一:final、finally、finalize三个关键字的区别和联系
1、final: final可以修饰类、变量、方法。 final修饰类的时候表示该类不能被继承,final修饰方法表示该方法不能被重写,final修饰变量的时候表示该变量是一个常量不能被重新赋值。2、finally: finally一般作用在异常try—catch—finally中,在处理异常的时候,通常将我们一定要执行的代码放到finally代码块中。表示不管是否出现异常代码块中的内容都会执行。3、finalize finalize是一个方法,属于Obj...原创 2021-03-09 22:56:55 · 688 阅读 · 0 评论 -
Java面试题二:重载和重写的区别
1、重载: 在Java中,方法的重载就是在类中创建多个同名的方法,方法中的参数类型和参数的个数不同,多个同名函数同时存在,重载是多态的一种表现。调用方法时,通过传递给他们不同的参数个数和参数类型来决定使用那一个方法,方法的返回值类型可以一样,也可以不一样。java重载是根据参数的类型和数量来进行判断的,跟方法的返回值没有关系。 特点:在同一个类中, 方法名相同、参数类型和参数个数不同。能够有不同的訪问修饰符;能够抛出不同的异常; 代码示例如下: pub...原创 2021-03-09 22:41:01 · 244 阅读 · 0 评论