![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
莫非的Java
这个作者很懒,什么都没留下…
展开
-
Linux基础知识
1. Unix Linux GNU/Linux MacOSUnix是最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。目前这款操作系统已经逐渐逐渐退出操作系统的舞台。Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核 。在 GNU/Linux 系统中,Linux 实际就是 Linux 内核,而该系统的其余部分主要是由 GNU 工程编写和提供的程序组成。单独的 Linux 内核并不能成为一原创 2020-10-28 12:02:24 · 279 阅读 · 1 评论 -
Java 面试代码
回文数(leetcode9)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。(不能将整数转为字符串)解题思路: 取出后半段数字进行翻转。由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。具体做法如下:每次进行取余操作 ( %10),取出最低的数字:y = x % 10;将最低的数字加到取出数的末尾:revertNum = revertNum *原创 2020-10-19 11:22:39 · 910 阅读 · 1 评论 -
Integer与int
Integer 类和 int 的区别Integer 是 int 的包装类,默认值为null,int 是八大基本数据类型之一(byte,char,short,int,long,float,double,boolean),默认值为0;Integer 表示的是对象,用一个引用指向这个对象,而int是基本数据类型,直接存储数值。关于Integer的比较问题:Integer与new Integer()不相等,因为内存地址不一样,使用 == 比较都为false。两个都是非new出来的Integer,使用原创 2020-10-15 11:51:46 · 316 阅读 · 0 评论 -
Java项目问题
项目概述:利用SpringBoot+MySQL/ Redis+ thymeleaf/Vue.js+ Restful架构完成购物商城的基本功能:商品的分类查询和属性设置+订单状态流转;CRUD后台各种功能(Mybatis/JPA规范)、事务的使用;使用Redis对数据进行缓存处理、缓存和数据库的一致性问题、缓存雪崩和缓存穿透问题解决⽅案;Restful架构实现前后端分离。开发流程:表结构的设计用户相关:用户表、评价表;产品相关:分类表、属性表、产品表;订单相关:订单表、订单单项表。原创 2020-10-05 22:08:45 · 633 阅读 · 1 评论 -
操作系统
1. 什么是操作系统操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基⽯;操作系统本质上是运⾏在计算机上的软件程序 ;操作系统为⽤户提供⼀个与系统交互的操作界⾯ ;操作系统分内核与外壳(可以把外壳理解成围绕着内核的应⽤程序,⽽内核就是能操作硬件的程序,内核负责管理系统的进程、内存、设备驱动程序、⽂件和⽹络系统等等,决定着系统的性能和稳定性,是连接应⽤程序和硬件的桥梁)。2. 系统调⽤根据进程访问资源的特点,可以把进程在系统上的运⾏原创 2020-09-28 11:17:18 · 586 阅读 · 0 评论 -
计算机⽹络
本文从JavaGuide面试突击版整理得到,侵删。1. OSI与TCP/IP各层的结构与功能,都有哪些协议?计算机网络体系结构:(a)OSI七层协议;(b)TCP/IP四层协议;(c)五层协议(中和 OSI 和 TCP/IP 的优点)。应⽤层应⽤层(application-layer)的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的 HTTP协议原创 2020-09-28 00:29:17 · 554 阅读 · 0 评论 -
Java基础知识
本文从JavaGuide面试突击版整理得到,侵删。1. ⾯向对象和⾯向过程的区别⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⽐较⼤,⽐较消耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能⽐⾯向过程低。原创 2020-09-24 21:52:07 · 660 阅读 · 0 评论 -
Spring、SpringMVC、SpringBoot
1. 什么是 Spring 框架?Spring 是⼀种轻量级开发框架,旨在提⾼开发⼈员的开发效率以及系统的可维护性,它是很多模块的集合,使⽤这些模块可以很⽅便地协助我们进⾏开发。这些模块是:核⼼容器、数据访问/集成,、Web、AOP(⾯向切⾯编程)、⼯具、消息和测试模块。名词解释:IOC 反转控制 是Spring的基础,Inversion Of Control简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象DI 依赖注入 Dependency Inject原创 2020-08-19 22:43:23 · 435 阅读 · 0 评论 -
Redis基础知识
本文是来自JavaGuide面试突击版Redis部分的整理,只涉及Redis作为缓存时的相应知识点,因为其他的分布式内容我项目里面没有涉及-_-||。1. redis 简介简单来说 redis 就是⼀个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度⾮常快,因此 redis 被⼴泛应⽤于缓存⽅向。redis 提供了多种数据类型来⽀持不同的业务场景。问:为什么要⽤ redis/为什么要⽤缓存?主要从“⾼性能”和“⾼并发”这两点来看待这个问题。⾼性能:假如⽤户第⼀次访原创 2020-08-15 23:22:35 · 528 阅读 · 0 评论 -
MySQL基础知识总结
1. 什么是MySQL?MySQL 是⼀种关系型数据库,在Java企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何⼈都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进⾏修改。MySQL的默认端⼝号是3306...原创 2020-08-14 18:40:14 · 912 阅读 · 0 评论 -
JVM基础知识
1. 介绍下 Java 内存区域(运⾏时数据区)Java 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。(JDK. 1.8 和之前的版本略有不同,下⾯会介绍到。)JDK 1.8之前:JDK 1.8 :...原创 2020-08-11 21:53:27 · 595 阅读 · 0 评论 -
单例模式 代码+线程安全性解析
单例模式是什么?单例模式又叫做 Singleton模式,指的是一个类,在一个JVM里,只有一个实例存在,并提供一个访问它的全局访问点。为什么需要单例模式?有的类的实例对象创建和销毁对资源来说消耗不大(例如String),而有的类型比较庞大和复杂,如果频繁的创建和销毁对象并且这些对象是可以复用的,那将造成一些不必要的性能浪费。例:比如要写一个访问数据库的demo,创建数据库链接的对象就是一个耗资源的操作,并且数据库链接完全是可以复用的。那么就可以将这个对象设计为单例,这样只需要创建一次并重复使用。实原创 2020-08-06 01:06:24 · 455 阅读 · 0 评论 -
多线程(无代码,纯干货)
1、什么是线程和进程?进程:在操作系统中能够独立运行,并且作为资源分配的基本单位。它表示运行中的程序。系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程:线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。多个线程共享进程的堆和⽅法区资源,但是每个线程有⾃⼰的程序计数器、虚拟机栈 和 本地⽅法栈。系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,因此也被称为轻量级进程。不同点:线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因原创 2020-08-04 21:24:05 · 886 阅读 · 0 评论 -
Java集合
这里主要对集合框架内部数据结构和Java面试问题进行总结,集合常见方法的调用请看我其他整理的汇总文章。1. ListArraylist: Object数组Vector: Object数组LinkedList: 双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环)问:ArrayList和LinkedList的区别?相同点:ArrayList和LinkedList都是非线程安全的,都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。区别:Ar原创 2020-08-04 18:24:26 · 239 阅读 · 0 评论 -
乐观锁与悲观锁(无代码,纯干货)
文章内容参考https://gitee.com/mrxt/JavaGuide/blob/master/docs/essential-content-for-interview/面试必备之乐观锁与悲观锁.mdhttps://www.jianshu.com/p/6e4005acb4e3对上面文章的要点进行提取,方便进行面试记忆,侵删。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,即共享资源每次只给一个线程原创 2020-08-02 20:59:43 · 187 阅读 · 0 评论 -
红黑树的产生原因和基本原理
https://juejin.im/post/6844903519632228365#comment原创 2020-08-02 00:44:47 · 574 阅读 · 0 评论 -
B树,B+树,B*树
我们都知道二叉查找树的查找的时间复杂度是O(log N),其查找效率已经足够高了,那为什么还有B树和B+树的出现呢?难道它两的时间复杂度比二叉查找树还小吗? 答案当然不是,B树和B+树的出现是因为另外一个问题,那就是磁盘IO;众所周知,IO操作的效率很低,那么,当在大量数据存储中,查询时我们不能一下子将所有数据加载到内存中,只能逐一加载磁盘页,每个磁盘页对应树的节点。造成大量磁盘IO操作(最坏情况下为树的高度)。平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下。 所以,我们为了减原创 2020-08-02 00:11:55 · 254 阅读 · 0 评论 -
Java面试:Arraylist 与 LinkedList 区别?
ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。ArrayList和LinkedList的大致区别如下:ArrayList是基于动态数组的数据结构,LinkedList是基于链表结构。对于随机访问的get方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。...原创 2020-08-01 13:42:53 · 98 阅读 · 0 评论 -
Java面试 “==“、“equals“与hashCode
1. == 与 equals== :它的作⽤是判断两个对象的地址是不是相等。equals() : 它的作⽤是判断两个对象是否相等。⼀般有两种使⽤情况:情况 1:类没有覆盖 equals() ⽅法。则通过 equals() ⽐较该类的两个对象时,等价于通过 == ⽐较这两个对象。情况 2:类覆盖了 equals() ⽅法。⼀般,我们都覆盖 equals() ⽅法来⽐较两个对象的内容是否相等;若它们的内容相等,则返回 true。2. hashCode 与 equals⾯试官可能会问你:“你重写过 h原创 2020-07-31 19:59:50 · 213 阅读 · 0 评论 -
三次握手,四次挥手 面试知识点
1. 三次握手刚开始客户端处于 Closed 的状态,服务端处于 Listen (监听)状态。进行三次握手:第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。第三次握手:客原创 2020-07-31 16:44:54 · 228 阅读 · 0 评论 -
Java汇总(三):String篇 String、StringBuffer、StringBuilder
一、可变性String 类中使⽤ final 关键字修饰字符数组来保存字符串(在 Java 9 之后,String 类的实现改⽤ byte 数组存储字符串),所以 String 对象是不可变的。⽽StringBuilder 与 StringBuffer 都继承⾃ AbstractStringBuilder 类,在该类中也是使⽤字符数组保存字符串,但是没有⽤ final 关键字修饰,所以这两种对象都是可变的。二、线程安全性String 中的对象是不可变的,也就可以理解为常量,线程安全。StringB原创 2020-07-30 19:26:53 · 195 阅读 · 1 评论 -
剑指offer 面试题25. 合并两个排序的链表 Java三种双百实现代码
面试题25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000双百解法一:迭代法 修改原有链表的指向 推荐!!!!设l1为 1->3->...原创 2020-04-22 00:05:55 · 217 阅读 · 0 评论 -
剑指offer 面试题18. 删除链表的节点 Java实现 Leecode解法 和剑指offer O(1)复杂度解法(改进版) 原理及代码实现
一、先来看Leecode上的题目要求面试题18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2020-04-13 16:14:40 · 209 阅读 · 0 评论