
Java面试记录
hezuo1181
???????
展开
-
剑指offer-第二部分
29.数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题:因为如果数组中出现了一个数出现的次数超过了数组长度的一半的话,则那个数字一定是要在数组的中间出现的。 所以可...原创 2018-09-06 00:30:11 · 188 阅读 · 0 评论 -
数据库(2)存储引擎 索引
越努力越幸运!转载:https://blog.youkuaiyun.com/suifeng3051/article/details/52669644https://www.jb51.net/article/142840.htm数据库索引的实现原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据...转载 2018-10-07 01:49:28 · 350 阅读 · 0 评论 -
数据库(5)数据库优化
越努力越幸运!.数据库优化的思路1.SQL语句优化1)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num...转载 2018-10-06 15:08:00 · 258 阅读 · 0 评论 -
数据库(1)基础
越努力越幸运! 一.数据库的基础知识人工管理系统->文件管理系统—>数据库系统阶段数据库系统组成:数据库,数据库管理系统,数据库管理人员,用户,支持数据库系统的硬件及软件数据模型:(数据结构+数据操作+完整性约束) 实体完整性约束,参照完整性约束 用户定义的完整性约束。常见的数据模型:层次模型,网状模型,关系模型关系数据库的规范化 五个范式等级...转载 2018-10-06 14:59:58 · 525 阅读 · 0 评论 -
如何找到 java 程序 CPU 使用率100%的原因
越努力越幸运!转载:https://blog.youkuaiyun.com/mine_song/article/details/72964843最近程序在一台机器上出现了 cpu 占用率100%的情况,而执行同一份代码的其他机器则没有问题。很让我崩溃~~今天找到了解决方案: 1.用top 命令查看占用资源最多PID(进程): 如 pid 为 1000; 2.再用 top -...转载 2018-10-12 23:14:31 · 3904 阅读 · 0 评论 -
多态在jvm类加载中的体现
越努力越幸运! 0.前言转载请标明出处:http://blog.youkuaiyun.com/seu_calvin/article/details/52191321多态在Java技术里有很重要的地位,在面试中也会经常被问到。多态的使用大家应该都比较了解,但是多态的实现原理就有点抽象了,查了很多很多资料,连续几天断断续续的看,有时候看着看着就走神了。毕竟太抽象,哈哈~不过依然硬着头皮看下...转载 2018-10-12 22:55:57 · 634 阅读 · 0 评论 -
数据库(3)事务
越努力越幸运! 事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。一般的事务指的都是数据库事务,但是广义事务的定义不局限于数据库事务。事务有4大特性,即 ACID。ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事...转载 2018-10-06 00:46:41 · 211 阅读 · 0 评论 -
java多线程(10)—顺序打印ABC
越努力越幸运! java多线程面试题public class Test { public static void main(String[] args) { Thread a = new Thread(new Task("A",0)); Thread b = new Thread(new Task("B",1)); Thre...转载 2018-10-06 00:40:35 · 770 阅读 · 0 评论 -
java多线程(9)—线程池
越努力越幸运!转载自:https://www.javazhiyin.com/18095.html 1. 为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提...转载 2018-10-06 00:32:30 · 224 阅读 · 0 评论 -
java集合(8) CopyOnWriteArrayList
越努力越幸运!1.CopyOnWriteArrayList的简介java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机制,会抛出ConcurrentModificationException异常,也就是说ArrayList并不是一个线程安全的容器。 当然您可以用Vector,或者使用Co...转载 2018-10-06 00:13:58 · 461 阅读 · 0 评论 -
java多线程(7)—深入理解读写锁ReentrantReadWriteLock
越努力越幸运!深入理解读写锁ReentrantReadWriteLock 1.读写锁的介绍 在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字synchronized或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。 ...转载 2018-10-06 00:09:55 · 392 阅读 · 0 评论 -
计算机网络
越努力越幸运!深度好文!网络通信过程及实践2.3.1 TCP三次握手和四次挥手明显三次握手是建立连接,四次挥手是断开连接,总图如下:2.3.1.1 握手(1)首先,Client端发送连接请求报文(SYN=1,seq=client_isn)(2)Server段接受连接后回复ACK报文,并为这次连接分配资源。(SYN=1,seq=client_isn,ack = ...转载 2018-10-07 01:47:05 · 668 阅读 · 0 评论 -
数据库(4)数据库锁机制
越努力越幸运!Mysql锁介绍Mysql不同的存储引擎支持不同的锁机制,根据不同的引擎划分,mysql锁机制分类如下: 行锁 表锁 MyISAM 不支持 支持 InnoDB 支持 支持 很明显可以看到,MyISAM不支持行锁,而InnoDB支持行锁,可能还有人说BDB引擎的页锁呢? 这里不做介绍,BDB已...转载 2018-10-07 02:31:37 · 276 阅读 · 0 评论 -
剑指offer-第一部分
01 二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法:利用左下角的数a作为起点,(因为如果大于a的话就往右走,如果小于a的话,就往上走)一直这样判断,知道行数=1或列数达到最大值。代码:public ...原创 2018-09-02 01:38:23 · 379 阅读 · 0 评论 -
珍爱网面经(一面)
越努力越幸运! 其实自己最近的状态都不是很好,秋招已经快要结束了,也经过了8场面试了,目前只得到了一个小公司的offer,真的是劝退价,不能再少了。哎,继续复盘看书复习吧~坚持到10月底吧~真的很多知识点看过,但是真的记不下来!珍爱网的笔试题涉及到自己不懂的知识点一.jvm的参数 -XmsSize(最小堆内存) * -XmxSize(最大堆内存) * ...原创 2018-10-14 00:40:20 · 2147 阅读 · 1 评论 -
设计模式-08 代理模式
java动态代理(JDK和cglib)JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 ...转载 2018-10-08 00:07:45 · 173 阅读 · 0 评论 -
数据结构 二叉树
越努力越幸运!转载自:https://www.javazhiyin.com/12976.html 实现了二叉树的深度和广度优先遍历深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。而二叉树的深度优先遍历分为先序遍历,中序遍历和后续遍历。先序遍历:先访问根,在访问左子树,最后访问右子树,总结就是“根左右”; 中序遍历:先访问左子树,再访问...转载 2018-10-08 00:06:37 · 217 阅读 · 0 评论 -
数据结构 排序算法
越努力越幸运! 转载自:https://www.javazhiyin.com/13397.html 稳定排序与不稳定排序 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法直接插入排序 直接插入排序介绍直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看...转载 2018-10-07 14:03:28 · 804 阅读 · 0 评论 -
Java学习总结
越努力越幸运! JAVA基础篇 Java基础(1)-数据类型 java基础(2) —基本语法(这里的泛型还不是很理解) java基础(3) —异常机制 java基础(4) —反射JAVA集合篇 java集合(1)集合总体框架 java集合(2)—ArrayList java集合(3)—LinkedLi...原创 2018-10-07 02:54:06 · 2734 阅读 · 1 评论 -
数据结构—二叉平衡树 红黑树
平衡二叉树(AVL) 平衡二叉查找树,又称 AVL树。 它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它 的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子 ) 不超过1。 也就是说AVL树每个节点的平衡因子只可能是-1、0和1(左子树高度减去右子树高度)。那么如何是二叉查找树在添加数据的同时保持平衡呢?基本思想就是:当在二叉排序树中插入一个节...转载 2018-10-07 02:49:27 · 424 阅读 · 0 评论 -
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
转载:https://blog.youkuaiyun.com/zyq522376829/article/details/47686867 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(n...转载 2018-10-07 02:39:13 · 585 阅读 · 0 评论 -
hibernate
越努力越幸运~ https://blog.youkuaiyun.com/David8631/article/details/2676615https://blog.youkuaiyun.com/qq1137623160/article/details/71194677Hibernate工作原理及为什么要用?原理:1. 读取并解析配置文件2. 读取并解析映射信息,...转载 2018-10-07 02:34:29 · 198 阅读 · 0 评论 -
jdbc常见面试题
越努力越幸运! https://blog.youkuaiyun.com/wangqing84411433/article/details/69233298 JDBC操作数据库的步骤 ?1.注册数据库驱动。2.建立数据库连接。3.创建一个Statement。4.执行SQL语句。5.处理结果集。6.关闭数据库连接。2.JDBC中的Statement 和PreparedStateme...转载 2018-10-07 02:33:29 · 1540 阅读 · 0 评论 -
java多线程(6)—ReentrantLock
越努力越幸运!彻底理解ReentrantLock 转载自:https://www.javazhiyin.com/6265.html1. ReentrantLock的介绍ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。 在java关键字s...转载 2018-10-06 00:09:38 · 202 阅读 · 0 评论 -
java多线程(5) —lock AQS
越努力越幸运!转载自:https://www.javazhiyin.com/999.html 1. concurrent包的结构层次在针对并发编程中,Doug Lea大师为我们提供了大量实用,高性能的工具类,针对这些代码进行研究会让我们队并发编程的掌握更加透彻也会大大提升我们队并发编程技术的热爱。这些代码在java.util.concurrent包下。如下图,即为concurren...转载 2018-10-06 00:09:21 · 223 阅读 · 0 评论 -
java多线程(4)-三大性质总结:原子性、可见性以及有序性
越努力越幸运!转载自:JAVA并发八(上):三大性质总结:原子性、可见性以及有序性1. 三大性质简介在并发编程中分析线程安全的问题时往往需要切入点,那就是**两大核心**:JMM抽象内存模型以及happens-before规则(,三条性质:**原子性,有序性和可见性**。关于[synchronized]和[volatile]已经讨论过了,就想着将并发编程中这两大神器在 **原子性,...转载 2018-10-06 00:09:01 · 655 阅读 · 0 评论 -
java集合(1)集合总体框架
越努力越幸运! java集合一.总的集合图如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。Map是Java.u...原创 2018-10-04 00:33:22 · 378 阅读 · 0 评论 -
jvm(3)类加载
越努力越幸运! java的类加载机制一.类加载是什么?类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。举个通俗点的例子来说,JVM在执行某段代码时,遇到了class A, 然而此时内存中并没有class A的相关信息,于是JVM就会到相应的class文件中去寻找class A的类信息,并加载进内存中,这就是我们所说的...转载 2018-10-03 22:38:03 · 192 阅读 · 0 评论 -
jvm(2)垃圾回收GC
越努力越幸运!java的自动垃圾回收机制GC一.怎么判断垃圾回收还是不回收? 1.引用计数法目前主流的虚拟机都没有使用引用计数法,主要原因就是它很难解决对象之间互相循环引用的问题。 2.可达性分析法通过一系列称为 GC Roots 的对象作为起始点,从这些点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链连接(用图论的话来说,就...转载 2018-10-03 22:15:03 · 265 阅读 · 0 评论 -
jvm(1)内存
越努力越幸运!转载自https://blog.youkuaiyun.com/Scythe666/article/details/51841161 http://blog.youkuaiyun.com/scythe666/article/details/51700142 jvm内存一.运行时内存二.程序计数器 可看作当前线程所执行的字节码的行号指示器。...转载 2018-10-03 21:20:27 · 271 阅读 · 0 评论 -
java基础(4) —反射
越努力越幸运!超级超级推荐参考好文!!!!! (请点击) 反射一.反射是什么? 反射是java中强大的一种机制,是为了能够动态的加载一个类,能够动态的调用一个方法,能够动态的访问一个属性等动态要求设计的。二.反射的原理是什么?反射机制的基础是jvm在加载一个类的时候,都会为这个类生成一个java.lang.Class类的实例对象,可以通过这个对象去获取...原创 2018-10-02 23:18:27 · 229 阅读 · 0 评论 -
.java基础(3) —异常机制
越努力越幸运!参考好文 异常处理机制总结:可查异常不可查异常运行时异常异常处理机制try-catchtry-catch-finallyfinally里的return语句会覆盖掉try 或者 catch 语句里的返回语句 抛出异常 任何Java代码都可以抛出异常,如:自己编写的代码、来自Java开发环境包中代码,或者Java...原创 2018-10-02 00:26:22 · 275 阅读 · 0 评论 -
java基础(2) —基本语法
越努力越幸运!一.访问修饰符 访问权限 类 包 子类 其他包 public ∨ ∨ ∨ ∨ (对任何人都是可用的) protect ∨ ∨ ∨ × (继承的类可以访问以及和private一样的权限) default ...原创 2018-10-01 23:10:06 · 461 阅读 · 0 评论 -
北京华宇面经
面的职位是java开发工程师,一面二面是一起的~其实很简单的,哎,但是只怪自己没有准备充分。1.自我介绍2.聊项目,json数组怎么解析后台传回来的?没有解析json格式,当时处理的方式是座位3.hibernate框架与jdbc的区别?相同点:◆两者都是JAVA的数据库操作中间件。◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。◆两者都可以对...原创 2018-09-20 16:14:51 · 828 阅读 · 0 评论 -
Java基础(1)-数据类型
越努力越幸运 一.java的基本数据类型short byte char int double float long boolean 面试官:int是多少字节?答:4个字节。面试官:那int在32位的jvm中是多少字节,int在64位的jvm中是多少字节?答:回答不上来.......正确回答:都是4个字节,就是因为这个也是java平台无关性的原因之一。自...原创 2018-10-01 21:23:50 · 543 阅读 · 0 评论 -
java集合(2)—ArrayList
越努力越幸运!ArrayList ArrayList 是 java 集合框架中比较常用的数据结构了。继承自 AbstractList,实现了 List 接口。底层基于数组实现容量大小动态变化。允许 null 的存在。同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。 一.ArrayLi...转载 2018-10-04 14:59:31 · 256 阅读 · 0 评论 -
java集合(3)—LinkedList
越努力越幸运! LinkedList LinkedList 是双向链表。链表批量增加,是靠for循环遍历原数组,依次执行插入节点操作。对比ArrayList是通过System.arraycopy完成批量增加的。增加一定会修改modCount。 通过下标获取某个node 的时候,(add select),会根据index处于前半段还是后半段 进行一个折半,以提升查询效率...转载 2018-10-04 15:19:58 · 255 阅读 · 0 评论 -
jvm(3)内存模型
越努力越幸运! 转载自:https://www.javazhiyin.com/857.html1. JMM的介绍(JMM是java内存模型)线程安全是什么?当多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替运行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获取正确的结果,那这个对象是线程安全的。 ...转载 2018-10-05 22:10:07 · 213 阅读 · 0 评论 -
java多线程(3)—volatile
越努力越幸运! volatile一.volatile的原理1.volatile保证了它所修饰的变量在不同线程间的可见性 volatile所修饰的变量,当某个线程对其修改后,要及时将主内存中的值更新,某个线程要使用这个变量之前,都要重新从主内存中读取对应的值到工作内存中。2.volatile禁止了指令重排序 为了优化程序运行,通常可能会将可以达到同一个执行效果的...转载 2018-10-05 21:19:35 · 355 阅读 · 0 评论 -
java多线程(2) —sychronized
越努力越幸运! sychronized篇一. sychronized的介绍在Java中内置了语言级的同步原语--synchronizedsynchronized是通过互斥达到同步的。二. sychronized的应用synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对...转载 2018-10-05 21:08:22 · 279 阅读 · 0 评论