
面试
文章平均质量分 59
面试
千百元
这个作者很懒,什么都没留下…
展开
-
Java中的栈(Stack)为什么要采用先进后出
Java中的栈(Stack)为什么要采用先进后出原创 2023-10-15 18:19:02 · 618 阅读 · 0 评论 -
Sleep和wait的区别
1,所属的类不同:sleep方法是定义在Thread上wait方法是定义在Object上2,对于锁资源的处理方式不同sleep不会释放锁wait会释放锁3,使用范围:sleep可以使用在任何代码块wait必须在同步方法或同步代码块执行4,与wait配套使用的方法void notify()Wakes up a single thread that is waiting on this object’s monitor.译:唤醒在此对象监视器上等待的单个线程void n转载 2021-03-02 10:53:54 · 106 阅读 · 0 评论 -
对线程安全的理解
如果这个是面试官直接问你的问题,你会怎么回答?一个专业的描述是,当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的那么我们如何做到线程安全?实现线程安全的方式有多种,其中在源码中常见的方式是,采用synchronized关键字给代码块或方法加锁,比如StringBuffer查看StringBuffer的源码,你会看到是这样的:那么,我们开发中,如果需要拼接字符串,使用StringBuilder还是S转载 2021-03-02 10:41:36 · 244 阅读 · 0 评论 -
线程的生命周期
一图胜千言!灵魂画家出品。上述的图有些简略,下面详细说明下,线程共有6种状态:new,runnable,blocked,waiting,timed waiting,terminated1,当进入synchronized同步代码块或同步方法时,且没有获取到锁,线程就进入了blocked状态,直到锁被释放,重新进入runnable状态2,当线程调用wait()或者join时,线程都会进入到waiting状态,当调用notify或notifyAll时,或者join的线程执行结束后,会进入r转载 2021-03-02 10:37:54 · 94 阅读 · 0 评论 -
JAVA8元空间是什么?
栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中可能有多份。String s1 = "china"; String s2 = "china"; String ...转载 2021-03-01 00:06:47 · 299 阅读 · 0 评论 -
成员变量 局部变量区别
成员变量和局部变量:—成员变量就是方法外部,类的内部定义的变量;—局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。形式参数是局部变量,局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。成员变量存储在堆中的对象里面,由垃圾回收器负责回收。class BirthDate { private int day; private int month; private int year; public BirthDate(i...转载 2021-03-01 00:06:50 · 191 阅读 · 0 评论 -
Java String类详解
https://blog.csdn.net/wei_zhi/article/details/52761081但这里是不是有一个问题,常量池是放方法区 (栈),而不是堆吧!String类是一个字符串类型的类,使用“XXXX”定义的内容都是字符串,虽然这个类在使用上有一些特殊,但是String本身是一个类。一、String的实例化两种方式1、直接赋值实例化:String StringName= "xxx";1以上是String对象的直接赋值,以上的代码并没有使用关...转载 2021-02-28 23:30:30 · 105 阅读 · 0 评论 -
==和equals的区别
String本身是final类字符串是不可变的对象== 比较的是值比较基本的数据类型,比较的是数值 ,基本数据类型就在栈比较引用类型:比较引用指向的值(地址) ,equals默认比较也是地址,因为这个方法的最初定义在Object上,默认的实现就是比较地址自定义的类,如果需要比较的是内容,那么就要学String,重写equals方法String类对象两种实例化方式的区别String类对象存在两种实例化的...转载 2021-02-28 23:22:33 · 138 阅读 · 0 评论 -
HashSet的存储原理,也就是Hashmap原理
HashSet的存储原理或者工作原理,主要是从如何保证唯一性来说起。这里面主要有3个问题,需要回答?第一,为什么要采用Hash算法?有什么优势,解决了什么问题?第二,所谓哈希表是一张什么表?第三,HashSet如何保证保存对象的唯一性?会经历一个什么样的运算过程?大家可以先思考,晚些再补充答案!首先,我们要明确一点,HashSet底层采用的是HashMap来实现存储,其值作为HashMap的keypublic boolean add(E...转载 2021-02-28 22:25:29 · 280 阅读 · 0 评论 -
ArrayList和LinkedList的区别
1,底层数据结构的差异ArrayList,数组,连续一块内存空间LinkedList,双向链表,不是连续的内存空间2,一个常规的结论虽然不严谨,但也可以应付很多面试了ArrayList,查找快,因为是连续的内存空间,方便寻址,但删除,插入慢,因为需要发生数据迁移LinkedList,查找慢,因为需要通过指针一个个寻找,但删除,插入块,因为只要改变前后节点的指针指向即可。3,ArrayList细节分析1,增加 添加到末尾,正常不需要做特别的处理,除非现有的数组空间不够了,需要转载 2021-02-28 22:12:05 · 101 阅读 · 0 评论 -
ArrayList vs Vector
ArrayList:线程不安全,效率高,常用Vector:线程安全的,效率低我们看Vector的源码:原创 2021-02-28 22:00:40 · 100 阅读 · 0 评论 -
Hashtable Hashmap ConcurrentHashMap的区别
Hashtable线程安全的,但效率低内部有上锁的控制synchronizedHashmap线程不安全的,但效率高ConcurrentHashMap兼顾了线程安全和效率的问题分析:HashTable锁了整段数据(用户操作是不同的数据段,依然需要等待)解决方案:把数据分段,执行分段锁(分离锁),核心把锁的范围变小,这样出现并发冲突的概率就变小在保存的时候,计算所存储的数据是属于哪一段,只锁当前这一段注意:分段锁(分离锁)是JDK1....转载 2021-02-28 21:52:42 · 172 阅读 · 0 评论 -
串行 并行 串行的区别
串行在时间上不可能发生重叠,前一个任务没有执行完,下一个任务就只能等着。并行在时间上是可以重叠的,两个任务在同一时刻互不干扰的同时执行并发允许两个任务彼此干扰,同一时间点,只有一个任务运行,交替执行。比如任务A执行一半,任务B又可执行,然后任务B执行一半,切到任务A执行剩下的任务。这里就行执行到JVM的程序计数器,在CPU上下文切换时,记录上个任务执行的点,其实它也可以理解为某种意义上的串行。...原创 2021-02-28 20:06:42 · 744 阅读 · 0 评论 -
面试题 public static int getValue
以下代码中,输入2时result的值为:public static int getValue(int i) { int result = 0; switch (i) { case 1: result = result + i; case 2: result = result + i * 2; case 3: result = result + i * 3; } return result; }A、6 B、2 C、4 D、10答案:Dpackage test;public c...原创 2021-02-28 19:45:52 · 3408 阅读 · 0 评论 -
sql面试题(学生表_课程表_成绩表_教师表)
表结构Student(S,Sname,Sage,Ssex)学生表Course(C,Cname,T)课程表SC(S,C,score)成绩表Teacher(T,Tname)教师表drop table if exists course;create table course( c int(4) default null primary key auto_increment, cname varchar(30) not null, t ...转载 2021-02-28 18:09:40 · 2008 阅读 · 0 评论 -
订单系统订单表设计方案
一年前,在上一家公司接手了一个含有订单系统的项目,业务并不复杂,但是当时令我比较困惑的是订单表的设计。困惑的点主要是随着订单量增加,单表的存储能力将达到瓶颈,必然要采用分表的方案,那么按照什么维度拆分合适呢?分表之后带来的最大的挑战是订单查询。如果以用户为中心,采用userId取模,可以很方便的处理用户查单诉求,但是对商家或产品而言,数据就比较分散,相反如果以商家或商品为中心,则用户查单比...转载 2020-03-30 14:31:54 · 2461 阅读 · 0 评论 -
tomcat优化 8.5
maxConnections: tomcat能接受处理的最大连接数acceptCount: 当超出最大连接数,先把多余连接的压到队列,默认100,配大了意义不大,因为连接数处理不过来了maxThreads: 工作线程,同一时间点,同时处理的并发请求默认200minSpareThreads: 最小空闲的工作线程,这个要设...原创 2020-03-04 12:05:42 · 353 阅读 · 0 评论 -
IOC和AOP的简单理解
IOC控制反转1 spring是个容器,就像是一个娃娃机。项目开始,我们将bean注入到这个容器中,通过注册,我们就可以使用已经注册的bean,在使用对象时,我们就不用去new xxx();而是直接xx.getbean(“xxx”);在SSM整合后,使用注解开发则更为简单。DI(依赖注入)在笔者眼中,依赖注入和控制反转是一个相辅相成的概念,对于依赖注入简单来说...转载 2020-03-02 10:38:38 · 322 阅读 · 0 评论 -
java 代码优化方法
如上,先在循环外计算好len,这样就不可以不用在循环时每次计算size.还有种先找key,再找value的方法,这种效率要低arraycopy底层是C代码写的,效率会更高-127--128之前,是从缓存池取的。不在范围内就new一个。1就是少有和synchronizede...原创 2020-02-28 17:48:21 · 184 阅读 · 0 评论 -
对于equal和hashcode的理解,何时需要重写
重写equal 的同时为什么必须重写hashcode?hashCode是编译器为不同对象产生的不同整数,根据equal方法的定义:如果两个对象是相等(equal)的,那么两个对象调用hashCode必须产生相同的整数结果,即:equal为true,hashCode必须为true,equal为false,hashCode也必须为false,所以必须重写hashCode来保证与equal同步。...转载 2020-02-25 00:34:49 · 175 阅读 · 1 评论