![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
qq_40911292
这个作者很懒,什么都没留下…
展开
-
为什么有了volatile还要有CAS
之前在学习volatile的时候,有个场景给出是累加,用volatile是错误的,用AtomicInteger才可以其实在语言层面也可以实现比较并交换(if语句),但语言层面的操作不是原子性的,可能比较之后就被挂起了,被人改了之后,但是苏醒后下一条指令就是去交换所以会出错但原子类底层不会被打断,不知道这样理解对不对...原创 2021-04-05 14:56:08 · 456 阅读 · 0 评论 -
LeetCode53. 最大子序和 && 剑指offer面试题42:连续子数组的最大和
package s03;public class s03 { public static void main(String[] args) { int nums[] = {-2,1,-3,4,-1,2,1,-5,4}; System.out.println(findGreatestSumOfSubArray(nums,nums.length)); } static boolean g_InvalidInput = false; //不合法输入.原创 2020-05-21 14:26:00 · 168 阅读 · 0 评论 -
leetcode93:复原IP地址
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class Test { public static void main(String[] args) { Solution solution = new Solution(); List<String> strings = solution.restoreIpAddresses(.原创 2020-05-21 10:38:55 · 120 阅读 · 0 评论 -
Offer面试题23:判断链表中是否有环
https://www.bilibili.com/video/BV1EE411j7K8?from=search&seid=14270053760626210348思路:设置快慢指针,遍历链表,快指针走两步,慢指针走一步,如果快慢指针相遇,说明链表有环。...原创 2020-05-08 14:38:32 · 141 阅读 · 0 评论 -
GC算法之标记清除(Mark-Sweep)和标记压缩/整理(Mark-Compact)和标记-清除-压缩(Mark-Sweep-Compat)
复制算法:没碎片、费空间 ---->年轻代 标记清除:①标记要回收的对象②统一回收这些对象 ----->老年代 证明要扫描两次,耗时严重 不需要额外空间 标记整理/标记压缩:就是比标...原创 2020-04-13 15:29:30 · 3916 阅读 · 0 评论 -
垃圾收集器
一、GC垃圾回收算法和垃圾收集器的关系?答:GC算法时内存回收的方法论,垃圾收集器就是算法落地实现。二、4种主要垃圾收集器?①串行回收Serial----->为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程。所以不适合服务器环境。②并行回收Parallel----->多个垃圾收集线程并行工作,此时用户线程也时暂停的,适用于科学计算/大数据处理首台处理等...原创 2020-04-11 18:28:23 · 107 阅读 · 1 评论 -
JVM垃圾回收的时候如何确定垃圾?知道什么是GC Roots吗?
一、如何判断一个对象是否可以被回收?①、枚举根节点做可达性分析(根搜索路径算法)为了解决引用计数法的循环引用问题,Java使用了可达性分析的方法。对于我们的几种算法:复制、标清、标整,--->都要使用GC引用遍历基本思路就是通过一系列名为“GC Roots"的对象作为起始点。从GC Roots的对象开始向下搜索,如果一个对象到GC Root是没有任何引用链相连时,则说明此对...原创 2020-04-11 15:20:34 · 180 阅读 · 0 评论 -
对象生命周期和GC
对象一般出生在伊甸区,这货满了之后就开始收割,(伊甸园中发生GC就是要Eden区通通清空),逃过一劫得跑幸存区去了,逐步来回倒腾,活过15岁之后,跑养老去。首先,Java堆从GC得角度可以细分为:新生代和老年区。新生代包括(Eden区,From Survivor区和To Survivor区)老年代占堆的三分之二。新生代占三分之一。轻GC(Minor GC,就三步:复制-->清...原创 2020-04-11 00:18:11 · 216 阅读 · 0 评论 -
ClassLoader双亲委派机制和沙箱安全
双亲委派机制口诀:要加载,儿子不做,先让爹去做,爹做不了,儿子才上。我要用a.java这么一个类,先去顶部,根加载器BootStrap ClassLoader去找,找得到,就用,找不到,就往下降一层,去扩展类加载器去找,找到了->用,找不到,再往下:去应用程序类加载器找,再找不到,默认情况下就会报ClassNotFound Exception因为为了保证,程序员写的代码不污染Ja...原创 2020-04-10 23:16:06 · 174 阅读 · 0 评论 -
线程池工作原理
文字版:原创 2020-04-10 21:10:10 · 64 阅读 · 0 评论 -
线程池3个常用方式 & 线程池7大参数入门简介
public class MyThreadPoolDemo { public static void main(String[] args) { //ExecutorService threadPool = Executors.newFixedThreadPool(5); //一池子5个处理线程 //ExecutorService threadPool =...原创 2020-04-10 20:03:56 · 209 阅读 · 0 评论 -
JVM学习之02_类装载器
一、JVM是什么?回答技巧和要求:我们学异常的时候,都学过RuntimeException吧,就是在jVM内存区域运行时内存区Runtime Data Area抛出来的。方法区(Method Area):并不是放方法的地方,而是放类的描述的信息。方法区是放模板的地方。java.lang.ClassClass.forName("..");/** *通过这个类的模板,按照模...原创 2020-04-10 00:12:50 · 65 阅读 · 0 评论 -
大数据复习
一、说说Hadoop1.X和hadoop2.X的区别?答:2.x提出了YARN,这个YARN既可以支持Hadoop的MapReduce,还可以支持其他计算引擎如Spark,Flink,成为一个一站式的资源调度的平台了。二、说一下Hadoop?(讲个两分钟?)答:Hadoop是Apache的一款开源框架,有三个核心组件:分布式文件系统 HDFS:用来海量存储 作业调度和集群资源...原创 2020-04-08 18:58:01 · 89 阅读 · 0 评论 -
HIVE调优
一、简单说一下hive架构里面包含哪些组件?答:1、用户接口:ClientCLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)2、元数据:Metastore元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。3、驱动器 :Driver(...原创 2020-04-08 14:10:27 · 343 阅读 · 0 评论 -
SQL on Hadoop调优策略:语法调优之order by和sort by区别
应用层面调优排序在大数据中的使用 reduce数量的控制 执行计划在调优中的使用 join在大数据中的使用官网描述:Syntax of Order By:在使用“order by”子句时有一些限制:如果是在严格模式下:(hive.mapred.mode=strict),那么order by这个子句一定要跟上“limit”Order by只会产生一个reducer,且全局排序!...原创 2020-04-08 12:32:07 · 553 阅读 · 0 评论 -
Volatile不保证原子性(未完
首先,JMM(Java内存模型)要求保证原子性,volatile是轻量级的同步机制,为什么是轻量级呢?(因为它不保证原子性,说白了,就是低配版/乞丐版的synchronized。一、原子性是什么东东?(跟MySQL上那个事务性的原子差不多(言下之意就是不可分割,完整性,也即某个线程正在做某个具体业务,中间不可以被加塞或者被分割。需要整体完整,要么同时成功,要么同时失败。)这个时间段,应...原创 2020-04-07 20:56:44 · 176 阅读 · 0 评论 -
leetcode77组合Combinations 递归回溯剪枝
引入递归函数generateCombinations(int n, int k, int start, vector<int> &c),之前介绍的时候,就说在每一步递归调用的时候由于存在之前已经在某一个分支中把某一个数据全都考虑到了所以我们在考虑每一个子问题的时候只需要考虑某一个数以及这个数之后的所有数就好了。之前的所有数呢是被之前的哪个分支全都考虑到了。(就是说在做取2这个分...原创 2020-04-06 17:49:05 · 128 阅读 · 0 评论 -
剑指Offer面试题24、leetcode206【反转链表】: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
https://www.bilibili.com/video/BV1z7411M73N?from=search&seid=9828711318650174791文科生学算法:递归求解反转链表原创 2020-04-02 12:34:57 · 392 阅读 · 0 评论 -
剑指Offer面试题6:从尾到头打印链表
package offer;import java.util.Stack;class ListNode{ int m_nKey; ListNode m_pNext; public ListNode(int m_nKey) { this.m_nKey = m_nKey; }}public class Offer06 { //使用栈 public static void...原创 2020-03-28 14:22:29 · 57 阅读 · 0 评论 -
同步和异步(我们必须理解同步和异步不是两个独立的问题,而是一种问题两种的处理方式、方法。
异步就像发短信一样同步就行打电话一样同步:进程A和进程B,进程A对B发出一个请求后,等待B的响应。待B响应后再继续完成后面的事情异步:进程A和进程B,进程A对B发出一个请求后,继续完成后面的事情(即不等待),B响应后,通知A,然后A再来处理同步:互锁异步:不互锁同步:阻塞模式异步:非阻塞模式“尽管所有的生产者进程和消费者进程都是以异步方式运行的,但他们之间必须保持同步...原创 2020-03-26 23:01:36 · 418 阅读 · 0 评论