
我的面试知识点总结
文章平均质量分 79
史上最弱万古流芳
这个作者很懒,什么都没留下…
展开
-
Andriod基础
Andriod基础前言Activity生命周期生存期Activity被回收了怎么办启动模式布局Fragment生命周期回调函数BroadcastReceiverContentProviderServiceHandlerKotlinJetPackMVVMAndroid 虚拟机后记前言没想到要久违地学习安卓的知识了。先来复习一下最基础的知识:安卓的四大组件分别是:Activity:类似于WPF中的windows,用来显示界面的视图。Service:服务,类似WPF中的后台进程。Broadcast原创 2020-07-30 10:02:41 · 165 阅读 · 0 评论 -
计算机网络(路由器与路由算法)
路由器与路由算法前言定义自治系统路由协议内部网关协议RIP如何解决路由环路的问题?OSPF外部网关协议BGP后记前言昨天经过字节一面感觉自己对路由器了解甚少,所以决定还是认真学习一下路由器与路由算法吧。定义首先我们先对路由下一个定义,什么是路由?根据百度百科的解释,路由是指分组从源到目的地的时候,决定端到端路径的网络范围的进程。说白了就是选择一条合适路径来传输需要发送的数据包。自治系统自治系统(Autonomous System,AS)指的是在单一技术管理下的一组路由器,这些路由器使用同一种原创 2020-07-13 16:11:14 · 1135 阅读 · 0 评论 -
Java基础(多线程篇)
多线程篇前言缓存一致性volatile关键字Synchronized关键字锁偏向锁轻量级锁重量级锁ThreadLocal线程池原理实现Atomic原子类原理AQSAQS组件总结后记前言没想到多线程的内容一拖再拖拖了这么久。虽然之前看过几次,但是还是赶在面试之前将这一块内容中面试经常会问的内容整理出来,做一个总结吧。主要内容分为关键字、锁、ThreadLocal、原子类、AQS和线程池。缓存一致性程序在运行的时候会把运算需要的数据从主存中复制一份到CPU的高速缓存中,运算完成之后再写回内存,这就导致原创 2020-06-27 21:27:01 · 183 阅读 · 0 评论 -
从零开始的源码分析(ArrayList篇)
集合源码分析前言从迭代器开始说起以ArrayList的Iterator为例变量hasNext()next()removeforEachRemaining更强大的ListIterator回到集合List接口前言感觉Java集合是面试中必定会被问到的内容之一,所以这一次打算先把面试中必定会问的几个问题的源码搞明白。这系列文章主要参考大佬博客:Java 集合源码解析从迭代器开始说起迭代器其实使我们在平时使用的时候用的比较“少”的一个东西,一般当需要进行遍历的时候我们会写如下代码:for(int i=0原创 2020-06-24 20:50:00 · 413 阅读 · 0 评论 -
设计模式(手撕单例模式)
前言上次说之后总结一下设计模式的面试题目,结果一晃时间过了这么久。看到别人的面经中提到了不少手写单例模式的题,所以来总结一下。单例模式单例模式指的是一个类仅有一个实例,并且提供这个类的全局访问点。懒汉式,线程不安全//这个是我在写网吧桌面端的时候用的单例模式,最基础最简单,但是是线程不安全的。//当一个线程初始化到一半的时候,另一个线程访问,发现不是NULL就直接拿去用了。public class Singleton{ private static Singleton instance;原创 2020-06-21 20:10:46 · 311 阅读 · 0 评论 -
Java基础(并不基础的红黑树)
并不基础的红黑树前言红黑树的性质红黑树的插入第一步 判断父节点颜色第二步 父节点的位置和叔节点的颜色第三步 黑色叔节点第四步 黑色叔节点和左节点插入总结前言之前写了有关于Java集合的总结,在Java集合中HashMap、TreeMap的底层实现都涉及到了红黑树。之前也听说是师兄在面试的时候也被问到有关于红黑树的部分,所以还是简单学习一下。先介绍一个很不错的网站,可以模拟红黑树的插入和删除:红黑树网站红黑树的性质红黑树的本质就是一颗不太严格的二叉查找平衡树。也就是说它具有查找树的性质——小的数原创 2020-06-20 21:11:35 · 231 阅读 · 0 评论 -
剑指Offer错误总结
错误总结前言剪绳子机器人的运动范围矩阵中的路径滑动窗口的最大值数据流的中位数二叉搜索树的第K个节点二叉树的下一个节点删除链表中的重复节点寻找环的入口表示数值的字符串正则匹配字符串前言自信满满去牛客网刷剑指offer,结果前几题没一道过的。所以痛定思痛,决定把自己犯的睿智错误记录下来,以此为戒。剪绳子错误原因:Math.pow参数搞反了。//我想写个3^n,结果写成了下面这个n^3,看了好久才发现。Math.pow(n,3);机器人的运动范围错误原因:搜索的时候没有返回sum+1;publ原创 2020-06-20 13:50:24 · 633 阅读 · 0 评论 -
Java常用框架(MyBatis和Spring事务篇)
MyBatis和Spring事务前言Spring事务传播行为前言这篇文章主要总结MyBatis和Spring事务的相关知识点。MyBatis算是一个比较新的持久层技术,相比较Hibernate,MyBatis是一个半自动的ORM框架,更加简单,也更加灵活,这也是MyBatis现在逐渐取代Hibernate的原因之一。自己写Hibernate的时候,如果是简单的查询语句非常方便,调用模板就能快速完成,但是一旦涉及到复杂的SQL语句,Hibernate写起来就感觉非常麻烦,需要使用自己的HQL语句,而且原创 2020-06-17 19:36:46 · 728 阅读 · 0 评论 -
Java常用框架(Spring篇)
Spring什么是Spring控制反转和依赖注入控制反转Spring的依赖注入什么是Spring beans?Initialization和destroy实现 *Aware 接口BeanPostProcessorBean的生命周期条件装配IOC容器的原理面向切面编程AOP的术语基于注解的AOP切面切点引入参数多个切面后记什么是Spring一般说到Spring指的都是Spring Framework,它是多种模块的集合,这些模块可以很方便地帮助我们开发。Spring是一种非侵入式的框架,对类的结构没有影原创 2020-06-10 16:50:22 · 831 阅读 · 0 评论 -
数据库(Redis篇)
Redis前言为什么要使用缓存为什么要使用Redis而非map/guava做缓存Redis的线程模型Redis和Memcached有什么区别Redis过期时间Redis内存淘汰机制Redis的持久化AOF重写事务缓存雪崩和缓存穿透缓存雪崩缓存穿刺如何保证缓存与数据库的双写一致性为什么要先更新数据库再删除缓存后记前言Redis是一种运行在内存中的非关系型数据库,运行速度非常快,如果将常用数据保存在Redis中可以大大增加查询速度。除此之外,Redis还支持事务、持久化、LUA脚本、LRU驱动事件、多种集群原创 2020-06-08 15:06:25 · 868 阅读 · 0 评论 -
数据库(MySQL篇)
MySQL篇前言存储引擎字符集及校对规则字符集MySQL的字符集前言MySQL是一种关系型数据库,有着开源免费,方便拓展的优势。本篇文章主要对MySQL的面试相关知识点做一个总结,主要包括以下内容:存储引擎、字符集和校对规则、索引、查询缓存的使用、事务、锁机制、大表优化、数据库连接池等。存储引擎MySQL目前的默认存储引擎是InnoDB,并且在5.7版本中只有InnoDB支持事务。在5.5版本之前,MySQL的默认引擎是MyISAM。InnoDB相对于MyISAM的主要优势在于:InnoDB原创 2020-06-01 14:59:56 · 1012 阅读 · 0 评论 -
操作系统
操作系统前言操作系统什么是操作系统操作系统的组成什么是系统调用进程与线程进程有哪几种状态进程间的通信方式线程间的同步方式进程的调度算法操作系统的内存管理机制快表和多级页表虚拟地址虚拟地址的作用虚拟内存虚拟存储器空间局部性和时间局部性页面置换算法后记前言本篇文章主要对面试中常见的操作系统相关问题做一个总结,包括:操作系统的功能和作用、线程和进程、操作系统内存管理机制以及一些操作系统中常见的算法。操作系统什么是操作系统操作系统(Operating System,简称OS),指的是直接管理计算机硬件与软原创 2020-05-26 15:29:48 · 1999 阅读 · 0 评论 -
计算机网络(Http篇)
Http篇前言概念前言Http,全称为超文本传输协议,是一种运行在应用层上的协议。这篇文章主要对Http做一个总结,将分为概念、常见状态码、Get和Post的区别、Https与Http的区别、在浏览器中输入url并按下回车之后发生了什么等部分。概念超文本是指用超链接的方式,将各种不同空间的文字信息组织在一起的网状文本...原创 2020-05-24 21:00:58 · 411 阅读 · 0 评论 -
计算机网络(OSI和TCP篇)
网络模型前言网络模型OSI模型五层模型TCP连接过程TCP报文段三次握手为什么要使用三次握手四次挥手为什么客户端最后要等待2MSLTCP和UDP的区别面向字节流TCP的可靠性滑动窗口协议流量控制&拥堵控制前言这篇文章主要总结计算机网络学习过程中的网络模型以及TCP连接的建立过程。首先要明确一个概念:OSI模型并非现实中使用的网络协议。OSI主要是表明网络体系的一个模型,按照功能划分,一个网络应该分为哪几部分,每个部分应该发挥什么样的作用。比如现实中,以太网、WIFI、光纤网等实现了第一层和第原创 2020-05-23 15:40:17 · 1010 阅读 · 0 评论 -
Java基础(I/O篇)
I/O处理前言IO介绍BIO、NIO和AIOBIONIOAIO传统的IONIO模型BIO的劣势NIO的结构BufferChannelSelector实例代码Proactor和Reactor后记前言本篇文章主要整理有关于Java中IO处理的内容,重点主要放在NIO上,并且介绍一部分有关于AIO的内容。主要参考资料如下:Java NIO浅析Java核心(五)深入理解BIO、NIO、AIO10个最高频的Java NIO面试题剖析!IO介绍BIO、NIO和AIOBIO一般所说的BIO指的是Jav原创 2020-05-20 16:47:19 · 175 阅读 · 0 评论 -
Java基础(杂七杂八篇)
杂七杂八篇前言面向对象面向对象的特征面向对象的原则关键字标识符instanceofstrictfpassertvolatilefinal基本数据类型及其包装类不可变类包装类传值问题缓存策略对象Object类的公有方法前言这一篇不是系统的学习篇,主要总结一些Java的零碎知识以及一些小细节。主要包括:字符串、关键字、包装类、面向对象的特点和原则等等。面向对象面向对象的特征抽象:忽略一个主题中与当前目标无关的元素。继承:是一种联结类的层次模型,并且允许和鼓励重用类。多态:允许不同类的对象对同一消原创 2020-05-18 15:31:01 · 643 阅读 · 0 评论 -
Java基础(集合篇)
集合前言Java集合框架ListSetMapHashMap的扩容问题ConCurrentHashMapJDK1.7JDK1.8后记前言Java基础中,集合是面试时经常会被问到的一部分,所以这篇文章将简单做一个总结,首先会讲述集合中Collection接口中的List和Set,然后重点会讲述Map接口,包括HashMap为什么多线程扩容的时候回造成死循环。Java集合框架ListList中比较常用的三个是ArrayList、LinkedList以及Vector。ArrayList:最底层由数组原创 2020-05-12 21:02:28 · 177 阅读 · 0 评论 -
深入理解JVM(程序编译与代码优化篇)
程序编译与代码优化前言Javac编译器语义分析与字节码生成标注检查数据及控制流分析解语法糖字节码生成后端编译与优化及时编译器编译对象和触发条件编译过程编译器优化技术方法内联逃逸分析公共子表达式消除数组边界检查消除后记前言Java中的编译主要分为3个部分:前段编译:把.java文件转化为.class文件的过程。即时编译:把字节码转化为本地机器码的过程。提前编译:把字节码转化为与目标及其指令集相关的二进制代码的过程。如果单指对代码运行效率的“优化”,那么在前端编译的Javac中几乎没有任何优化措原创 2020-05-12 15:14:59 · 625 阅读 · 0 评论 -
深入理解JVM(栈帧与方法调用篇)
栈帧与方法调用前言运行时栈结构局部变量表操作数栈动态连接方法返回地址附加信息方法调用解析分派静态分派动态分派单分派与多分派前言在上一篇中,讲述了JVM中类的文件结构以及类加载的机制,那么在虚拟机运行的时候是如何执行在定义在Class文件中的字节码的呢?运行时栈结构Java虚拟机以方法作为最基本的执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,也是虚拟机中运行时数据区中的虚拟机栈中的栈元素。每一个栈帧都包括了局部变量表、操作数栈、动态链接和方法返回地址以及一些额外的附加信息原创 2020-05-11 21:02:33 · 814 阅读 · 0 评论 -
深入理解JVM(类篇)
类文件结构与类加载器前言类文件结构魔数和版本号常量池访问标志类索引、父类索引、接口索引集合字段表集合方法表集合属性表集合虚拟机类加载机制前言在java中,类是最重要的部分之一,虚拟机把代码转换为.class文件中的字节码,然后再把字节码转化为机器码,正是由于这个操作,使得java能够一次编译,到处运行。类中的文件结构是什么样子的?虚拟机又是如何加载类,这篇文章将做一个总结,简单介绍一下类文件...原创 2020-05-11 20:13:17 · 186 阅读 · 0 评论 -
深入理解JVM(对象篇)
对象前言对象创建JAVA中对象创建的方法JVM中对象的创建对象的内存布局对象的访问总结前言本章来自面试经典问题:对象是如何创建、如何布局以及如何访问的。在讨论这个问题之前,首先要明确不同的虚拟机和不同的内存区域是不太一样的,所以本篇的内容将被限定在虚拟机HotSpot和最常用的内存区域JAVA堆上。对象创建JAVA中对象创建的方法在讨论JVM中对象的具体创建过程之前,其实可以对这个问题进...原创 2020-05-07 20:56:52 · 125 阅读 · 0 评论 -
深入理解JVM(番外:分代算法)
分代算法前言常见误区分代收集设计新生代年老代年龄计数器动态年龄判断空间担保分配前言在深入了解JAVA虚拟机书中,虽然对垃圾回收进行了详细的说明,并且列举了很多主流的垃圾回收器,但是对于分代算法中具体新生代和年老代如何划分自己的内存空间、何时进行GC、新生代是如何转化为年老代等诸如此类的问题没有进行详细的说明,所以,在这篇文章里将简短地做一个总结,说明一下分代算法中的具体内容。常见误区根据《...原创 2020-05-07 15:53:39 · 183 阅读 · 0 评论 -
深入了解JVM(GC篇)
深入了解JVM(其一)JAVA的垃圾回收机制JVM的内存模型何时进行垃圾回收引用计数法可达性分析法四种引用被回收之前方法区的回收垃圾回收算法分代收集理论4种垃圾回收算法HotSpot算法细节根节点枚举安全点安全区域记忆集和卡表写屏障并发的可达性分析经典垃圾收集器CMS收集器G1收集器JAVA的垃圾回收机制java垃圾回收机制可以用3个词来概括:where,when和how。where即运行时...原创 2020-05-07 14:26:23 · 938 阅读 · 1 评论