随笔分类 - 面试题
平时积累,对外出笔试题以及参加面试时总结过来的
    
摘要:对一个数组按照快速排序方式排序: public class Solution { public int[] sortArray(int[] nums) { int len = nums.length; quickSort(nums, 0, len - 1); return nums; } priva
        阅读全文
            
摘要:1、为什么需要 3 次握手 目的:为了防止 已失效的连接请求报文段 突然又传送到了服务端,因而产生错误。主要防止资源的浪费。 额外补充:TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次恰恰可以满足以上两方面的需求!两次无法保证数据可靠,四次及以上无法保证
        阅读全文
            
摘要:基础篇 1、int和Integer的区别 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数
        阅读全文
            
摘要:先来提出问题和给出答案,之后再刨根问底的揭开面纱: 问:volatile 的可见性和禁止指令重排序是怎么实现的? 答:可见性:是通过缓存一致性协议来达到的 禁止指令重排序:JMM 模型里有 8 个指令来完成数据的读写,通过其中 load 和 store 指令相互组合成的 4 个内存屏障实现禁止指令重
        阅读全文
            
摘要:来看一道笔试题: 模拟一个容器,有 2 个线程生成数据写入,10 个线程消费的生产者消费者模型
        阅读全文
            
摘要:CLH 队列 CLH同步队列是一个FIFO双向队列,AQS 依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态
        阅读全文
            
摘要:背景 这篇博文是接着上一篇 线程池专题 的一个补充,是针对线程池底层队列的种类做一个进一步的深入详解,上一篇博文主要针对一线大厂针对线程池的灵魂 5 问展开的,而这一篇也是综合了另外面试经验,把底层的一些内容再深入剖析一下。 线程池任务处理 如果运行的线程数 < corePoolSize,则 Exe
        阅读全文
            
摘要:背景 线程池的基本介绍、为什么使用线程池以及使用线程池的配置等基础篇可以参考我之前的一篇博文:JAVA 线程池基本总结 今天这里主要针对面试相关的再进行一次有针对性的整理和总结,每个细节点都是被问到过的,所以每个细节点都需要搞明白,搞透。 面试题目 来看一下灵魂 5 连问 1、什么是线程池? 2、说
        阅读全文
            
摘要:我们知道,concurrent包是基于AQS (AbstractQueuedSynchronizer)框架,AQS框架借助于两个类:Unsafe(提供CAS操作) 和 LockSupport(提供park/unpark操作)。因此,LockSupport可谓构建concurrent包的基础之一。理解
        阅读全文
            
摘要:1、Lock Lock 是一个接口,具体定义如下: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLoc
        阅读全文
            
摘要:我们需要先从线程来讲起,相关基本概念这里就不做过多的阐述,都太基本了,有需要可以参考:synchronized 相关概念。这里先从线程状态聊起 1、线程状态 线程共有 5 种状态: 新建状态:新建线程对象,并没有调用start()方法之前 就绪状态:调用start()方法之后线程就进入就绪状态,但是
        阅读全文
            
摘要:协程概念 “协程”(Coroutine)概念最早由 Melvin Conway 于 1958 年提出。虽然被提出的时间很早,但是使用它的年限很短。尤其是最近几年,随着 Go、Lua 等语言的流行,把协程推向了一个新的高潮。 协程其实可以认为是比线程更小的执行单元。为啥说他是一个执行单元,因为他自带C
        阅读全文
            
摘要:1、synchronized与lock的区别,使用场景。看过synchronized的源码没 2、JVM自动内存管理,Minor GC与Full GC的触发机制 3、了解过JVM调优没,基本思路是什么? 如果CPU使用率较高,GC频繁且GC时间长,可能就需要JVM调优了。基本思路就是让每一次GC都回
        阅读全文
            
摘要:1、启动方式 .run() 和 .start() 注意:直接执行线程的 run() 方法,但是线程调用 start() 方法时也会运行 run() 方法,区别就是一个是由线程调度运行 run() 方法,一个是直接调用了线程中的 run() 方法!! 2、线程中常用方法 start:开始执行该线程 s
        阅读全文
            
摘要:从浏览器到页面展示中间过程其实是一个很复杂的逻辑过程,大概分为以下 8 大步骤,这里尽量使用简单易理解的方式将所有涉及到的环节梳理一下 1、url 输入 我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 ur
        阅读全文
            
摘要:布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。 看看下面几个问题: 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名
        阅读全文
            
摘要:问题描述: 有ListA和ListB,其中A、B中元素都是可以保证没有重复的,现要合并A、B得到新的ListC,要求C中不能有重复元素 我的反应: 看了下Java List、Collection的API,没找到合适的 于是乎,遍历A、B中元素个数较少的,往另一个集合中add,当然add时候判断下,有
        阅读全文
            
摘要:题目:有一APP客户端需要增加一个功能,限制用户输入密码登陆次数1小时内不得超过5次尝试,否则认为是在作弊,将予以保护不得用户再继续进行操作。 思路:此处应该加锁,但是加锁会影响登录效率.看题目发现用户id是作为传入参数。所以我们可不可以拿用户id作为一个锁呢?这样就只会锁住该用户,而不会锁住别人.
        阅读全文
            
摘要:质数概念 质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。最小的素数是2,也是素数中唯一的偶数;其他素数都是奇数。质数有无限多个,所以不存在最大的质数。 目前总结大概有3中计算方式求解,具体如下 1. 粗鲁暴力定义求解法
        阅读全文
            
摘要:方法一: Integer.parseInt(); 返回的是一个 int 的值。 方法二: new Integer.valueof(); 返回的是 Integer 的对象。 new Integer.valueof().intValue(); 返回的也是一个 int 的值。 笔试应用例题: 设有下面两个
        阅读全文
            
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号