2 李甲顺

学生身份

我要认证

暂无相关简介

等级
TA的排名 37w+

吊打面试官--CAS

1 CAS和synchronize有什么区别?都用synchronized不行么?CAS是乐观锁,不需要阻塞,硬件级别实现的原子性;synchronize会阻塞,JVM级别实现的原子性。使用场景不同,线程冲突严重时CAS会造成CPU压力过大,导致吞吐量下降,synchronize的原理是先自旋然后阻塞,线程冲突严重仍然有较高的吞吐量,因为线程都被阻塞了,不会占用CPU.。...

2020-04-21 09:31:18

吊打面试官-Sychronized关键字

1 为什么会需要synchronized?什么场景下使用synchronized?多线程访问共享资源,当一个资源有可能被多个线程同时访问并修改的话,需要用到锁,还是画个图给您看一下,原因:多线程编程中,有可能出现多个线程同时访问同一个共享、可变资源的情况:这种资源可能是:对象、变量、文件等共享:资源可以由多个线程同时访问可变:资源可以在其生命周期内被修改。安琪拉: 如上图所示,比如在王者...

2020-04-20 15:30:46

吊打面试官---虚拟机(JVM)

问题一:JVM运行时数据区Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途、创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域如图:1、程序计数器:指向当前线程正在执行的字节码指令。线程私有的。2、虚拟机栈:虚拟机栈是Java执行方法...

2020-04-20 13:48:23

总结一

问题一:为什么要运用分代垃圾回收策略?1分代收集算法这是当前商业虚拟机常用的垃圾收集算法。分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在java程序运行的过程中,会产生大量的对象,因每个对象所能承担的职责不同所具有的功能不同所以也有着不一样的生命周期,有的对象生命周期较长,比如Http请求中的Se...

2020-04-20 13:48:00

使用栈辅助解决字符串问题

1 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合注意空字符串可被认为是有效的字符串。class Solution { public boolean isValid(String s) { Stack<Character&...

2020-04-17 17:40:00

字符串

1 删除字符串中出现次数最少的字符题目:实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序注意每个输入文件有多组输入,即多个字符串用回车隔开。输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。示例1输入abcdd 输出d...

2020-04-17 16:27:41

多线程安全一实现多线程安全的3种方式

1、:为什么多线程并发是不安全的?在操作系统中,线程是不拥有资源的,进程是拥有资源的。而线程是由进程创建的,一个进程可以创建多个线程,这些线程共享着进程中的资源。多线程并发之所以会不安全,就是因为线程不拥有资源,它们共享竞争着进程的资源,这样线程并发起来不安全,一般的解决方案便用锁,保证每时每刻一个资源最多只能被一个线程拥有。所以,当线程一起并发运行时,同时对一个数据进行修改,就可能会造成数据的...

2020-03-30 18:48:07

多线程安全

一般我们常说某某类是线程安全的,某某是非线程安全的。其实线程安全并不是一个“非黑即白”单项选择题。按照“线程安全”的安全程度由强到弱来排序,我们可以将java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。1、不可变 在java语言中,不可变的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施。如fin...

2020-03-30 14:57:44

数据结构与算法-字符串

1 最长回文串给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。class Solution { public int longes...

2020-03-28 13:12:55

数据结构与算法-数组

1 第一个只出现一次的字符题目:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。示例:s = “abaccdeff”返回 “b”s = “”返回 " "解题思路:哈希表 的使用,思路为:遍历字符串 s ,使用哈希表存储各字符的数量;再遍历字符串 s ,在哈希表中找到第一个数量为 1 的字符,并返回。方法一class Solution { pub...

2020-03-27 11:23:19

数据结构—字符串

1 反转字符串中的单词题目: 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。...

2020-03-24 12:00:11

Java String 类常见面试题

基础知识:1、:既可以比较基本数据类型,又可以比较引用数据类型。基本数据类型比较的是值,引用数据类型比较的是地址。equals只能比较引用数据类型,如果没有重写Object类中的equals方法,equals方法和号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性。2.字符串常量存储在常量池,而new String 创建对象,在编译期间不能确定具体的值,所以会在 在在内...

2020-03-24 09:31:31

Java中的基本数据类型和引用数据类型的区别

一、数据类型Java中的数据类型分为两大类,基本数据类型和引用数据类型。1、基本数据类型基本数据类型只有8种,可按照如下分类①整数类型:long、int、short、byte②浮点类型:float、double③字符类型:char④布尔类型:booleanbyte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short:短整型...

2020-03-24 09:01:49

Java-集合--面试总结

1.Java集合框(Collections)架是什么?说出一些集合框架的优点?Java Collections框架中包含了大量集合接口以及这些接口的实现类和操作他们的算法(排序、查找、反转、替换、复制、取最小元素、取最大元素等),具体而言,主要提供了List(列表)、Queue(队列)、Set(集合)、Stack(栈)、和Map(映射表,用于存放键值对)等数据结构。其中List、Queue、Se...

2020-03-23 10:40:51

数据结构—广度有限搜索

1 链表的中间结点题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。示例 2:输入:[1,2,3,4,5,6]输出:此列表中的结点 4 (序列化形式:[4,5,6])...

2020-03-23 10:35:27

数据结构与算法-二叉树的深度-leetcode

1 二叉树的深度题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS);常见的 DFS : 先序遍历、中序遍历、后序遍历;常见的 BFS : 层序遍历...

2020-03-22 17:16:12

数据结构 - 链表 -面试

数据结构 - 链表 - 面试中常见的链表算法题数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组、链表)、栈与队列、树(二叉树、二叉查找树、平衡二叉树、红黑树)、图。本文主要介绍线性表中的常见的链表数据结构。包括概念简介链表节点的数据结构(Java)常见的链表算法题(Java)。概念简介线性表基本概念链表是一种线性表,因此我们首先了解一下什么是线性表:...

2020-03-22 09:27:26

对称的二叉树(递归,清晰图解)

解题思路:对称二叉树规律: 对于树中 任意两个对称节点 LLL 和 RRR ,一定有:L.val=R.valL.val = R.valL.val=R.val :即此两对称节点值相等。L.left.val=R.right.valL.left.val = R.right.valL.left.val=R.right.val :即 LLL 的 左子节点 和 RRR 的 右子节点 对称;L.righ...

2020-03-21 20:02:02

二叉树的镜像(JAVA)

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:输入root[8,6,10,5,7,9,11]输出[8,10,6,11,9,7,5]递归我们在做二叉树题目时候,第一想到的应该是用递归来解决。仔细看下题目的输入和输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。class Solution { public TreeNod...

2020-03-21 19:06:08
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。