Java面试
文章平均质量分 79
超级字节码
你之所以是你,是因为你不知道你是你
展开
-
面试-多线程-synchronized和lock区别
分享一道多线程的高频面试题:synchronized和lock两种锁的区别 角度 synchronized lock 锁存在层次 在jvm层面上,Java的关键字 JUC下的一个接口,java.util.concurrent.locks.Lock 锁获取时机 假设A线程获得锁,B线程等待。如以尝试获得锁,线程可以不用一直等待(可以通过 视情况而定,Lock有多个锁获取的方式,大致就是可以尝试获得锁,线程可以不用一直原创 2021-03-13 10:27:20 · 315 阅读 · 0 评论 -
面试-多线程-线程安全活跃态问题以及竞态条件
线程安全是多线程永久的话题,也是最核心的问题之一,本章从线程安全活跃态、竞态条件,以及常见问题简单阐述一下!线程安全的活跃性问题可以分为 死锁、活锁、饥饿三种,下面逐一说明:1、活锁状态:活锁 就是有时线程虽然没有发生阻塞,但是仍然会存在执行不下去的情况,活锁不会阻塞线程,线程会一直重复执行某个相同的操作,并且一直失败重试。开发中使用的异步消息队列就有可能造成活锁的问题,在消息队列的消费端如果没有正确的ack消息,并且执行过程中报错了,就会再次放回消息头,然后再拿出来执行,一直循环往复的失原创 2021-03-10 11:42:56 · 687 阅读 · 2 评论 -
面试-多线程-如何避免死锁
死锁是多线程和并发编程不可规避的话题之一。如何避免死锁,其实是考察我们对死锁的了解,包括什么是死锁、产生死锁的条件,当了解前面的两个问题,这个问题也就迎刃而解了!首先需要将死锁发生的是个必要条件讲出来:互斥条件: 同一时间只能有一个线程获取资源。 不可剥夺条件:一个线程已经占有的资源,在释放之前不会被其它线程抢占 请求和保持条件:线程等待过程中不会释放已占有的资源 循环等待条件: 多个线程互相等待对方释放资源死锁预防,那么就是需要破坏这四个必要条件:由于资源互斥是资源使用的固有特性,原创 2021-03-10 10:44:50 · 412 阅读 · 1 评论 -
SystemGC完全解读
目录1、System.gc的概述2、JDK里的System.gc的实现3、Hotspot里System.gc的实现4、并行Full GC相对正常的Full GC效率高在哪里5、堆外内存常配合使用System GC1、System.gc的概述JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下Sys原创 2021-03-04 22:28:16 · 410 阅读 · 2 评论 -
Java中的对象一定在堆上分配吗?(内存分配的误区)
如果当你看到这样的面试题,心里会不会跟我一样犯嘀咕!?Java对象分配在堆中的说法恐怕是早已经根深蒂固了吧,现在问这样的问题莫非是有啥不为人知的东西还是等着你去跳下去?当然,初学习时总会有人跟你说java对象是分配在java堆上的因为在那个时候说这些,咱们根本就理解不了JVM深层次的东西。OK! 那就步入正题吧,一般认为,Java对象都是在堆上分配的,但也有一些特殊情况。但是首先需要去了解一下...原创 2019-06-26 17:22:38 · 1399 阅读 · 0 评论 -
字符串括号成对匹配
最近在准备面试时,发现有这样一个算法题目:判断一个字符串中是否包含匹配的括号({}、()、[])?如何实现其算法?其实,要知道字符串括号成对匹配,这个问题也是在面试中常见的算法问题,获取有效的思路很是重要,当然我们可以借助Stack的特性处理!思路:使用栈 遇到左括号入栈 遇到又括号出栈,如果匹配则最后栈为空,不匹配则栈不为空那就直接上代码,毕竟几乎所有的面试官都喜欢动手能力强...原创 2019-06-16 10:03:10 · 1587 阅读 · 0 评论 -
字符串匹配--BM算法
最近在准备面试,看到有关字符串匹配的问题,才知道BM算法(只怪平时在规则中没有深入研究一些算法)!!!那好!就介绍一下什么是BM算法吧,来看下百度百科里面的解释吧:在计算机科学里,Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。虽然...原创 2019-06-16 09:48:10 · 762 阅读 · 1 评论 -
Java面试系列--HashMap
最近看到Java相关的面试时,看到一篇关于HashMap的相关面试知识点,感觉蛮好的!现在的面试点不会围绕某个知识让面试者去详细阐述,而会通过一些系列的相关问题去让你阐述,进而形成从点到线,再由线到面来考察面试者的基本功和发散性思维。无穷无尽地深入,知道你回答不出来或者面试官问到底!面试官:1、你了解/使用过HashMap吗?为什么是使用HashMap?这个问题相信你一定可以或多或少的回答...原创 2019-01-10 22:31:18 · 4487 阅读 · 2 评论 -
JAVA中高级面试总结
一、Java基础方面知识1、Java面相对象的思想的理解 Java面向对象思想理解主要是考察面向对象的特点,主要是多态方面。 https://blog.csdn.net/dgxin_605/article/details/802017212、集合框架:ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap,HashTab...原创 2018-05-22 23:48:21 · 193 阅读 · 0 评论 -
Java面试题--集合各实现类的底层实现原理
ArrayList实现原理要点概括参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.html ArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素。底层使用数组实现该集合是可变长度数组,数组扩容时,会将老数组中的元素重新拷贝一份到新的...原创 2018-05-05 00:14:06 · 2260 阅读 · 0 评论 -
Java面试题--面向对象思想之继承,多态
一、面向对象的思想 Java是一门纯粹的面向对象的语言。面向对象这种程序设计模式它将现实世界中的一切事物都看作是对象,例如,一个人是一个对象,汽车、飞机、小鸟等等,都是对象;它强调从对象出发,以对象为中心用人类的思维方式来认识和思考问题。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。 类是面向对象中一个重要的概念...原创 2018-05-05 00:05:04 · 569 阅读 · 0 评论 -
Java异常
一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架,是Java语言健壮性的一个重要体现。 Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Except...原创 2018-05-05 12:48:56 · 406 阅读 · 0 评论