Java面试常用基础知识点
文章平均质量分 80
本专栏主要是收集了一些网上的热门相关基础知识点,再结合自己面试国内多家大型互联网公司的面试经历整理的,虽然基础,但是想要拿到这些公司的offer,也是需要灵活掌握的。
逐风的小黄
人生要不断保持进步,不进步就会哭T﹏T!
展开
-
Java项目中使用Mybatis Plugins---MyBatis-generator来进行自动生成prjo、Dao、xml
随着MyBatis使用的越来越广泛,越来越多的插件可以帮助我们更好的集成和使用MyBatis,今天就要介绍一个可以通过数据库自动生成用于自动生成prjo、xml、dao层代码的一个插件-MyBatis generate。 1、MyBatis Generator的引用 MyBatis Generate可以直接在Intellij IDEA中通过Maven的pom.xml直接引入对应...原创 2018-07-02 00:43:05 · 862 阅读 · 0 评论 -
Git配置
Git是著名的版本控制和管理工具,通过Git,我们可以轻松实现版本管理和发布,目前来说业内最主流的开发模式,都是分支开发,主干master发布。 今天我们就来说一下Git怎么配置,配置完成后,就可以通过我们本地的git软件来对工程进行管理了。 1、Git的安装 Git的安装在windows下十分方便,直接在百度中输入Git,或者直接在浏览器中输入官网地址https://www.git...原创 2018-06-24 22:36:47 · 1759 阅读 · 0 评论 -
2018年Java面试题集合(持续更新中)
本文记载了所有我看过的,或者面试中遇到的个人觉得之前很少遇到过得题目。1、快速失败(fast-fail)和安全失败(fail-safe)的区别是什么,各自代表什么? 快速失败:当你在迭代一个集合时,如果同时有多个线程在操作这个集合,并修改了这个集合时,就会抛出Concurrent Modification的异常。在java.util下面都是快速失败。 安全失败:当你在迭代访问一个集合时,做...原创 2018-07-09 00:04:20 · 849 阅读 · 0 评论 -
zookeeper学习记录
1、什么是Zookeeper zookeeper是一种分布式协调服务,主要用于大型主机组或者集群管理,其开放简单的读写接口给用户调用使用,内部则保持了分布式系统数据的一致性和可靠性,这大大帮助了开发人员提高开发效率,只需要关心业务逻辑就可以了,而不需要在关心分布式特性和问题。其主要有以下几大服务组成。 它是谷歌的Chubby的一个开源实现,它是集群的管理者,监视管理集群中每个节点的状态...原创 2018-07-03 23:28:04 · 215 阅读 · 0 评论 -
OSI网络七层模型
1、什么事OSI七层模型 OSI七层模型是计算机网络中的概念。它是一个由国际标准化组织提出的概念模型,将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。具体模型结构从下至上分别是: 物理层->数据链路层->网络层->传输层->会话层->表示层 ->应用层 应用程序 应用层 表示层原创 2018-06-19 23:56:56 · 663 阅读 · 0 评论 -
TCP四次挥手
1、什么是TCP四次挥手? TCP链接在关闭时,会进行四次通信,此时客户端或者服务端都可以主动发起,这就是所谓的四次挥手,在这四次通信后,TCP链接就会正在断开,否则仅仅只是半链接而已。 2、TCP四次挥手流程详解 TCP四次挥手,具体要分四个步骤来分析,具体如下: 1、A端向先向其TCP发出释放链接的请求报文,此时FIN=1,seq=...原创 2018-06-19 20:50:30 · 217 阅读 · 0 评论 -
从浏览器输入URl到显示出页面的过程
我们现在上网过程中,常常会在浏览器中输入各种各样的URL或者网址,然后浏览器就会渲染出对应的网页。这里到底是怎么实现的呢,中间包含的过程又有哪些呢。让我们来一一分析。 首先,我们可以大致分为以下几步。 1、要解析域名转换成对应的公网IP; 2、根据公网IP通过庞大的互联网路由到对应的服务器...原创 2018-06-18 23:41:29 · 6970 阅读 · 0 评论 -
MySQL数据库引擎
MySQL是我们常用的开源关系型数据库之一,我们在使用他们的时候,也应该适当了解一下其引擎的相关性能和选择要点。首先,什么是数据库引擎。1、什么是数据库引擎 数据库引擎是用于存储、处理和保护数据的核心服务。它利用不同的技术也就是不同的引擎将数据库的数据存储在内存和硬盘中。合理的选择和利用数据库引擎可以为服务带来良好的性能。不同的引擎有不同的特点,适应不同的工作环境和要求。2...原创 2018-06-18 17:46:42 · 147 阅读 · 0 评论 -
如何实现分布式锁
分布式锁是有别于传统锁机制的一种锁。首先说一说,线程锁、进程锁。这些锁其实就是用于保持进程间、线程间对同一个资源的访问加锁。而分布式锁有所不同,它表示多个进程或者线程运行在不同的机器上,就是操作系统上,对同一个资源的访问保护。1、分布式锁的实现分布式锁的主要解决方案和思路就在于,在业务集群之外,再搭建一个用于保持锁的服务器,用于完成集群间的分布式锁机制。具体可以实现的方式主要有以下几种...原创 2018-06-16 11:33:40 · 1931 阅读 · 0 评论 -
Java多线程中ThreadLocal解析
Java多线程中,常常会用到这样一个类,ThreadLocal。这个类是用来干什么的呢,我们先来看一段代码。private static final ThreadLocal threadSession = new ThreadLocal();public static Session getSession() throws InfrastructureException { ...原创 2018-06-12 00:35:24 · 255 阅读 · 0 评论 -
Java多线程之join篇
Java中多线程至关重要,其中有个叫做Thread.join()的方法,十分关键。这个方法具体有什么作用呢,它又是怎么工作的,有什么原理呢,让我们一起来看一下。1、Join的作用 Join方法的作用,其实就是表示一旦某个线程调用了join方法,那么就要一直运行到该线程运行结束,才会运行其他进程,我们可以有一个例子来对比一下。 1.1、不使用Joinpackage...原创 2018-06-10 20:15:25 · 7428 阅读 · 2 评论 -
Java多线程如何实现
Java多线程是Java高级特性之一,通过多线程,我们可以实现多任务同时协同工作,在一定情况下提升程序效率,但是Java多线程仍要慎重使用,首先第一点,Java多线程需要较高的编码技巧,一旦使用不当就会造成程序错误,线程间恶意竞争死锁,导致程序卡死。其二,滥用多线程可能会造成某些关键参数紊乱,这时需要做好线程间的同步和锁管理。其三,线程的切换是需要额外的代价的,也就是常说的“上下文切换...原创 2018-06-10 20:00:20 · 3057 阅读 · 0 评论 -
Java里的IO输入输出流
Java中的输入输出流是Java的高级特性之一,其主要分为输入流和输出流,按照输入输出格式又分为字节流和字符流,按照这个规则拓展又出现了多个子类,具体可以参照下图。1、字节流和字符流的主要区别 字符流主要是Reader和Writer,字节流主要是InputStream和OutPutStream。这其中的最要区别在于,字符流是以字符的形式进行传输,而字节流的传输是按照字节来...原创 2018-06-10 13:59:22 · 240 阅读 · 0 评论 -
Https的优缺点及特点
大家都知道现在的网站分为两种,一种是传统的http协议,另外一种则是加密的https,其实这两种是一脉相承的,https就是基于http基础上实现的,加入了SSL或者TLS。相对于Https,http简单方便,开发起来也方便,但是却有个重要的缺点。那就是其用户端和客户端之间的数据一旦被抓包,其相关的交互信息就会被泄露,因为在传输中它们是不加密的,相当于在“裸奔”,除非服务器自己对关键信...原创 2018-06-09 10:18:50 · 14470 阅读 · 2 评论 -
Java线程池相关简述
Java的多线程是java的高级特性之一,而线程池则就是为了优化Java在使用线程时的性能,而特意设计的。使用线程池的最大好处就在于,节约了Java在起线程时的创建时间和销毁时间。 为了做到这一点,Java使用线程池,在池子中存放众多已经创建好的线程,等到需要使用时,直接给用户调用,在不足时,放入阻塞队列中等待,其他线程的释放。 java.util.concurrent.E...原创 2018-06-09 00:21:28 · 195 阅读 · 0 评论 -
大型系统的架构进化之路
任何的大型系统架构都不是一朝一夕出现的,全部都是从微小之时从最小的架构不不断发展出来的。目前来说,最常见的网站架构如下图所示: 在网站最微小的时候,所有的服务都部署在一台服务器上,也就是所谓的all in one。即如下所示: 如上图所示,这里的后台Application、数据库、文件服务器全部都部署在一个服务器Application Server上,但是随着...原创 2018-06-08 23:55:37 · 1524 阅读 · 0 评论 -
如何保持MySQL和Redis的一致性?
如题,现在很多架构都采用了Redis+MySQL来进行存储,但是由于多方面的原因,总会导致Redis和MySQL之间出现数据的不一致性。 例如如果一个事务执行失败回滚了,但是如果采取了先写Redis的方式,就会造成Redis和MySQL数据库的不一致,再比如说,一个事务写入了MySQL,但是此时还未写入Redis,如果这时候有用户访问Redis,则此时就会出现数据不一致。 ...原创 2018-06-01 21:59:45 · 33881 阅读 · 6 评论 -
Redis的应用场景和优缺点
Redis作为一个典型的非关系型数据库,目前来说在企业级应用中使用广泛。它十分适合存储少、访问量巨大的场景,所有数据全部in-memory保证了数据的高速访问。作为和他一个类型的noSQL,他和memcached又有什么区别和优点呢,就让我们一起来看一下。1、Memcached和Redis相比的劣势 业界常用MySQL+Memcached这样的存储架构,但是随着访问量的不...原创 2018-05-31 22:07:10 · 16936 阅读 · 0 评论 -
Java中Synchronzed关键字的相关用法和原理
最近看到一个面试题,包括我自己也经常遇到面试官问Synchronized关键字的用法和底层原理。今天就来总结一下相关的问题和答案。1、Synchronized关键字的作用 我想但凡用Java的开发者肯定都知道这个关键字,它是JDK提供给大家使用的同步关键字,用于在多线程场景下对关键资源的加锁,以保障数据不会因为多线程而紊乱。包括在Java很多内置的函数里面也都是使用的该关...原创 2018-05-30 23:42:32 · 1522 阅读 · 0 评论 -
简述JAVA序列化和反序列化
Java的序列化和反序列化大家基本上都听说过,但是一旦问到底层是怎么实现的,大家一般就很少关注了,今天我们一起来看看它们到底是怎么实现的。1、序列化反序列化的作用 Java的序列化和反序列化的主要作用就是用在两个Java进程之间相互传输时所使用。因为利用序列化和反序列化,我们可以实现两个进程间的Java对象传输。 序列化:将Java对象按照一定的格式输出为字节序列,...原创 2018-05-28 23:42:15 · 550 阅读 · 0 评论 -
Java类加载机制浅谈
Java类加载机制是Java面试中最常见的面试题之一,虽然我们在日常开发中很少关注Java它的类加载具体是如何进行,但是如果了解了它的加载机制了原理,可以让我们更好的掌握Java这门语言。 我们都知道Java是一门跨平台语言,它的代码运行在Java虚拟机Jvm上,源文件是.java的文件,在经过编译后就会生成一个个.class的类文件。而类加载时,JVM加载的就是.cla...原创 2018-05-27 23:57:03 · 160 阅读 · 0 评论 -
JVM GC垃圾回收机制简述
Java相比于C++一大特点便是其特有的自动垃圾回收机制,有了它,我们就可以不用再关系内存分配的问题了,也一般不需要担心出现内存泄漏。大家也可以愉快的聚焦于业务发展。那么Java的GC回收到底是怎么实现的呢,本文就来简单的说一下。 要想了解Java的GC机制,首先要对JVM的内存结构有一定的了解,首先让我们来一起了解一下。1、JVM内存结构 JVM内存结构通常来说由虚拟...原创 2018-05-26 22:06:40 · 13684 阅读 · 0 评论 -
数据库事务隔离级别概述
数据库的的事务隔离是数据库的重要属性之一。在高并发的情况下,数据库的事务隔壁性能必不可少。首先,如果要是支持事务,那么数据库的四大特性也一定要支持,那就是ACID,即所谓的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durablity)。1、数据库ACID 1.1、原子性 原子性是指事务之间的一致性,要么一起成功,...原创 2018-05-26 20:35:12 · 263 阅读 · 0 评论 -
数据库索引杂谈
数据库索引对于一个开发来说至关重要,如果使用得当,他可以让我们的查询数据的效率大大提高,具体可以参考二分查找,缩短至O(lgn),具体就要看底层的B+Tree有几层到底多高了。1、什么是数据库索引? 数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度。 其实给数据库建立索引就相当于给表中这个属性排序,一旦给这个t...原创 2018-05-26 00:17:08 · 164 阅读 · 0 评论 -
java中Map有哪些实现类和使用场景
Java中的map是一个很重要的集合,他是一个接口,下面继承它实现了多个实现类,这些类各有千秋,各自有个各自的优点和缺点,先上图。 map的主要特点是键值对的形式,一一对应,且一个key只对应1个value。其常用的map实现类主要有HashMap、HashTable、TreeMap、ConcurrentHashMap、LinkedHashMap、weakHashMap等等。1、...原创 2018-05-25 21:02:38 · 45854 阅读 · 6 评论 -
HashMap的实现原理,以及在JDK1.7和1.8的区别
1.JDK1.7 HashMap是Java中大家最常用的一个Collection,其为键值对也就是key-value的形式。他的数据结构则是采用的位桶和链表相结合的形式完成了,即拉链法。具体如下图所示: HashMap里面存储的是静态内部类Entry的对象,这个对象其实也是一个key-value的结构。以下是Entry的源码: static class Entry<K,...原创 2018-05-25 18:56:24 · 17970 阅读 · 2 评论