04 2019 档案

摘要:背景:好久没用Mybatis了,有些面试题还是要好好准备的。 问题集 Mybatis 的常见面试题 Mybatis常见面试题总结 ps:总结的还是很全面的 MyBatis常见面试题1:精讲#{}和${}的区别是什么? 使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。预编译完 阅读全文
posted @ 2019-04-30 06:58 CS408 阅读(476) 评论(0) 推荐(0) 编辑
摘要:背景:ReetrantLock底层是基于AQS实现的(CAS+CHL),有公平和非公平两种区别。 这种底层机制,很有必要通过跟踪源码来进行分析。 参考 ReentrantLock实现原理及源码分析 源码分析 接下来我们从源码角度来看看ReentrantLock的实现原理,它是如何保证可重入性,又是如 阅读全文
posted @ 2019-04-29 08:12 CS408 阅读(1133) 评论(0) 推荐(0) 编辑
摘要:背景:之前在研究多线程的时候,模模糊糊知道AQS这个东西,但是对于其内部是如何实现,以及具体应用不是很理解,还自认为多线程已经学习的很到位了,贻笑大方。 源码层面深入理解AQS 这次研究了一下午,彻底搞懂AQS以及ReetranLock 老板让只懂Java基本语法的我,基于AQS实现一个锁 ps:这 阅读全文
posted @ 2019-04-28 08:25 CS408 阅读(478) 评论(0) 推荐(0) 编辑
摘要:背景:在分布式系统中会遇到各种各样的问题,根据往年BAT的面试题,有必要好好的总结总结。 分布式系统的接口幂等性设计 ps:文章有具体的实例,也有解决问题的思路,很清晰。 概念 幂等性衍生到软件工程中, 它的语义是指: 函数/接口可以使用相同的参数重复执行, 不应该影响系统状态, 也不会对系统造成改 阅读全文
posted @ 2019-04-27 17:51 CS408 阅读(609) 评论(0) 推荐(0) 编辑
摘要:准备下与京东相关的面试题 https://cloud.tencent.com/developer/article/1147842 阅读全文
posted @ 2019-04-27 17:31 CS408 阅读(146) 评论(0) 推荐(0) 编辑
摘要:背景:虽然这些在面试中不像专业技能严谨,但是也需要好好的准备,毕竟是100%必问的。 面试的时候,如何自我介绍? 阅读全文
posted @ 2019-04-26 06:41 CS408 阅读(292) 评论(0) 推荐(0) 编辑
摘要:背景:面试过程中问到结束线程的方法和线程池shutdown shutdownnow区别以及底层的实现,当时答的并不好。 Java结束线程的三种方法 线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方 阅读全文
posted @ 2019-04-25 07:25 CS408 阅读(8512) 评论(0) 推荐(1) 编辑
摘要:背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼。 spring异常抛出触发事务回滚策略 Spring、EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 测试用业务逻辑方法: 关于TransactionPr 阅读全文
posted @ 2019-04-24 18:25 CS408 阅读(3421) 评论(0) 推荐(1) 编辑
摘要:Java回收对象的标记 和 对象的二次标记过程 二次标记 针对这个问题,虚拟机的做法是进行两次标记,即第一次标记不在“关系网”中的对象。第二次的话就要先判断该对象有没有实现finalize()方法了,如果没有实现就直接判断该对象可回收;如果实现了就会先放在一个队列中,并由虚拟机建立的一个低优先级的线 阅读全文
posted @ 2019-04-24 08:23 CS408 阅读(1131) 评论(0) 推荐(0) 编辑
摘要:调用System.gc没有立即执行的解决方法 查看源码 当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 ps:注释 也就是justRanFinalization=true的时候才会执行 查找发现当调用runFinalization( 阅读全文
posted @ 2019-04-24 08:08 CS408 阅读(3846) 评论(0) 推荐(0) 编辑
摘要:背景:面试中会要求对5中线程池作分析。所以要熟知线程池的运行细节,如CachedThreadPool会引发oom吗? 图解 | 你管这破玩意叫线程池? ps:生动形象,从动图理解线程池的工作原理 public FlashExecutor( int corePoolSize, int maximumP 阅读全文
posted @ 2019-04-23 08:23 CS408 阅读(4680) 评论(0) 推荐(1) 编辑
摘要:背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结。 可能是最漂亮的Spring事务管理详解 https://github.com/Snailclimb/JavaGuide#mysql ps:该文章来源于git上的总结,通俗易懂,建议所 阅读全文
posted @ 2019-04-22 07:55 CS408 阅读(464) 评论(0) 推荐(0) 编辑
摘要:背景:高并发场景下幂等性的解决方案 高并发的核心技术-幂等的实现方案 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇 阅读全文
posted @ 2019-04-21 20:12 CS408 阅读(505) 评论(0) 推荐(0) 编辑
摘要:同步异步,阻塞和非阻塞 IO中同步与异步,阻塞与非阻塞区别 同步和异步关注的是消息通信机制 (synchronous communication/asynchronous communication) 同步请求,A调用B,B的处理是同步的,在处理完之前他不会通知A,只有处理完之后才会明确的通知A。 阅读全文
posted @ 2019-04-21 19:45 CS408 阅读(308) 评论(0) 推荐(0) 编辑
摘要:背景:因为自己的简历写了dubbo,面试时候经常被问到。实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识。 https://blog.csdn.net/Y0Q2T57s/article/details/83005376 想往高处走,怎么能不懂 Dubbo? Dubbo是 阅读全文
posted @ 2019-04-21 19:42 CS408 阅读(1496) 评论(0) 推荐(0) 编辑
摘要:背景:介绍java8中永久代到元空间的转变。 Java8内存模型—永久代(PermGen)和元空间(Metaspace) 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈 阅读全文
posted @ 2019-04-21 18:15 CS408 阅读(557) 评论(0) 推荐(0) 编辑
摘要:背景:在面试的时候经常被问到分布式锁 幂等性相关的知识点。自己居然完全不了解,还在简历中写自己熟悉集群,面试的时候可想而知。 本文基于 美团技术团队的总结。 分布式系统互斥性与幂等性问题的分析与解决 ps:这里只做重点标识 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高 阅读全文
posted @ 2019-04-21 17:34 CS408 阅读(517) 评论(0) 推荐(0) 编辑
摘要:设计模式六大原则(6):开闭原则 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:当软件需要 阅读全文
posted @ 2019-04-21 13:24 CS408 阅读(387) 评论(0) 推荐(0) 编辑
摘要:背景:六大设计模式基本原则很考验个人的基本功,所以要深入学习总结。 设计模式六大原则(3):依赖倒置原则 定义 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。(抽象 抽象)问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来 阅读全文
posted @ 2019-04-21 13:13 CS408 阅读(422) 评论(0) 推荐(0) 编辑
摘要:背景:之前一直没搞明白Lambda和相关函数式编程的写法,现在终于能搞清楚了。 原文转载公众号 低并发编程: 原来 Lamda 表达式是这样写的 List<Student> studentList = gen(); Map<String, Student> map = studentList .st 阅读全文
posted @ 2019-04-21 12:39 CS408 阅读(353) 评论(0) 推荐(0) 编辑
摘要:背景:求职过程中,这个问题反复被问到。如果答不上来,只能说明基本功不扎实,并不能说自己擅长java。 技术趣味史-Java 各个版本的特性 史上最全JAVA全版本特性,看这一篇就够了!【JAVA 1.0 - JAVA 17】 Java 5 2004 年 Sun 公司发布 J2SE5(没错,Sun 公 阅读全文
posted @ 2019-04-21 12:08 CS408 阅读(1508) 评论(0) 推荐(0) 编辑
摘要:背景:在面试时候问过关于注解的问题,工作中也用到过该java的特性,但是也没有深入的了解。 秒懂,Java 注解 (Annotation)你可以这样学 ps:注解最通俗易懂的解释 注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影 阅读全文
posted @ 2019-04-21 11:41 CS408 阅读(623) 评论(0) 推荐(0) 编辑
摘要:背景:讲到反射机制,肯定会想到动态代理。 轻松学,Java 中的代理模式及动态代理 代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类。 静态代理 代理类需要自己编写代码写成。 动态代理 Prox 阅读全文
posted @ 2019-04-21 11:40 CS408 阅读(378) 评论(0) 推荐(0) 编辑
摘要:背景:美团的技术沙龙分享的文章都还是很不错的,通俗易懂,开阔视野,后面又机会要好好实践一番。 Java动态追踪技术探究 楔子 jsp的修改 重新加载不需要重启servlet。如何在不重启jvm的情况下,修改一个对象的行为呢? Java的对象行为(方法、函数)是存储在方法区的。 “倒着推,手写没问题, 阅读全文
posted @ 2019-04-20 15:11 CS408 阅读(705) 评论(0) 推荐(0) 编辑
摘要:视图 视图是由从数据库的基本表中选出来的数据组成的逻辑窗口,它与基本表不同的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基表中。所以基表中的数据如果发生改变,从视图中查询出的数据也随之改变。 视图是一个虚表,他是通过执行SQL查询所产生的。视图以sel 阅读全文
posted @ 2019-04-18 16:56 CS408 阅读(6193) 评论(0) 推荐(1) 编辑
摘要:背景:线程池在面试时候经常遇到,反复出现的问题就是理解不深入,不能做到游刃有余。所以这篇博客是要深入总结线程池的使用。 ThreadPoolExecutor的继承关系 线程池的原理 1.线程池状态(4种状态) 2.任务的执行(工作过程) 3.线程池中的线程初始化 4.任务缓存队列及排队策略 5.任务 阅读全文
posted @ 2019-04-16 07:42 CS408 阅读(290) 评论(0) 推荐(0) 编辑
摘要:背景:关于数据库中的事务ACID以及隔离级别在面试笔试中经常被考。如果这种题再不会实在太可惜了。所以要深入总结 脏读和不可重复读的区别:脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。 不可重复读和幻读的区别:都是读取了另一条已经提交的事务(这点就脏读不同), 阅读全文
posted @ 2019-04-15 08:23 CS408 阅读(985) 评论(0) 推荐(0) 编辑
摘要:背景:在面试中国移动的时候,有个笔试题要求写spring mvc的处理流程。乍一看很简单,真的要写,发现自己写不出来。 Spring MVC 流程图 阅读全文
posted @ 2019-04-14 23:21 CS408 阅读(705) 评论(0) 推荐(0) 编辑
摘要:背景:总结JUC下面的阻塞队列的实现,很方便写生产者消费者模式。 常用操作方法 常用的实现类 ArrayBlockingQueue DelayQueue LinkedBlockingQueue PriorityBlockingQueue SynchronousQueue 阻塞队列原理: 其实阻塞队列 阅读全文
posted @ 2019-04-12 08:04 CS408 阅读(4994) 评论(0) 推荐(0) 编辑
摘要:java中我们想要实现多线程常用的有两种方法,继承Thread 类和实现Runnable 接口,有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点: 首先,java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了 阅读全文
posted @ 2019-04-10 07:29 CS408 阅读(849) 评论(0) 推荐(0) 编辑
摘要:背景:虽然自己了解这两种代理的区别,但是面试时候还是答的很模糊,需要好好总结。 前言JDK动态代理实现原理(jdk8):https://blog.csdn.net/yhl_jxy/article/details/80586785 CGLIB动态代理实现原理:https://blog.csdn.net 阅读全文
posted @ 2019-04-10 07:20 CS408 阅读(3286) 评论(0) 推荐(3) 编辑
摘要:背景:在redis集群中,有关于一致性哈希的使用。 一致性哈希:桶大小0~(2^32)-1 哈希指标:平衡性、单调性、分散性、负载性 为了提高平衡性,引入“虚拟节点” 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing) 阅读全文
posted @ 2019-04-09 23:10 CS408 阅读(264) 评论(0) 推荐(0) 编辑
摘要:背景:总结mysql相关的知识点。 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件。 in查询就是先将子查询条件的记录全都查出来,假设结果集为B,共有m条记录,然后再将子查询条件的结果集分解成m个,再进行m次查询。 因为索引,in主要用到了外表的索引, 阅读全文
posted @ 2019-04-09 08:12 CS408 阅读(835) 评论(0) 推荐(0) 编辑
摘要:背景:将网上的题目整理下。 java基础 1:hashTable hashMap ConcurrentHashMap 的区别、数据结构、线程安全 2:equals和==区别, 重写equals一定要重写hashcode方法吗?为什么?hashcode方法有什么作用? 这个万年不变的面试题,这是何等的 阅读全文
posted @ 2019-04-06 17:55 CS408 阅读(856) 评论(0) 推荐(0) 编辑
摘要:序列化ID的作用: 其实,这个序列化ID起着关键的作用,它决定着是否能够成功反序列化!简单来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVer 阅读全文
posted @ 2019-04-06 17:35 CS408 阅读(5075) 评论(0) 推荐(2) 编辑
摘要:背景:学习java的基础知识,每次回顾,总会有不同的认识。该文系转载 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。 以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals, 阅读全文
posted @ 2019-04-06 17:01 CS408 阅读(498) 评论(0) 推荐(0) 编辑
摘要:背景:总结mysql索引相关的知识点. MySQL 索引及查询优化总结 MySQL 索引及查询优化总结 ps:其中的b+树有误。对or的使用有误。总体还是很详尽的 注意:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引。MyISAM和InnoDB存储引擎:只支持BTREE索引,也就 阅读全文
posted @ 2019-04-03 08:16 CS408 阅读(2185) 评论(0) 推荐(0) 编辑
摘要:背景:在面试过程中发现很多公司对sql查询有要求,虽然不高,但是简单常见的sql查询必须熟练的掌握,否则一面都无法通过,痛定思痛,必须要深入了解下!!! 注释符号 聚集索引和非聚集索引的区别? InnoDB 存储引擎支持以下几种常见的索引: B+树索引、全文索引、哈希索引 而 B+树索引最为常见,可 阅读全文
posted @ 2019-04-01 08:09 CS408 阅读(222) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示